标签:复杂 允许 http 次数 inno 系统 基本 myisam lock
总结一些自己的理解,作为备忘。
先说说索引吧。数据库需要完成数据的存储、查找、修改等操作。
MySQL默认一个数据页大小是16KB(可以改为32KB等大小),而操作系统一个数据页(段页式)是4KB,MySQL放大四倍的目的在于尽量减少磁盘IO(用户检索范围查询比较多,而一次IO过程中,一页或两页的时间代价接近,约小于10ms),参照局部性预读原理。
这是数据库的核心功能之一,经常在面试中遇到。
在学习数据结构时,常用三种数据结构:顺序数组、哈希表、二叉树,如下图所示:
分析一下B+树的性质:
- IO次数取决于树的层高H,假设当前表的数据总量是N,数据块大小是M,则H=log(M+1)*N。在常规场景下,假设N不变,数据块越大,树的层高越低,MySQL中层高一般是4左右。
- 最左前缀匹配原则。这是非常重要的性质,尤其在组合索引的使用。
在这两大类的索引类型下,还可以将索引分成四个小类:
1,普通索引:最基本的索引,没有任何限制,是我们大多数情况下使用到的索引。
2,唯一索引:与普通索引类型,不同的是唯一索引的列值必须唯一,但允许为空值。
3,全文索引:全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。
4,组合索引:将几个列作为一条索引进行检索,使用最左匹配原则。
标签:复杂 允许 http 次数 inno 系统 基本 myisam lock
原文地址:https://www.cnblogs.com/yishanchuan/p/13371755.html