《MySQL 技术内幕》MySQL 体系结构和存储引擎
其他
2020-03-01 10:28:18
阅读次数: 0
定义数据库和实例
- 数据库领域中很容易混淆的两个词
- 数据库
- 实例
- MySQL 数据库由后台线程以及一个共享内存区组成
- 数据库实例才是真正用于操作数据库文件的
- 在 MySQL 数据库中,数据库与实例的关系是一一对应,集群情况下,可能存在一对多的情况
- MySQL 被设计为一个单进程多线程架构的数据库
MySQL 体系结构
- MySQL 体系结构图(摘自 MySQL 官方手册
- 组成部分
- 区别于其他数据库的最重要特定:插件式的表存储引擎
- 存储引擎是基于表,而不是数据库
MySQL 存储引擎
- InnoDB 是 MySQL 数据库 OLTP 应用中使用最广泛的存储引擎
- OLTP:Online Transaction processing 在线事务处理
- InnoDB 存储引擎(默认存储引擎
- 设计主要目标:面向 OLTP 的应用
- 主要特点:行锁设计、支持外键、非锁定读、事务
- 通过多版本并发控制(MVCC)来获得高并发性
- 实现了 SQL 标准的 4 种隔离级别,默认为 REPEATABLE 级别
- 使用 next-key locking 的策略来避免 幻读 现象的产生
- 其他高可用和高性能的功能(插入缓冲、二次写、自适应哈希索引、预读
- 采用聚集(聚簇)的方式存储表中的数据
- 按主键的顺序进行存放
- 若未显式定义,InnoDB 会为每一行生成一个 6 字节的 ROWID,作为主键
- MyISAM 存储引擎
- 不支持事务与行锁,支持表锁、全文索引、压缩索引等
- 主要面向一些 OLAP 数据库应用
- OLAP:Online Analytical Processing
- MyISAM 的缓冲池只缓存索引文件,而不是缓冲数据文件(与其他大多数数据库不同
- 存储引擎表由 MYD 和 MYI 组成
各存储引擎之间的比较
- 不同 MySQL 存储引擎相关特性比较
- 以上展现常用MySQL存储引擎之间的不同之处
- 存储容量的限制
- 事务支持
- 锁的粒度
- MVCC 支持
- 支持的索引
- 备份和复制
- 插入同等大小的数据,InnoDB 占据空间最大,次之 MyISAM(InnoDB、MyISAM、Archive 之间比较
连接 MySQL
- 连接 MySQL 操作:一个连接进程和 MySQL 数据库实例进行通信
- 常用的进程通信方式
- 管道
- 命名管道
- 命名字
- TCP/IP 套接字
- UNIX 域套接字
- TCP/IP
- 该方式是 MySQL 数据库在任何平台下都提供的方式,也是网络中使用最多的
- 在 TCP/IP 连接到 MySQL 实例时,会先检查一张权限视图(权限校验
- 命名管道和共享内存
- Windows平台上,如果两个需要进程通信的进程在同一个服务器上,那么可以使用命名管道
- 配置文件中需要启用
--enable-named-pipe
- MySQL 还提供了共享内存的连接方式
- 配置文件中需要启用
--shared-memory
- 客户端连接时还需要使用
--protocol=memory
- UNIX 域套接字
- 在 Linux 和 UNIX 环境下,还可以使用 UNIX 域套接字
- 只能在 MySQL 客户端 和 数据库实例 在同一台服务器上的情况下才能使用
- 在配置文件中指定套接字文件的路径:
--socket=/tmp/mysql.sock
- 连接命令样例:
mysql -uroot -S /tmp/mysql.stock
小结
- 数据库 与 数据库实例 的区别
- MySQL 体系结构
- MySQL 独有的 插件式存储引擎 的概念
- 常见表存储引擎的特性
发布了98 篇原创文章 ·
获赞 197 ·
访问量 6万+
转载自blog.csdn.net/YangDongChuan1995/article/details/86747764