一:总结mysql常见的存储引擎以及特点。
1: MyISAM引擎
不支持事务
表级锁
读写相互阻塞,写入不能读,读是不能写
不支持外键约束
不支持聚簇索引
读取数据较快,占用资源较少
奔溃恢复性差
使用场景:
只读(或者写较少)
表较小(可以接受长时间进行修复操作)
MyISAM引擎文件:
tbl_name.frm:表格式定义
tbl_name.MYD:数据文件
tbl_name.MYI:索引文件
2:InnoDB引擎
特点:
行级锁
支持事务,适合处理大量短周期事务
读写阻塞与事务隔离级别有关
可缓存数据和索引
支持聚簇索引
奔溃恢复性更好
支持MVCC高并发
从mysql5.5开始支持全文索引
从mysql5.5.5开始为默认的数据库索引
Innodb数据库文件
1)所有Innodb表的数据和索引放置于同一个表空间中:
数据文件:idbdata1,idbdata2,存放于datadir定义的目录下
表格式定义:tb_name.frm,存放datadir定义的每个数据库对应的目录下
2)每个表单独使用一个表空间储存表的数据和索引:
两类文件存每个数据库对应目录中
数据文件(储存数据和索引):tb_name.ibd
表格式定义:tb_name.frm
2. index索引
2.1 索引是什么
是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为key,索引通过储存引擎实现
优点:
- 索引可以降低服务需要扫描的数据量,减少IO次数
2)索引可以帮助服务器避免排序和使用临时表
3)索引可以帮助将随机I/O转为顺序IO
缺点:
1)占用额外空间,影响插入速度
2.2 索引的分类
2.2.1 (根据储存结构划分)
B-Tree, HASH,R-Tree, full text
2.2.2 从应用层次划分
普通索引: