Percona 5.5如何定位未使用的索引

78次阅读
没有评论

共计 5668 个字符,预计需要花费 15 分钟才能阅读完成。

这篇文章主要为大家展示了“Percona 5.5 如何定位未使用的索引”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“Percona 5.5 如何定位未使用的索引”这篇文章吧。

打开 userstat 参数,然后让 MySQL 运行一段时间。
之后可以在 INFORMATION_SCHEMA.INDEX_STATISTICS 表中查询到索引的使用频率。

mysql show global variables like %users%

+—————+——-+

| Variable_name | Value |

+—————+——-+

| userstat | OFF |

+—————+——-+

1 row in set (0.00 sec)

mysql select * from information_schema.index_statistics;

Empty set (0.00 sec)

mysql set global userstat=1;

Query OK, 0 rows affected (0.00 sec)

mysql show global variables like %users%

+—————+——-+

| Variable_name | Value |

+—————+——-+

| userstat | ON |

+—————+——-+

1 row in set (0.00 sec)

mysql select * from information_schema.index_statistics;

Empty set (0.00 sec)

mysql explain select * from emp where hiredate 1982-01-01 and deptno = 20;

+—-+————-+——-+——-+—————————+——————+———+——+——+————-+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+—-+————-+——-+——-+—————————+——————+———+——+——+————-+

| 1 | SIMPLE | emp | range | idx_date_sal_job,idx_date | idx_date_sal_job | 4 | NULL | 3 | Using where |

+—-+————-+——-+——-+—————————+——————+———+——+——+————-+

1 row in set (0.00 sec)

mysql select * from information_schema.index_statistics;

Empty set (0.00 sec)

mysql select * from emp where hiredate 1982-01-01 and deptno = 20;

+——-+——-+———+——+———————+——+——+——–+

| empno | ename | job | mgr | hiredate | sal | comm | deptno |

+——-+——-+———+——+———————+——+——+——–+

| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |

| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |

+——-+——-+———+——+———————+——+——+——–+

2 rows in set (0.00 sec)

mysql select * from information_schema.index_statistics;

+————–+————+——————+———–+

| TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |

+————–+————+——————+———–+

| test | emp | idx_date_sal_job | 3 |

+————–+————+——————+———–+

1 row in set (0.04 sec)

mysql select * from emp;

+——-+——–+———–+——+———————+——+——+——–+

| empno | ename | job | mgr | hiredate | sal | comm | deptno |

+——-+——–+———–+——+———————+——+——+——–+

| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | NULL | 20 |

| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 30 |

| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 | 30 |

| 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | NULL | 20 |

| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 | 30 |

| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | NULL | 30 |

| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | NULL | 10 |

| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |

| 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000 | NULL | 10 |

| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 | 30 |

| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |

| 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | NULL | 30 |

| 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | NULL | 20 |

| 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | NULL | 10 |

+——-+——–+———–+——+———————+——+——+——–+

14 rows in set (0.00 sec)

mysql select * from information_schema.index_statistics;

+————–+————+——————+———–+

| TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |

+————–+————+——————+———–+

| test | emp | PRIMARY | 14 |

| test | emp | idx_date_sal_job | 3 |

+————–+————+——————+———–+

2 rows in set (0.00 sec)

mysql select * from emp where hiredate 1982-01-01 and deptno = 20;

+——-+——-+———+——+———————+——+——+——–+

| empno | ename | job | mgr | hiredate | sal | comm | deptno |

+——-+——-+———+——+———————+——+——+——–+

| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |

| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |

+——-+——-+———+——+———————+——+——+——–+

2 rows in set (0.00 sec)

mysql select * from emp;

+——-+——–+———–+——+———————+——+——+——–+

| empno | ename | job | mgr | hiredate | sal | comm | deptno |

+——-+——–+———–+——+———————+——+——+——–+

| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | NULL | 20 |

| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 30 |

| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 | 30 |

| 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | NULL | 20 |

| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 | 30 |

| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | NULL | 30 |

| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | NULL | 10 |

| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000 | NULL | 20 |

| 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000 | NULL | 10 |

| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 | 30 |

| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100 | NULL | 20 |

| 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | NULL | 30 |

| 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | NULL | 20 |

| 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | NULL | 10 |

+——-+——–+———–+——+———————+——+——+——–+

14 rows in set (0.00 sec)

mysql select * from information_schema.index_statistics;

+————–+————+——————+———–+

| TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |

+————–+————+——————+———–+

| test | emp | PRIMARY | 28 |

| test | emp | idx_date_sal_job | 6 |

+————–+————+——————+———–+

2 rows in set (0.00 sec)

以上是“Percona 5.5 如何定位未使用的索引”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计5668字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)