mysql知识梳理
Posted code-star
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql知识梳理相关的知识,希望对你有一定的参考价值。
正确的创建合适的索引,是提升数据库查询性能的基础。
第一章:mysql的索引
1.索引的定义
1.1索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。
2.为什么使用索引
2.1 极大的减少存储引擎需要扫描的数据量。
2.2 帮助我们将随机IO变为顺序IO。
2.3 帮助我们在进行分组,排序等的操作时避免使用临时表。
3.索引使用注意事项若干
3.1 需要考虑列的离散性,列的离散性越高,选择性就越好。
3.2 考虑最左匹配原则,对索引中关键字的匹配一定是从左往右依次匹配,且不可跳过。
3.3 创建联合索引是将最常用的列放到前面(最左匹配),选择性高的列优先(最左匹配),宽度小的列优先(最少空间原则)。
4.覆盖索引
4.1 如果查询列可以通过索引的关键字直接返回,则该索引称为覆盖索引。所以我们在查询时应避免使用select * 之类的查询,以提升查询的性能。
第二章:mysql的存储引擎
5.mysql存储引擎的特点
5.1 插拔式的插件方式。
5.2 mysql的存储引擎是在指定的表之上的,即一个数据库的每个表都可以指定单独的存储引擎。
5.3 无论是哪种存储引擎,相同点是都会指定一个.frm表结构定义描述文件。
6.mysql各个存储引擎及其特点
6.1 CSV存储引擎
特点:
1.数据存储以csv文件。不能定义索引。列的定义必须为not null。不能够设置自增列。(不适用于大表或者数据的在线处理。)
2.csv数据的存储用,隔开,可以直接编辑csv文件对数据进行编排。(数据的安全性比较低。)
3.注意:编辑之后要使数据生效,可以使用flush table XXX命令。
应用场景:
1.数据的快速导入导出。
2.表格直接转换成为csv。
6.2 Archive存储引擎
特点:
1.压缩协议进行的数据存储,数据存储为ARZ文件格式。
2.只支持insert和select两种操作,并且只允许自增id建立索引。
3.行级锁,不支持事物,数据占用磁盘少。
应用场景:
1.日志系统
2.大量的设备数据采集。
6.3 Memory存储引擎
特点:
1.数据都是存储在内存中,IO效率要比其他引擎高很多 服务重启数据丢失,内存数据表默认只有16M。
2.支持hash索引,B tree索引,默认hash(查找复杂度0(1))。
3.字段长度都是固定长度varchar(32)=char(32)。
4.不支持大数据存储类型字段如 blog,text。
5.表级锁。
应用场景:
1.等值查找热度较高数据。
2.查询结果内存中的计算,大多数都是采用这种存储引擎 作为临时表存储需计算的数据。
6.4 Myisam
特点:
1.Mysql5.5版本之前的默认存储引擎。较多的系统表也还是使用这个存储引擎。系统临时表也会用到Myisam存储引擎。
2.select count(*) from table 无需进行数据的扫描(在内部做了优化)。
3.数据(MYD)和索引(MYI)分开存储。
4.表级锁,不支持事物。
6.5 Innodb
特点:
1.Mysql5.5及以后版本的默认存储引擎 。
2.行级锁。
3.聚集索引(主键索引)方式进行数据存储。
4.支持外键关系保证数据完整性。
以上是关于mysql知识梳理的主要内容,如果未能解决你的问题,请参考以下文章