MySQL 性能调优 篇(三)

MySQL调优

硬件

从硬件层面上考虑,影响 MySQL 性能因素,包括 磁盘读写速度,网络带宽,内存大小。

软件

MySQL的性能优化主要分为以下四个方面

  • 设计: 存储引擎、字段类型、索引
  • 功能:缓存、分库分表、数据库连接池
  • 架构上: 读写分离、集群、均衡负载
  • 合理的SQL: 测试、优化查询语句、Explain查询执行计划、慢日志

1.根据创建联合索引的顺序,按照最左前缀匹配原则进行条件查找。考虑实际的情况,将查询频繁查询的放在前边创建索引。解释:现在有abc,这三个字段的联合索引(索引树),如果c查找的频率高一点相较于ab,那么遵循最左前缀原则的情况下走索引的顺序是a->b->c。如果是cab,按照这个顺序创建的索引,那么就第一次查询就直接命中了。减少查询次数。

字段设计要尽可能的小(数据页默认大小是16kb,字段大,每页存储的数据量也就小了,来回的翻页也耗费时间),尽可能使用整数

索引设计

有无使用覆盖索引

索引字段太长:会增加内存数据页,来回的翻页对性能有损耗 (前缀索引)

如果对于写多读少的数据,能使用普通索引就不使用唯一索引 ,因为唯一索引不能利用数据页不在内存的时候直接写 changeBuffer 这个特性。

如果有联合索引的设计,那么可以考虑把查的多的字段放到靠前的位置,因为联合索引是一个字段一个字段的来找的。

当插入数据非常频繁的时候,可以先禁用索引,等插入完成之后在重构索引或是定时重构索引。

SQL 语句的书写

尽量不要在索引字段上使用函数,因为就不会走索引了,不知道往哪个方向走

尽量避免隐式类型转换带来的问题,这其实也是相当于使用函数了

在使用count()函数的时候,尽量用count(*****)或者 count(1),因为这两个都是不从InnoDB存储引擎中取得值的。并且 count(*) 的性能要优于 count(1);

猜你喜欢

转载自blog.csdn.net/qq_45881167/article/details/130299220
今日推荐