当前位置:Gxlcms > 数据库问题 > MySQL 5.7 SYS系统SCHEMA

MySQL 5.7 SYS系统SCHEMA

时间:2021-07-01 10:21:17 帮助过:2人阅读

  1. mysql> SELECT IF(COUNT(*) = 0,‘Not exists!‘,‘Exists!‘) AS ‘result‘ FROM information_schema.tables WHERE table_schema = ‘new_feature‘ AND table_name = ‘t1‘;  
  2. +-------------+  
  3. | result      |  
  4. +-------------+  
  5. Not exists! |  
  6. +-------------+  
  7. 1 row in set (0.00 sec)  



B,乐观的方法,假设表存在,写一个存储过程:
[sql] view plain copy
  1. DELIMITER $$  
  2.   
  3.   
  4. USE `new_feature`$$  
  5.   
  6.   
  7. DROP PROCEDURE IF EXISTS `sp_table_exists`$$  
  8.   
  9.   
  10. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_table_exists`(  
  11.     IN db_name VARCHAR(64),  
  12.     IN tb_name VARCHAR(64),  
  13.     OUT is_exists VARCHAR(60)  
  14.     )  
  15. BEGIN  
  16.       DECLARE no_such_table CONDITION FOR 1146;  
  17.       DECLARE EXIT HANDLER FOR no_such_table  
  18.       BEGIN  
  19.         SET is_exists = ‘Not exists!‘;  
  20.       END;  
  21.         
  22.       SET @stmt = CONCAT(‘select 1 from ‘,db_name,‘.‘,tb_name);  
  23.       PREPARE s1 FROM @stmt;  
  24.       EXECUTE s1;  
  25.       DEALLOCATE PREPARE s1;  
  26.       SET is_exists = ‘Exists!‘;  
  27.     END$$  
  28.   
  29.   
  30. DELIMITER ;  




现在来调用:
[sql] view plain copy
  1. mysql> call sp_table_exists(‘new_feature‘,‘t1‘,@result);  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4.   
  5. mysql> select @result;  
  6. +-------------+  
  7. | @result     |  
  8. +-------------+  
  9. Not exists! |  
  10. +-------------+  
  11. 1 row in set (0.00 sec)  




现在我们直接用sys数据库里面现有的存储过程来进行调用,
[sql] view plain copy
  1. mysql> CALL table_exists(‘new_feature‘,‘t1‘,@v_is_exists);  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4.   
  5. mysql> SELECT IF(@v_is_exists = ‘‘,‘Not exists!‘,@v_is_exists) AS ‘result‘;  
  6. +-------------+  
  7. | result      |  
  8. +-------------+  
  9. Not exists! |  
  10. +-------------+  
  11. 1 row in set (0.00 sec)  




第二,获取没有使用过的索引。


[sql] view plain copy
  1. mysql> SELECT * FROM schema_unused_indexes;  
  2. +---------------+-------------+--------------+  
  3. | object_schema | object_name | index_name   |  
  4. +---------------+-------------+--------------+  
  5. | new_feature   | t1          | idx_log_time |  
  6. | new_feature   | t1          | idx_rank2    |  
  7. +---------------+-------------+--------------+  
  8. rows in set (0.00 sec)  




第三, 检索指定数据库下面的表扫描信息,过滤出执行次数大于10的查询,
[sql] view plain copy
  1. mysql> SELECT * FROM statement_analysis WHERE db=‘new_feature‘ AND full_scan = ‘*‘  AND exec_count > 10\G  
  2. *************************** 1. row ***************************  
  3.             query: SHOW STATUS   
  4.                db: new_feature  
  5.         full_scan: *  
  6.        exec_count: 26  
  7.         err_count: 0  
  8.        warn_count: 0  
  9.     total_latency: 74.68 ms  
  10.       max_latency: 3.86 ms  
  11.       avg_latency: 2.87 ms  
  12.      lock_latency: 4.50 ms  
  13.         rows_sent: 9594  
  14.     rows_sent_avg: 369  
  15.     rows_examined: 9594  
  16. rows_examined_avg: 369  
  17.     rows_affected: 0  
  18. rows_affected_avg: 0  
  19.        tmp_tables: 0  
  20.   tmp_disk_tables: 0  
  21.       rows_sorted: 0  
  22. sort_merge_passes: 0  
  23.            digest: 475fa3ad9d4a846cfa96441050fc9787  
  24.        first_seen: 2015-11-16 10:51:17  
  25.         last_seen: 2015-11-16 11:28:13  
  26. *************************** 2. row ***************************  
  27.             query: SELECT `state` , `round` ( SUM ... uration (summed) in sec` DESC   
  28.                db: new_feature  
  29.         full_scan: *  
  30.        exec_count: 12  
  31.         err_count: 0  
  32.        warn_count: 12  
  33.     total_latency: 16.43 ms  
  34.       max_latency: 2.39 ms  
  35.       avg_latency: 1.37 ms  
  36.      lock_latency: 3.54 ms  
  37.         rows_sent: 140  
  38.     rows_sent_avg: 12  
  39.     rows_examined: 852  
  40. rows_examined_avg: 71  
  41.     rows_affected: 0  
  42. rows_affected_avg: 0  
  43.        tmp_tables: 24  
  44.   tmp_disk_tables: 0  
  45.       rows_sorted: 140  
  46. sort_merge_passes: 0  
  47.            digest: 538e506ee0075e040b076f810ccb5f5c  
  48.        first_seen: 2015-11-16 10:51:17  
  49.         last_seen: 2015-11-16 11:28:13  
  50. rows in set (0.01 sec)  






