MySQL性能优化

原文基本来自《MySQL 5.7 从入门到精通》第16章
MySQL性能优化包括查询速度优化、数据库结构优化、MySQL服务器优化等。
原则:减少系统的瓶颈,减少资源的占用,增加系统的反应速度。

优化查询

使用索引查询

  • 使用like关键字的查询语句

只有”%”不在第一个位置,索引才会起作用。

  • 使用多列索引的查询语句

对于多列索引,只有查询条件使用了这些字段的第1个字段时,索引才会被使用。

  • 使用OR关键字的查询语句

查询语句的查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,查询中才使用索引。否则,查询将不使用索引。

优化子查询

使用连接(JOIN)查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快,如果查询中使用索引的话,性能会更好。连接之所以更有效率,是因为MySQL不需要在内存中创建临时表来完成查询工作。

优化数据库结构

将字段很多的表分解成多个表

对于字段很多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段存在而变慢。

使用中间表

对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。

增加冗余字段

合理加入冗余字段可以提高查询速度。

优化插入记录的速度

MyISAM

  • 禁用索引
  • 禁用唯一性检查
  • 使用批量插入
  • 使用LOAD DATA INFILE批量导入

InnoDB

  • 禁用唯一性检查
  • 禁用外键检查
  • 禁止自动提交

优化MySQL服务器

优化服务器硬件

  • 配置较大内存
  • 配置高速磁盘,以减少读盘的等待时间,提高响应速度。
  • 合理分布磁盘I/O,把磁盘I/O分散在多个设备上,以减少资源竞争,提高并行操作能力
  • 配置多处理器,MySQL是多线程的数据库,多处理器可同时执行多个线程。

优化MySQL参数

  • key_buffer_size
  • table_cache
  • query_cache_size
  • sort_buffer_size
  • read_buffer_size
  • read_rnd_buffer_size
  • innodb_buffer_pool_size
  • max_connections
  • innodb_flush_log_at_trx_commit
  • back_log
  • interactive_timeout
  • sort_buffer_size
  • thread_cache_size
  • wait_timeout

你可能感兴趣的:(MySQL性能优化)