Mysql的索引及优化
一:四种存储引擎:
mysql使用 show engines查询其存储引擎;
功 能 | MYISAM | Memory | InnoDB | Archive |
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
二:
1:Mysql的常用操作及索引操作:http://www.cnblogs.com/whgk/category/916860.html
2:Mysql索引的数据结构和算法原理:http://www.uml.org.cn/sjjm/201107145.asp#nav-2
1、目前大部分的数据库系统和文件系统都采用B-tree或者B+tree的结构作为索引结构。如mysql使用B+树作为索引结构。
2、索引一般是存储在磁盘中的,系统先将索引读到主存,然而通过I/O操作读取磁盘的时间要高几个数量级。
3、磁盘预读:即使只需要一个字节,磁盘也会从该位置开始向后读取一页(通常为4K)的数据放入内存,主存与磁盘间以页为单位进行数据交换。磁盘每次预读的长度一般为页的整数倍。
4、B、B+树一次检索最多需要h-1次I/O,(根节点常驻内存,h为深度);
5、Mysql采用InnoDB引擎,以B+树为索引结构:
特点1:InnoDB的数据文件本身就是索引文件(叶节点包含完整的数据记录),而MyISAM索引与数据文件是分离的。
特点2:InnoDB的附注索引的打他域存储的是相应主键的值,而不是地址。