关系型数据库(索引与锁)

2019-01-03  本文已影响0人  磊_5d71

设计一个关系型数据库

图片.png

索引模块

采用B Tree

B+ Tree

图片.png

优势:
1、B+ 树磁盘读写代价更低(叶子结点有多个值, 不用频繁io读取)
2、B+ 树查询效率更加稳定(从根节点到叶子节点长度固定,时间复杂度o(log n))
3、B+ 树叶子节点有指针链接,更有利于对数据库的扫描

Hash索引

图片.png

BitMap索引

图片.png

密集索引与稀疏索引

区别
1、密集索引文件中每个搜索码值都对应一个索引值
2、稀疏索引只为索引码的某些值建立索引项


图片.png

如何定位并优化慢查询sql

1、根据慢日志定位慢查询sql
2、使用explain等工具分析sql
3、修改sql或者尽量让sql走索引
mysql
show variables like '%quer%';


图片.png

show status like '%slow_queries%';
set global slow_query_log = on;
set global long_query_time = '1';
使用explain select name from person order by name desc;
force index 强制使用某种索引


图片.png

联合索引最左匹配原则

图片.png

锁模块

图片.png
上一篇下一篇

猜你喜欢

热点阅读