这篇文章主要为大家详细介绍了MySQL性能优化的实现方法,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
MySQL性能优化
在互联网公司MySQL的使用非常广泛,大家经常会有MySQL性能优化方面的需求。整理了一些在MySQL优化方面的实用技巧。
Schema与数据类型优化
AUTO_INCREMENT
MD5()
、SHA1()
或者UUID()
等产生的字符串)会任意分布在很大的空间内,会导致INSERT
以及一些SELECT
语句变的很慢ALTER TABLE
操作增加一列),建议先拷贝一张与原表结构一样的表,再将数据复制进去,最后通过重命名将新表的表名称修改为原表的表名称。因为在变更表结构的时候很有可能会锁住整个表,并且可能会有长时间的不可用InnoDB索引优化
ORDER BY
子句的顺序完全一致,并且所有列的排序方向(倒序或者正序)都一样时,MySQL才能够使用索引来对结果做排序。有一种情况下ORDER BY
子句可以不满足索引的最左前缀的要求,就是前导列为常量的时候。like
来匹配字符串类型的字段的值时,尽可能的使用前缀匹配like ‘XX%'
,避免使用 like ‘%XX'
OR
条件),建议修改成UNION
的方式,这样方便命中索引EXPLAIN
的Extra
列可以看到“Using index”信息SELECT
、UPDATE
和DELETE
操作速度变慢,同时占用的内存也会比较多WHERE IN
和WHERE BETWEEN AND
的方式来进行范围查询LIMIT
的偏移量越大性能越慢查询性能优化
1.对于低效的查询,通常从两个方面来分析:
2.一般MySQL能够使用以下三种方式应用WHERE条件,从好到坏依次为:
3.MySQL从设计上让连接和断开连接都很轻量级,在返回一个小的查询结果方面很高效。在一个通用服务器上,也能够运行每秒超过10万的查询,一个千兆网卡也能轻松满足每秒超过2000次的查询,MySQL内部每秒能够扫描内存中上百万行数据
4.在删除大量数据时,建议每次删除一小批量数据后,暂停一会儿再做下一次的删除
5.无论如何排序都是一个成本很高的操作,所以从性能角度考虑,应尽可能避免排序或者尽可能避免对大量数据进行排序
6.COUNT()函数有两种不同的作用:它可以统计某个列值的数量,也可以统计行数。最简单的就是通过COUNT(*)来统计行数
7.关联查询的时候要确保关联的字段上有索引
8.在数据量很大并且历史数据需要定期删除的情况下,可以考虑使用分区表
9.如果定了的索引列和分区列不匹配,会导致查询无法进行分区过滤
10.外键约束尽可能避免,通常通过程序来实现,心中要有外键
11.触发器、存储过程、自定义函数等最好不要使用
12.尽可能的利用查询缓存,如果在写查询语句的时候有一些不确定的数据(NOW()或者CURRENT_DATE()等)时,则不会被缓存
13.用多个小表代替一个大表对查询缓存有好处
14.批量写入时只需要做一次缓存失效,所以相比单条写入(每写入一次,缓存就失效)效率更好,对于写密集型的应用,直接禁用查询缓存
15.如果缓存的空间太大,在过期操作的时候可能会导致服务器僵死
以上是个人在工作中的经验总结,如果有描述错误的地方希望大家可以帮忙指出,一起交流学习!
到此这篇关于MySQL性能优化技巧分享的文章就介绍到这了,更多相关MySQL性能优化内容请搜索四海网以前的文章或继续浏览下面的相关文章希望大家以后多多支持四海网!
本文来自:http://www.q1010.com/177/20693-0.html
注:关于MySQL性能优化的实现方法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:优化
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。