时间:2021-05-23
概述
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
mysql中支持hash和btree索引。innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引
1、查看当前索引使用情况
我们可以通过下面语句查询当前索引使用情况:
其实比较多应用场景是当索引正在工作,Handler_read_key的值将很高,这个值代表了一个行将索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。
Handler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果正进行大量的表 扫描,Handler_read_rnd_next的值较高,则通常说明表索引不正确或写入的查询没有利用索引
2、查看索引是否被使用到
如果read,fetch的次数都为0的话,就是没有被使用过的。
3、查看使用了哪些索引
explain相关sql,查看type表示查询用到了那种索引类型
+-----+-------+-------+-----+--------+-------+---------+-------+| ALL | index | range | ref | eq_ref | const | system | NULL |+-----+-------+-------+-----+--------+-------+---------+-------+从最好到最差依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL顺便提几个优化注意点:
1、优化insert语句:
1)尽量采用 insert into test values(),(),(),()...
2)如果从不同客户插入多行,能通过使用insert delayed语句得到更高的速度,delayed含义是让insert语句马上执行,其实数据都被放在内存队列中个,并没有真正写入磁盘,这比每条语句分别插入快的多;low_priority刚好相反,在所有其他用户对表的读写完后才进行插入。
3)将索引文件和数据文件分在不同磁盘上存放(利用建表语句)
4)如果进行批量插入,可以增加bulk_insert_buffer_size变量值方法来提高速度,但是只对MyISAM表使用
5)当从一个文本文件装载一个表时,使用load data file,通常比使用insert快20倍
2、优化group by语句:
默认情况下,mysql会对所有group by字段进行排序,这与order by类似。如果查询包括group by但用户想要避免排序结果的消耗,则可以指定order by null禁止排序。
3、优化order by语句:
某些情况下,mysql可以使用一个索引满足order by字句,因而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引的顺序相同,并且order by的字段都是升序或者降序。
4、优化嵌套查询:
mysql4.1开始支持子查询,但是某些情况下,子查询可以被更有效率的join替代,尤其是join的被动表待带有索引的时候,原因是mysql不需要再内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作。
最后提一个点:
一个表最多16个索引,最大索引长度256字节,索引一般不明显影响插入性能(大量小数据例外),因为建立索引的时间开销是O(1)或者O(logN)。不过太多索引也是不好的,毕竟更新之类的操作都需要去维护索引。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Linux-dash是一款为Linux设计的基于web的轻量级监控面板。这个程序会实时显示各种不同的系统属性,比如CPU负载、RAM使用率、磁盘使用率、网速、网
本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下脚本功能:1、监控CPU使用率2、监控内存使用状况3、监控网络流量具体代
Oracle表空间监控核心数据库10.100.0.20和21表空间已经修改完成,可以正常监控使用率和大小,并邮件告警通知。修改Oracle数据库表空间监控创建表
VBScript通过WMI获取CPU使用率的代码度娘中,搜索关键词“WMICPU使用率”,得到的全是《python使用WMI监视系统-CPU使用率》,不用看,肯
支持监控以下硬件温度:主板和CPU温度NvidiaGPU温度实验性ATI/AMDGPUs温度监控,UbuntuPPA中未启用。硬盘温度风扇转速CPU使用率效果图