Percona 5.5定位未使用的索引

feelpurple發表於2018-02-05
開啟userstat引數,然後讓MySQL執行一段時間。
之後可以在INFORMATION_SCHEMA.INDEX_STATISTICS表中查詢到索引的使用頻率。

  1. mysql> show global variables like '%users%';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | userstat | OFF |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)

  8. mysql> select * from information_schema.index_statistics;
  9. Empty set (0.00 sec)

  10. mysql> set global userstat=1;
  11. Query OK, 0 rows affected (0.00 sec)

  12. mysql> show global variables like '%users%';
  13. +---------------+-------+
  14. | Variable_name | Value |
  15. +---------------+-------+
  16. | userstat | ON |
  17. +---------------+-------+
  18. 1 row in set (0.00 sec)

  19. mysql> select * from information_schema.index_statistics;
  20. Empty set (0.00 sec)

  21. mysql> explain select * from emp where hiredate > '1982-01-01' and deptno = 20;
  22. +----+-------------+-------+-------+---------------------------+------------------+---------+------+------+-------------+
  23. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  24. +----+-------------+-------+-------+---------------------------+------------------+---------+------+------+-------------+
  25. | 1 | SIMPLE | emp | range | idx_date_sal_job,idx_date | idx_date_sal_job | 4 | NULL | 3 | Using where |
  26. +----+-------------+-------+-------+---------------------------+------------------+---------+------+------+-------------+
  27. 1 row in set (0.00 sec)

  28. mysql> select * from information_schema.index_statistics;
  29. Empty set (0.00 sec)

  30. mysql> select * from emp where hiredate > '1982-01-01' and deptno = 20;
  31. +-------+-------+---------+------+---------------------+------+------+--------+
  32. | empno | ename | job | mgr | hiredate | sal | comm | deptno |
  33. +-------+-------+---------+------+---------------------+------+------+--------+
  34. | 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |
  35. | 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |
  36. +-------+-------+---------+------+---------------------+------+------+--------+
  37. 2 rows in set (0.00 sec)

  38. mysql> select * from information_schema.index_statistics;
  39. +--------------+------------+------------------+-----------+
  40. | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |
  41. +--------------+------------+------------------+-----------+
  42. | test | emp | idx_date_sal_job | 3 |
  43. +--------------+------------+------------------+-----------+
  44. 1 row in set (0.04 sec)

  45. mysql> select * from emp;
  46. +-------+--------+-----------+------+---------------------+------+------+--------+
  47. | empno | ename | job | mgr | hiredate | sal | comm | deptno |
  48. +-------+--------+-----------+------+---------------------+------+------+--------+
  49. | 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | NULL | 20 |
  50. | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 30 |
  51. | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 | 30 |
  52. | 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | NULL | 20 |
  53. | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 | 30 |
  54. | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | NULL | 30 |
  55. | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | NULL | 10 |
  56. | 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |
  57. | 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000 | NULL | 10 |
  58. | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 | 30 |
  59. | 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |
  60. | 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | NULL | 30 |
  61. | 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | NULL | 20 |
  62. | 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | NULL | 10 |
  63. +-------+--------+-----------+------+---------------------+------+------+--------+
  64. 14 rows in set (0.00 sec)

  65. mysql> select * from information_schema.index_statistics;
  66. +--------------+------------+------------------+-----------+
  67. | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |
  68. +--------------+------------+------------------+-----------+
  69. | test | emp | PRIMARY | 14 |
  70. | test | emp | idx_date_sal_job | 3 |
  71. +--------------+------------+------------------+-----------+
  72. 2 rows in set (0.00 sec)

  73. mysql> select * from emp where hiredate > '1982-01-01' and deptno = 20;
  74. +-------+-------+---------+------+---------------------+------+------+--------+
  75. | empno | ename | job | mgr | hiredate | sal | comm | deptno |
  76. +-------+-------+---------+------+---------------------+------+------+--------+
  77. | 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |
  78. | 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |
  79. +-------+-------+---------+------+---------------------+------+------+--------+
  80. 2 rows in set (0.00 sec)

  81. mysql> select * from emp;
  82. +-------+--------+-----------+------+---------------------+------+------+--------+
  83. | empno | ename | job | mgr | hiredate | sal | comm | deptno |
  84. +-------+--------+-----------+------+---------------------+------+------+--------+
  85. | 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | NULL | 20 |
  86. | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 30 |
  87. | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 | 30 |
  88. | 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | NULL | 20 |
  89. | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 | 30 |
  90. | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | NULL | 30 |
  91. | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | NULL | 10 |
  92. | 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |
  93. | 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000 | NULL | 10 |
  94. | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 | 30 |
  95. | 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |
  96. | 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | NULL | 30 |
  97. | 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | NULL | 20 |
  98. | 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | NULL | 10 |
  99. +-------+--------+-----------+------+---------------------+------+------+--------+
  100. 14 rows in set (0.00 sec)

  101. mysql> select * from information_schema.index_statistics;
  102. +--------------+------------+------------------+-----------+
  103. | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |
  104. +--------------+------------+------------------+-----------+
  105. | test | emp | PRIMARY | 28 |
  106. | test | emp | idx_date_sal_job | 6 |
  107. +--------------+------------+------------------+-----------+
  108. 2 rows in set (0.00 sec)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2150859/,如需轉載,請註明出處,否則將追究法律責任。

相關文章