mysqlreport显示Com_中change_db占用比例高的问题的解决方法

时间:2021-12-21 07:49:18

首先说明一点,每天的访问量并不大每天才2W的访问量,按道理说,访问量再增加一倍这样的服务器也应该足以承受。可是我们的服务器为什么总是这样频频重启呢?经过mysqlreport显示mysql运行的状态如下:

  1. MySQL 5.1.28-rc-log   uptime 0 0:4:48    Thu Apr 30 14:04:58 2009 
  2.  
  3. __ Key _________________________________________________________________ 
  4. Buffer used   7.74M of 384.00M %Used:  2.02 
  5.  Current   52.89M      %Usage: 13.77 
  6. Write hit    0.00% 
  7. Read hit    91.97% 
  8.  
  9. __ Questions ___________________________________________________________ 
  10. Total     14.46k  50.2/s 
  11.  DMS      9.24k  32.1/s %Total: 63.90 
  12.  QC Hits    3.66k  12.7/s      25.33 
  13.  Com_     1.04k   3.6/s      7.19 
  14.  COM_QUIT    517   1.8/s      3.58 
  15.  -Unknown     1   0.0/s      0.01 
  16. Slow 1 s      4   0.0/s      0.03 %DMS:  0.04 Log: OFF 
  17. DMS       9.24k  32.1/s      63.90 
  18.  SELECT    9.21k  32.0/s      63.75     99.75 
  19.  UPDATE      23   0.1/s      0.16     0.25 
  20.  REPLACE      0    0/s      0.00     0.00 
  21.  DELETE      0    0/s      0.00     0.00 
  22.  INSERT      0    0/s      0.00     0.00 
  23. Com_      1.04k   50/s      44.4 
  24.  set_option   523   1.8/s      3.62 
  25.  change_db    510   50/s      44.4 
  26.  show_proces    5   0.0/s      0.03 
  27.  
  28. __ SELECT and Sort _____________________________________________________ 
  29. Scan        49   0.2/s %SELECT:  0.53 
  30. Range       16   0.1/s      0.17 
  31. Full join      2   0.0/s      0.02 
  32. Range check     0    0/s      0.00 
  33. Full rng join    0    0/s      0.00 
  34. Sort scan     55   0.2/s 
  35. Sort range    475   1.6/s 
  36. Sort mrg pass    0    0/s 
  37.  
  38. __ Query Cache _________________________________________________________ 
  39. Memory usage  12.02M of 150.00M %Used:  8.01 
  40. Block Fragmnt  0.01% 
  41. Hits      3.66k  12.7/s 
  42. Inserts     9.14k  31.8/s 
  43. Insrt:Prune  9.14k:1  31.8/s 
  44. Hit:Insert   0.40:1 
  45.  
  46. __ Table Locks _________________________________________________________ 
  47. Waited       0    0/s %Total:  0.00 
  48. Immediate   10.49k  36.4/s 
  49.  
  50. __ Tables ______________________________________________________________ 
  51. Open        58 of 512  %Cache: 11.33 
  52. Opened       64   0.2/s 
  53.  
  54. __ Connections _________________________________________________________ 
  55. Max used      4 of 2000   %Max:  0.20 
  56. Total       519   1.8/s 
  57.  
  58. __ Created Temp ________________________________________________________ 
  59. Disk table     1   0.0/s 
  60. Table       184   0.6/s  Size: 256.0M 
  61. File        5   0.0/s 
  62.  
  63. __ Threads _____________________________________________________________ 
  64. Running       2 of  2 
  65. Cached       2 of 150   %Hit: 99.23 
  66. Created       4   0.0/s 
  67. Slow        0    0/s 
  68.  
  69. __ Aborted _____________________________________________________________ 
  70. Clients       0    0/s 
  71. Connects      0    0/s 
  72.  
  73. __ Bytes _______________________________________________________________ 
  74. Sent      20.36M  70.7k/s 
  75. Received    1.37M  4.7k/s 
  76.  
  77. __ InnoDB Buffer Pool __________________________________________________ 
  78. Usage     304.00k of  8.00M %Used:  3.71 
  79. Read hit    84.42% 
  80. Pages 
  81.  Free      493      %Total: 96.29 
  82.  Data       19           3.71 %Drty:  0.00 
  83.  Misc       0           0.00 
  84.  Latched                 0.00 
  85. Reads       77   0.3/s 
  86.  From file    12   0.0/s      15.58 
  87.  Ahead Rnd     1   0.0/s 
  88.  Ahead Sql     0    0/s 
  89. Writes       0    0/s 
  90. Flushes       0    0/s 
  91. Wait Free      0    0/s 
  92.  
  93. __ InnoDB Lock _________________________________________________________ 
  94. Waits        0    0/s 
  95. Current       0 
  96. Time acquiring 
  97.  Total       0 ms 
  98.  Average      0 ms 
  99.  Max        0 ms 
  100.  
  101. __ InnoDB Data, Pages, Rows ____________________________________________ 
  102. Data 
  103.  Reads      25   0.1/s 
  104.  Writes      3   0.0/s 
  105.  fsync       3   0.0/s 
  106.  Pending 
  107.   Reads      0 
  108.   Writes     0 
  109.   fsync      0 
  110.  
  111. Pages 
  112.  Created      0    0/s 
  113.  Read       19   0.1/s 
  114.  Written      0    0/s 
  115.  
  116. Rows 
  117.  Deleted      0    0/s 
  118.  Inserted     0    0/s 
  119.  Read       0    0/s 
  120.  Updated      0    0/s 

大家可以看到在Com_中占的比例是相当大的,而一般情况下,这个值应该是3.0%左右。如果这个值过高的话,就说明,你的mysql处理请求中

做了一些无谓的工作,占用了大量的系统资源。其中我们看到尤为change_db的占用率比较高。这个值高了,说明我们执行的user database;命令相当多。

检查程序,原来我们在执行查询语句的时候应用了mysql_query_db("database","sql");这个语句在每次执行的时候都会自动调用use database;

所以我们应该将mysql_db_query 更改成mysql_query();再观察mysql的运行状态,ok。一切正常了。