Mysql技术内幕-第一章

1. 定义数据库和实例
概念
数据库**: **操作系统或者是内存中数据库类型文件的集合。
实例: 数据库实例是真正操作数据库的对象。通过数据库实例完成对数据库文件的增删改查。
MySQL 是一个单进程多线程的数据库。MySQL 数据库实例在系统上表现的就是一个进程。
2. MySQL 体系结构
1. 结构图

2. MySQL 组成部分
1. 8 大组成部分
- 连接池
- 管理服务和工具组件
- Sql 接口组件
- 查询分析器
- 优化器
- 缓存
- 插件式存储引擎
- 物理文件
存储引擎是基于表的,而不是数据库。
3. MySQL 存储引擎
1. InnoDB 存储引擎(最常用的 5.5.8 后默认存储引擎)
1. 特点
- 行锁设计
- 支持外键
- 类似于 Oracle 的非锁定读
2. 主要功能
- InnoDB 使用多版本并发控制(MVCC)来实现高并发性。
- 实现了 4 种隔离级别。默认的为 REPEATABLE 级别
- 使用next-key locking 策略来避免幻读现象
- 提供了插入缓冲(insert buffer)、二次写、自适应哈希索引、预读等高性能和高可用功能
- 数据的存储的采用了聚集的方式,表的数据存储按主键的顺序存放。如果没有主键会默认每行生成一个 ROWID 作为主键。
3. 面向对象
设计目标主要面向在线事务处理应用。
2. MyISAM 存储引擎(5.58 之前默认存储引擎)
1. 特点
- 不支持事务、表锁/行锁
- 支持全文索引
- 缓冲池只缓存索引文件,不缓存数据。
- MyISAM 存储引擎表的由 MYD 和 MYI 两种文件存储。MYD 存储数据,MYI 存储索引。
3. NDB 存储引擎(集群存储引擎)
1. 特点
- 数据全部放在内存中,5.1 后,可将非索引数据存放到磁盘上。
- 主键查找速度极快
- 通过增加 NDB 数据存储节点,可以线性提高数据性能。是高可用、高性能集群系统
- 查询速度慢。由于 NDB 存储引擎连接操作在数据库层完成,导致需要巨大网络开销。
4. Memory 存储引擎
1. 特点
- 数据存放在内存中
- 默认使用哈希索引
- 只支持表锁,并发性能差
- 不支持 TEXT 和 BLOBl 乐行
- 浪费内存,存储 varchar 是按照 char 的方式存储。
5. 存储引擎的比较

4. 连接 MySQL
本质: MySQL 实例和连接进程的进行通信。
进程间的通信方式:TCP/IP 套接字,UNIX 域套接字、管道、命名管道。
1. TCP/IP(常用)

客户端通过向 MySQL 服务器发送 TCP/IP 连接请求,连接成功后。MySQL 数据库会查权限视图,判断用户的客户端 IP 是否连接到 MySQL 实例。
5. 小结
- 介绍了实例和数据库的区别。实例是操作数据库的对象,数据库是所有数据库类型文件的集合
- MySQL 的体系结构和其中的组件
- 连接池
- 管理服务和工具组件
- Sql 接口
- 查询和分析器
- 优化器
- 缓存
- 插件式存储引擎
- 物理文件
- MySQL 主流的存储引擎及其特点
- InnoDB 支持行锁、事务\外键
- MyISAM 不支持行表锁、事务。支持全文索引
- Memory 支持哈希索引、表锁、不支持 BLOB、TEXT 类型。varchar 定长.
- NDB 数据存放在内存中
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 无♥部落阁!
评论





