LAMP系统MySQL数据库服务器优化技巧:对查询进行优化

运维 系统运维
LAMP系统MySQL数据库服务器优化技巧:有 3 种方法可以加快 MySQL 服务器的运行速度,效率从低到高依次为:替换有问题的硬件、进程的设置调优、对查询进行优化。LAMP系统MySQL数据库服务器优化技巧:对查询进行优化。

LAMP系统MySQL数据库服务器优化技巧:对查询进行优化

  每个会话的设置

  下面这些设置针对于每个会话。在设置这些数字时要十分谨慎,因为它们在乘以可能存在的连接数时候,这些选项表示大量的内存!您可以通过代码修改会话中的这些数字,或者在 my.cnf 中为所有会话修改这些设置。

  当 MySQL 必须要进行排序时,就会在从磁盘上读取数据时分配一个排序缓冲区来存放这些数据行。如果要排序的数据太大,那么数据就必须保存到磁盘上的临时文件中,并再次进行排序。如果 sort_merge_passes 状态变量很大,这就指示了磁盘的活动情况。清单 8 给出了一些与排序相关的状态计数器信息。

  清单 8. 显示排序统计信息

  1. mysql> SHOW STATUS LIKE "sort%";  
  2.  
  3. +-------------------+---------+  
  4.  
  5. | Variable_name | Value |  
  6.  
  7. +-------------------+---------+  
  8.  
  9. | Sort_merge_passes | 1 |  
  10.  
  11. | Sort_range | 79192 |  
  12.  
  13. | Sort_rows | 2066532 |  
  14.  
  15. | Sort_scan | 44006 |  
  16.  
  17. +-------------------+---------+  
  18.  
  19. 4 rows in set (0.00 sec)  
  20.  

  如果 sort_merge_passes 很大,就表示需要注意 sort_buffer_size。例如, sort_buffer_size = 4M 将排序缓冲区设置为 4MB。

  MySQL 也会分配一些内存来读取表。理想情况下,索引提供了足够多的信息,可以只读入所需要的行,但是有时候查询(设计不佳或数据本性使然)需要读取表中大量数据。要理解这种行为,需要知道运行了多少个 SELECT 语句,以及需要读取表中的下一行数据的次数(而不是通过索引直接访问)。实现这种功能的命令如清单 9 所示。

  清单 9. 确定表扫描比率

  1. mysql> SHOW STATUS LIKE "com_select";  
  2.  
  3. +---------------+--------+  
  4.  
  5. | Variable_name | Value |  
  6.  
  7. +---------------+--------+  
  8.  
  9. | Com_select | 318243 |  
  10.  
  11. +---------------+--------+  
  12.  
  13. 1 row in set (0.00 sec)  
  14.  
  15. mysql> SHOW STATUS LIKE "handler_read_rnd_next";  
  16.  
  17. +-----------------------+-----------+  
  18.  
  19. | Variable_name | Value |  
  20.  
  21. +-----------------------+-----------+  
  22.  
  23. | Handler_read_rnd_next | 165959471 |  
  24.  
  25. +-----------------------+-----------+  
  26.  
  27. 1 row in set (0.00 sec)  
  28.  

  Handler_read_rnd_next / Com_select 得出了表扫描比率 —— 在本例中是 521:1。如果该值超过 4000,就应该查看 read_buffer_size,例如 read_buffer_size = 4M。如果这个数字超过了 8M,就应该与开发人员讨论一下对这些查询进行调优了!

【编辑推荐】

Ubuntu下LAMP的配置

Ubuntu10.04下LAMP环境的搭建

LAMP配置MYsql问题-1045

责任编辑:zhaolei 来源: CSDN
相关推荐

2011-03-14 13:51:16

LAMPMySQL

2011-03-11 15:53:02

LAMP优化

2011-03-14 13:51:21

LAMPMySQL

2011-03-14 13:51:21

LAMPMySQL优化

2011-03-11 15:52:59

LAMP优化

2011-03-11 15:52:57

LAMP优化

2010-05-21 09:13:01

MySQL数据库查询

2009-04-15 11:42:34

MySQL优化status

2011-03-11 15:53:00

LAMP优化

2013-01-04 10:00:12

MySQL数据库数据库查询优化

2009-07-06 21:20:34

SQL Server数

2009-05-15 10:11:55

数据库查询查询性能分页浏览

2012-09-04 13:56:48

LinuxMySQL优化

2011-03-09 10:55:33

LAMP优化技巧

2011-03-10 10:09:33

LAMP优化

2022-06-20 05:40:25

数据库MySQL查询

2011-10-24 07:31:37

数据库服务器优化

2018-04-10 14:36:18

数据库MySQL优化技巧

2011-03-03 17:56:52

MySQL数据库优化

2010-08-26 14:39:54

Infobright数
点赞
收藏

51CTO技术栈公众号