MySQL数据库性能优化

文章目录

  • 1.查看每个客户端IP过来的连接消耗了多少资源。
  • 2.查看某个数据文件上发生了多少IO请求。
  • 3.查看每个用户消耗了多少资源。
  • 4.查看总共分配了多少内存。
  • 5.数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的?
  • 6.查看当前正在执行的SQL和执行show full processlist的效果相当。
  • 7.数据库中哪些SQL被频繁执行?
  • 8.哪个文件产生了最多的IO,读多,还是写的多?
  • 9.哪个表上的IO请求最多?
  • 10.哪个表被访问的最多?
  • 11.哪些SQL执行了全表扫描,如果没有使用索引,则考虑为大型表添加索引
  • 12.列出所有做过排序的规范化语句
  • 13.哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表?
  • 14.列出所有使用临时表的语句——访问最高的磁盘临时表,然后访问内存临时表
  • 15.哪个表占用了最多的buffer pool?
  • 16.每个库(database)占用多少buffer pool?
  • 17.查看表占用空间的大小



1.查看每个客户端IP过来的连接消耗了多少资源。

mysql> select * from sys.x$host_summary;

2.查看某个数据文件上发生了多少IO请求。

mysql> select * from sys.x$io_global_by_file_by_bytes;

3.查看每个用户消耗了多少资源。

mysql> select * from sys.x$user_summary;

4.查看总共分配了多少内存。

mysql> select * from sys.x$memory_global_total;

5.数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的?

查看当前连接情况
mysql> select host, current_connections, statements from sys.x$host_summary;

6.查看当前正在执行的SQL和执行show full processlist的效果相当。

mysql> select conn_id, user, current_statement, last_statement from sys.x$session;

7.数据库中哪些SQL被频繁执行?

执行下面命令查询TOP10 SQL。 
mysql> select db,exec_count,query from sys.x$statement_analysis order by exec_count desc limit 10;

8.哪个文件产生了最多的IO,读多,还是写的多?

mysql> select * from sys.x$io_global_by_file_by_bytes limit 10;

9.哪个表上的IO请求最多?

mysql> select * from sys.x$io_global_by_file_by_bytes where file like "%ibd" order by total desc limit 10;

10.哪个表被访问的最多?

先访问statement_analysis,根据热门SQL排序找到相应的数据表。 
哪些语句延迟比较严重? 
查看statement_analysis中avg_latency的最高的SQL。 
mysql> select * from sys.x$statement_analysis order by avg_latency desc limit 10;

11.哪些SQL执行了全表扫描,如果没有使用索引,则考虑为大型表添加索引

mysql> select * from sys.x$statements_with_full_table_scans;

12.列出所有做过排序的规范化语句

mysql> select * from sys.x$statements_with_sorting

13.哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表?

查看statement_analysis中哪个SQL的tmp_tables 、tmp_disk_tables值大于0即可。 
mysql> select db, query, tmp_tables, tmp_disk_tables from sys.x$statement_analysis where tmp_tables>0 or tmp_disk_tables >0 order by (tmp_tables+tmp_disk_tables) desc limit 20;

14.列出所有使用临时表的语句——访问最高的磁盘临时表,然后访问内存临时表

mysql>select * from sys.statements_with_temp_tables

15.哪个表占用了最多的buffer pool?

mysql> select * from sys.x$innodb_buffer_stats_by_table order by allocated desc limit 10;

16.每个库(database)占用多少buffer pool?

mysql> select * from sys.x$innodb_buffer_stats_by_schema order by allocated desc limit 10;

17.查看表占用空间的大小

select table_name,TABLE_COMMENT,CONCAT(TRUNCATE(data_length / 1024 / 1024/1024, 4),\"GB\") AS data_size,table_rows from information_schema.tables where table_schema="dbname"

你可能感兴趣的:(数据库应用,性能优化,mysql,数据库)