MySQL SYS数据库,它是什么,以及它在系统管理中扮演什么角色?

MySQL中没有名为”sys”的系统数据库。

MySQL 的 SYS 数据库是 MySQL 5.7 版本引入的一个重要特性,旨在通过简化performance_schema 中的数据展示,帮助 DBA(数据库管理员)更快捷地了解和诊断数据库的运行状况,以下是对 MySQL SYS 数据库的详细介绍:

MySQL SYS数据库,它是什么,以及它在系统管理中扮演什么角色?

1、来源与目的:SYS 数据库的所有数据源来自performance_schema,其目标是降低performance_schema 的复杂度,使 DBA 能够更好地阅读和理解库中的内容。

2、适用版本:SYS 数据库支持 MySQL 5.6 或更高版本,并且在安装 MySQL 5.7 以后的版本时,使用mysqld 进行初始化会自动创建该库。

3、访问权限:要完全访问 SYS 系统库,用户必须具有以下权限:对所有 sys 表和视图具有 SELECT 权限;对所有 sys 存储过程和函数具有 EXECUTE 权限;对 sys_config 表具有 INSERT、UPDATE 权限;对某些特定的 sys 系统库存储过程和函数需要额外权限。

组成结构

1、配置表:以sys_config 表为代表,用于 sys schema 库的配置。

2、视图分类

字母开头的视图:适合人阅读,显示格式化的数据。host_summaryuser_summaryinnodbiomemoryschemasessionstatementwait 等。

x$开头的视图:适合工具采集数据,显示原始未处理过的数据。x$host_summaryx$user_summaryx$innodbx$iox$memoryx$schemax$sessionx$statementx$wait 等。

功能与作用

1、资源监控:通过视图可以查看每个客户端 IP 或用户消耗的资源情况,包括连接数、执行的 SQL 语句数量、等待时间等。

MySQL SYS数据库,它是什么,以及它在系统管理中扮演什么角色?

2、IO 分析:可以查看某个数据文件上发生的 IO 请求次数及类型,以及哪个文件或表上的 IO 请求最多。

3、内存使用:可以查询总共分配了多少内存,以及每个连接分配了多少内存。

4、SQL 执行情况:可以查看哪些 SQL 语句被频繁执行,哪些 SQL 使用了临时表或磁盘临时表,哪些 SQL 执行了全表扫描或排序操作。

5、性能诊断:通过汇总视图可以分析资源消耗、IO 热点、延迟语句等,对数据库性能进行深度监控和诊断。

常用查询示例

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

SELECT * FROM host_summary;

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

SELECT * FROM io_global_by_file_by_bytes;

3、查看总共分配了多少内存

SELECT * FROM memory_global_total;

4、查看当前正在执行的 SQL

MySQL SYS数据库,它是什么,以及它在系统管理中扮演什么角色?

SELECT conn_id, user, current_statement, last_statement FROM session;

5、查看数据库中哪些 SQL 被频繁执行

SELECT db, exec_count, query FROM statement_analysis ORDER BY exec_count DESC LIMIT 10;

FAQs

1、问题1:如何查看哪个文件产生了最多的 IO,它的 IO 模式是怎样的?

解答:可以通过io_global_by_file_by_bytes 视图来查看哪个文件产生了最多的 IO,并通过io_global_by_file_by_latency 视图来查看该文件的 IO 模式(即读多还是写多)。

2、问题2:如何查看哪些 SQL 语句使用了临时表,又有哪些用到了磁盘临时表?

解答:可以通过statement_analysis 视图来查看哪些 SQL 语句使用了临时表(tmp_tables 列值大于 0),并进一步筛选出哪些用到了磁盘临时表(tmp_disk_tables 列值大于 0)。

通过上述信息,希望能帮助您更好地理解和利用MySQL的SYS数据库进行数据库性能监控和管理。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1106742.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-09-30 07:00
下一篇 2024-09-30 07:02

相关推荐

  • 如何在MySQL中仅检索前几个数据库?

    在MySQL中,使用SHOW DATABASES可以列出所有数据库。如果只想显示前几个,可以使用限制条件,,,“sql,SHOW DATABASES LIMIT 5;,“,,这条命令将只显示前五个数据库。

    2024-10-08
    033
  • 如何快速查看MySQL数据库中表的大小?

    要查看MySQL数据库表的大小,可以使用以下SQL查询:,,“sql,SELECT table_schema AS ‘Database’, , table_name AS ‘Table’, , (data_length + index_length) / 1024 / 1024 AS ‘Size (MB)’,FROM information_schema.TABLES,ORDER BY (data_length + index_length) DESC;,“

    2024-10-08
    01.0K
  • 如何有效地在MySQL中搜索包含空格的数据库值?

    在MySQL中,可以使用LIKE操作符结合通配符%来搜索包含空格的字符串。,,“sql,SELECT * FROM your_table WHERE your_column LIKE ‘%值中间空格%’;,“

    2024-10-08
    0205
  • 如何检查MySQL数据库中的锁定情况?

    在MySQL中,你可以使用 SHOW PROCESSLIST 命令来查看当前数据库中的锁信息。这个命令会显示当前正在运行的所有线程的信息,包括线程的ID、用户、主机、数据库、命令、执行时间、状态等。状态一栏可能会包含”Locked”这样的字样,表示该线程正在等待获取锁。,,你还可以使用 INFORMATION_SCHEMA.INNODB_LOCKS 表来查看InnoDB存储引擎的锁信息,或者使用 INFORMATION_SCHEMA.INNODB_LOCK_WAITS 表来查看等待获取锁的事务。,,注意:这些命令需要有相应的权限才能执行。

    2024-10-08
    028

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入