第四, 同样继续上面的,过滤出有临时表的查询,


[sql] view plain copy
  1. mysql> SELECT * FROM statement_analysis WHERE db=‘new_feature‘ AND tmp_tables > 0 ORDER BY tmp_tables DESC LIMIT 1\G  
  2. *************************** 1. row ***************************  
  3.             query: SELECT `performance_schema` .  ... name` . `SUM_TIMER_WAIT` DESC   
  4.                db: new_feature  
  5.         full_scan: *  
  6.        exec_count: 2  
  7.         err_count: 0  
  8.        warn_count: 0  
  9.     total_latency: 87.96 ms  
  10.       max_latency: 59.50 ms  
  11.       avg_latency: 43.98 ms  
  12.      lock_latency: 548.00 us  
  13.         rows_sent: 101  
  14.     rows_sent_avg: 51  
  15.     rows_examined: 201  
  16. rows_examined_avg: 101  
  17.     rows_affected: 0  
  18. rows_affected_avg: 0  
  19.        tmp_tables: 332  
  20.   tmp_disk_tables: 15  
  21.       rows_sorted: 0  
  22. sort_merge_passes: 0  
  23.            digest: ff9bdfb7cf3f44b2da4c52dcde7a7352  
  24.        first_seen: 2015-11-16 10:24:42  
  25.         last_seen: 2015-11-16 10:24:42  
  26. 1 row in set (0.01 sec)  




可以看到上面查询详细的详细,再也不用执行show status 手工去过滤了。




第五, 检索执行次数排名前五的语句,
[sql] view plain copy
  1. mysql> SELECT statement,total FROM user_summary_by_statement_type WHERE `user`=‘root‘ ORDER BY total DESC LIMIT 5;  
  2. +-------------------+-------+  
  3. | statement         | total |  
  4. +-------------------+-------+  
  5. | jump_if_not       | 17635 |  
  6. | freturn           |  3120 |  
  7. | show_create_table |   289 |  
  8. | Field List        |   202 |  
  9. | set_option        |   190 |  
  10. +-------------------+-------+  
  11. rows in set (0.01 sec)  






示例我就写这么多了,详细的去看使用手册并且自己摸索去吧。   http://blog.csdn.net/yueliangdao0608/article/details/50032851

MySQL 5.7 SYS系统SCHEMA

标签:

人气教程排行