存储引擎
- innodb
支持事务;行锁;MVCC获取高并发性;聚簇索引; - myisam
不支持事务;表锁;支持全文索引;数据、索引文件分离,数据文件压缩; - ndb
集群存储引擎 - memory
数据放内存,适合存储临时数据。
哈希索引
表锁 - archive
只支持insert 和 select操作。 zlib算法压缩数据行,比例1:10。适合存储归档数据,如日志信息。 行锁,不是事务安全的。
设计目标:提供高速的插入和压缩功能。 - maria
下一代myisam
MySQL中myisam和innodb的主键索引有什么区别?
主要区别是myisam 索引和数据分离,而innodb 叶子节点存储数据。
参考资料:
https://www.cnblogs.com/olinux/p/5217186.html
B- 树和 B+ 树有什么区别?
B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于
走右结点;
B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键
字范围的子结点;
所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;
B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点
中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;
B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率
从1/2提高到2/3;
参考资料:
https://blog.youkuaiyun.com/qq_23217629/article/details/52510485
https://www.jianshu.com/p/332caf8bed3a
INNODB概述
各版本之间的比较
老版本的INNODB: 支持ACID,行锁设计, MVCC
INNODB1.0x 继承了上述版本的所有功能,增加了compress和dynamic页格式
INNODB1.1x 继承了上述版本的所有功能,增加了linux AIO,多回滚段
INNODB 1.2x 继承了上述版本的所有功能,增加了全文索引支持,在线索引添加
后台线程
- Master Thread
- IO Thread
show variables like ‘innodb_version’\G;
show variables like 'innodb_%io_threads'\G;
*************************** 1. row ***************************
Variable_name: innodb_read_io_threads
Value: 4
*************************** 2. row ***************************
Variable_name: innodb_write_io_threads
Value: 4
2 rows in set (0.00 sec)
select version()\g;
+------------+
| version() |
+------------+
| 5.6.34-log |
+------------+
1 row in set (0.00 sec)
- Purge Thread
事务提交后,其所使用的undolog可能不再需要,PurgeThread来回收已经使用并分配的undo页。
show variables like 'innodb_purge_threads'\G;
*************************** 1. row ***************************
Variable_name: innodb_purge_threads
Value: 1
1 row in set (0.00 sec)
- Page Cleaner Thread
1.2.x 版本引入的。
脏页刷新操作 独立到单独线程来完成。
关键特性
- 插入缓冲 Insert Buffer (性能提升,不是直接写,快速写再做merge)
- 使用条件:
(1) 索引是辅助索引
(2) 索引不是唯一的 - 是一颗B+树,使用共享表空间
- 使用条件:
- 两次写 double write(数据页的可靠性)
mysql> show global status like 'innodb_dblwr%'\G;
*************************** 1. row ***************************
Variable_name: Innodb_dblwr_pages_written
Value: 5988832213
*************************** 2. row ***************************
Variable_name: Innodb_dblwr_writes
Value: 419773534
2 rows in set (0.00 sec)
- 自适应哈希索引
- 异步io
show variables like 'innodb_use_native_aio'\G;
*************************** 1. row ***************************
Variable_name: innodb_use_native_aio
Value: ON
1 row in set (0.00 sec)
- 刷新邻接页
参考资料
《MySQL 技术内幕 --innodb存储引擎》