做应用开发的童鞋,关系数据库RDB肯定接触不少,天天闹腾SQL,本文主要以InnoDB和Oracle举例,来张图:
就是这张经典的图,把RDB的主要组件都描述出来了:
查询编译器,把SQL语言,经过语法树、关系代数、查询优化到物理流水,其中就有代价估算、连接顺序等,别说你不知道查询计划;
事务管理器,处理请求并发、日志记录,悲观的-锁,InnoDB的行锁(索引实现)、意向锁,还有基于时间戳的、基于版本号的乐观并发控制;redo日志、undo日志(读不阻塞写,MVCC),日志在数据之前写入等;