0

0

MySQL5.7SYS系统SCHEMA_MySQL

PHP中文网

PHP中文网

发布时间:2016-05-27 13:46:38

|

1270人浏览过

|

来源于php中文网

原创

在说明系统数据库之前,先来看下mysql在数据字典方面的演变历史:
mysql4.1 提供了information_schema 数据字典。从此可以很简单的用sql语句来检索需要的系统元数据了。
mysql5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。
mysql5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。

sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。 现在呢,我就示范下几种场景下如何快速的使用。

第一,
比如之前想要知道某个表是否存在与否,可以用以下两种方法:

a, 悲观的方法,写sql从information_schema中拿信息:

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

B,乐观的方法,假设表存在,写一个存储过程:

DELIMITER $$
USE `new_feature`$$


DROP PROCEDURE IF EXISTS `sp_table_exists`$$


CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_table_exists`(
    IN db_name VARCHAR(64),
    IN tb_name VARCHAR(64),
    OUT is_exists VARCHAR(60)
    )
BEGIN
      DECLARE no_such_table CONDITION FOR 1146;
      DECLARE EXIT HANDLER FOR no_such_table
      BEGIN
        SET is_exists = 'Not exists!';
      END;
      
      SET @stmt = CONCAT('select 1 from ',db_name,'.',tb_name);
      PREPARE s1 FROM @stmt;
      EXECUTE s1;
      DEALLOCATE PREPARE s1;
      SET is_exists = 'Exists!';
    END$$

DELIMITER ;

现在来调用:

mysql> call sp_table_exists('new_feature','t1',@result);
Query OK, 0 rows affected (0.00 sec)

mysql> select @result;
+-------------+
| @result     |
+-------------+
| Not exists! |
+-------------+
1 row in set (0.00 sec)

现在我们直接用sys数据库里面现有的存储过程来进行调用,

mysql> CALL table_exists('new_feature','t1',@v_is_exists);
Query OK, 0 rows affected (0.00 sec)


mysql> SELECT IF(@v_is_exists = '','Not exists!',@v_is_exists) AS 'result';
+-------------+
| result      |
+-------------+
| Not exists! |
+-------------+
1 row in set (0.00 sec)

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

mysql> SELECT * FROM schema_unused_indexes;
+---------------+-------------+--------------+
| object_schema | object_name | index_name   |
+---------------+-------------+--------------+
| new_feature   | t1          | idx_log_time |
| new_feature   | t1          | idx_rank2    |
+---------------+-------------+--------------+
2 rows in set (0.00 sec)

第三, 检索指定数据库下面的表扫描信息,过滤出执行次数大于10的查询,

九歌
九歌

九歌--人工智能诗歌写作系统

下载
mysql> SELECT * FROM statement_analysis WHERE db='new_feature' AND full_scan = '*'  AND exec_count > 10\G
*************************** 1. row ***************************
            query: SHOW STATUS 
               db: new_feature
        full_scan: *
       exec_count: 26
        err_count: 0
       warn_count: 0
    total_latency: 74.68 ms
      max_latency: 3.86 ms
      avg_latency: 2.87 ms
     lock_latency: 4.50 ms
        rows_sent: 9594
    rows_sent_avg: 369
    rows_examined: 9594
rows_examined_avg: 369
    rows_affected: 0
rows_affected_avg: 0
       tmp_tables: 0
  tmp_disk_tables: 0
      rows_sorted: 0
sort_merge_passes: 0
           digest: 475fa3ad9d4a846cfa96441050fc9787
       first_seen: 2015-11-16 10:51:17
        last_seen: 2015-11-16 11:28:13
*************************** 2. row ***************************
            query: SELECT `state` , `round` ( SUM ... uration (summed) in sec` DESC 
               db: new_feature
        full_scan: *
       exec_count: 12
        err_count: 0
       warn_count: 12
    total_latency: 16.43 ms
      max_latency: 2.39 ms
      avg_latency: 1.37 ms
     lock_latency: 3.54 ms
        rows_sent: 140
    rows_sent_avg: 12
    rows_examined: 852
rows_examined_avg: 71
    rows_affected: 0
rows_affected_avg: 0
       tmp_tables: 24
  tmp_disk_tables: 0
      rows_sorted: 140
sort_merge_passes: 0
           digest: 538e506ee0075e040b076f810ccb5f5c
       first_seen: 2015-11-16 10:51:17
        last_seen: 2015-11-16 11:28:13
2 rows in set (0.01 sec)

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

mysql> SELECT * FROM statement_analysis WHERE db='new_feature' AND tmp_tables > 0 ORDER BY 
tmp_tables DESC LIMIT 1\G
*************************** 1. row ***************************
            query: SELECT `performance_schema` .  ... name` . `SUM_TIMER_WAIT` DESC 
               db: new_feature
        full_scan: *
       exec_count: 2
        err_count: 0
       warn_count: 0
    total_latency: 87.96 ms
      max_latency: 59.50 ms
      avg_latency: 43.98 ms
     lock_latency: 548.00 us
        rows_sent: 101
    rows_sent_avg: 51
    rows_examined: 201
rows_examined_avg: 101
    rows_affected: 0
rows_affected_avg: 0
       tmp_tables: 332
  tmp_disk_tables: 15
      rows_sorted: 0
sort_merge_passes: 0
           digest: ff9bdfb7cf3f44b2da4c52dcde7a7352
       first_seen: 2015-11-16 10:24:42
        last_seen: 2015-11-16 10:24:42
1 row in set (0.01 sec)

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

第五, 检索执行次数排名前五的语句,

mysql>SELECT statement,total FROM user_summary_by_statement_type WHERE `user`='root' ORDER BY total DESC LIMIT 5;
+-------------------+-------+
| statement         | total |
+-------------------+-------+
| jump_if_not       | 17635 |
| freturn           |  3120 |
| show_create_table |   289 |
| Field List        |   202 |
| set_option        |   190 |
+-------------------+-------+
5 rows in set (0.01 sec)

示例我就写这么多了,详细的去看使用手册并且自己摸索去吧。    

以上就是MySQL5.7SYS系统SCHEMA_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 5.1万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号