《MySQL技术内幕 InnoDB存储引擎》读书笔记
1.1 数据库和实例
- 数据库:物理操作系统下的文件或其他形式文件(如内存)类型的集合
- 实例:MySQL数据库程序运行时的一个线程,用于操作数据库文件
1.2 MySQL体系结构
结构图 摘自互联网自上而下,从左到右介绍:
- Connectors: 不同语言连接MySQL,如Java的mysql-connector-java 驱动
- Enterprise Management Services: 管理服务或工具组件
- ConnectionPool: 连接池,维护数据库连接状态
- SQL interface: 数据库操作接口
- Parser: 查询分析器
- Optimizer: 优化器组件
- Caches & Buffers: 缓冲组件
- Pluggable Storage Engines: 插件式存储引擎
- File System: 物理文件
1.3 MySQL存储引擎
存储引擎能够根据具体的应用建立不同存储引擎表。
下面是对一些存储引擎简单介绍:
1.3.1 InnoDB
- 支持 事务,其特点是 行锁设计、支持外键
- 支持全文索引
- 支持 非锁定读,即默认读取操作不会产生锁
- 高并发,高性能,高可用,高可拓展
- 采用了聚集的方式,每张表都是按主键的顺序进行存放,如果没有显式的指定主键,它会为表的每一行生成一个6字节的ROWID作为主键
1.3.2 MyISAM
- 不支持事务、表锁设计
- 支持全文索引
- 缓冲池只缓冲索引文件,不缓冲数据文件
- 存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件
1.3.3 NDB
- 是一个集群存储引擎,结构是share nothing的集群架构,具备更高的可用性
- 数据全部存放在内存中,可以将非索引数据存放在磁盘上
- 主键查找快
- 不适合连接操作(Join)。ps: MySQL数据库层完成,而不是存储索引层,复杂的连接需要巨大的网络开销,因此查询速度很慢。
1.3.4 Memory
- 数据存放在内存中,断电后消失,查询速度快,适合存储临时数据
- 默认使用哈希索引
- 只支持表锁,并发性能差
- varchar类型是按照定常字段(char)的方式存储,会浪费内存
网友评论