Mysql架构:
- bin log:存在于mysql的server层,用与mysql的主从复制
1.索引数据结构:
- 二叉树:
- 红黑树:大数据范围树的高度不可控
- Hash表:对索引进行一次hash运算就能得到数据的磁盘文件指针,不支持范围查找
- B-Tree:节点大小16k
举例:max.dgree=4
-
B+Tree:
-
- 1、节点大小16k,每个非叶节点1170元素
- 2、树高不会超过4,一般是3,3层满两千多万行数据
- 3、B+树每个索引和叶子数据都有指针,而且最下层叶子节点内和节点之间的数据是从大到 小依次排列的,这样就可以快速实现范围查找。
2.数据库存储引擎(作用于表级别):
MyISAM:(非聚集索引)
- 只支持表锁、不支持外键、不支持事务、进行count(*)时查询快的前提是在语句中不加入条件描述,不然依旧是全局扫描才能得到。
- frm文件:定义的表结构,表信息文件
- MYD文件:存储数据行
- MYI文件:存储索引,数据结构为b+树
- 过程:首先在MYI文件中根据数据结构找到目标值,目标值是索引“key”和磁盘文件指针“value”,然后通过磁盘文件指针在磁盘中的MYD文件中找到数据返回。
InnoDB:
- 既支持表锁也支持行锁、支持外键、支持事务
- 依附有Redo log和Undo log
- frm文件:定义的表结构,表信息文件
- ibd文件:存储数据行和索引,数据结构为b+树
- 聚集索引:叶节点包含了完整的数据记录和索引
- 为什么InnoDB表必须有整型自增主键(默认建立自增隐藏主键):主键索引用来根据B+树存储数据,整形数据进行比较大小时很快,节约存储空间,利于查找修改;自增主键能够避免树的分裂,由于B+树的结构,叶节点的数据是从左往后增加的,自增就可以直接在后面添加数据,效率高。
联合索引:先比较相同字段,在第一个字段相同的情况下,进行第二个字段的比较。,依次往下。