广告
返回顶部
首页 > 资讯 > 数据库 >如何查看mysql的运行状态
  • 573
分享到

如何查看mysql的运行状态

2024-04-02 19:04:59 573人浏览 泡泡鱼
摘要

本篇内容主要讲解“如何查看Mysql的运行状态”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何查看mysql的运行状态”吧!   &nbs

本篇内容主要讲解“如何查看Mysql的运行状态”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何查看mysql的运行状态”吧!

    

查看最近的top sql

    通过perfORMance_schema.events_statements_history表,查看数据库最近执行的一些sql语句:

(root@localhost)[(none)]> SELECT thread_id
    ,event_name
    ,source
    ,sys.format_time(timer_wait)
    ,sys.format_time(lock_time)
    ,sql_text
    ,current_schema
    ,message_text
    ,rows_affected
    ,rows_sent
    ,rows_examined
    FROM performance_schema.events_statements_history
    WHERE current_schema != 'performance_schema'
    ORDER BY timer_wait DESC limit 10 \G
    
    
    
    
*************************** 1. row ***************************
                  thread_id: 561166
                 event_name: statement/sql/select
                     source: Socket_connection.cc:101
sys.format_time(timer_wait): 53.64 ms
 sys.format_time(lock_time): 429.00 us
                   sql_text: select * from oa_v_position_list
             current_schema: oa_2016
               message_text: NULL
              rows_affected: 0
                  rows_sent: 4
              rows_examined: 18051
*************************** 2. row ***************************
                  thread_id: 153896
                 event_name: statement/sql/select
                     source: socket_connection.cc:101
sys.format_time(timer_wait): 51.76 ms
 sys.format_time(lock_time): 96.00 us
                   sql_text: select count(id) as num from formmain_2477 where  (field0003 =  'SJCL-201911008' and  ifnull(field0003, '0') != '0')
             current_schema: oa_2016
               message_text: NULL
              rows_affected: 0
                  rows_sent: 1
              rows_examined: 222
*************************** 3. row ***************************
....

    我们可以使用performance_schema.events_statements_summary_by_digest表查询经过统计之后的top sql语句:

(root@localhost)[(none)]> SELECT schema_name
	,digest_text
	,count_star
	,sys.format_time(sum_timer_wait) AS sum_time
	,sys.format_time(min_timer_wait) AS min_time
	,sys.format_time(avg_timer_wait) AS avg_time
	,sys.format_time(max_timer_wait) AS min_time
	,sys.format_time(sum_lock_time) AS sum_lock_time
	,sum_rows_affected
	,sum_rows_sent
	,sum_rows_examined
FROM performance_schema.events_statements_summary_by_digest
WHERE schema_name IS NOT NULL
ORDER BY count_star DESC limit 10 \G
    
    
    
*************************** 1. row ***************************
      schema_name: oa_2016
      digest_text: SET `autocommit` = ? 
       count_star: 1604399319
         sum_time: 13.57 h
         min_time: 2.00 ns
         avg_time: 30.46 us
         min_time: 39.87 s
    sum_lock_time: 0 ps
sum_rows_affected: 0
    sum_rows_sent: 0
sum_rows_examined: 0
*************************** 2. row ***************************
      schema_name: oa_2016
      digest_text: COMMIT 
       count_star: 368723348
         sum_time: 4.15 h
         min_time: 10.07 us
         avg_time: 40.52 us
         min_time: 21.54 s
    sum_lock_time: 40.27 s
sum_rows_affected: 0
    sum_rows_sent: 0
sum_rows_examined: 0
*************************** 3. row ***************************
      schema_name: oa_2016
      digest_text: SELECT * FROM `jk_JOB_DETAILS` WHERE `SCHED_NAME` = ? AND `JOB_NAME` = ? AND `JOB_GROUP` = ? 
       count_star: 361183117
         sum_time: 19.88 h
         min_time: 5.00 ns
         avg_time: 198.10 us
         min_time: 4.97 s
    sum_lock_time: 4.93 h
sum_rows_affected: 0
    sum_rows_sent: 361182289
sum_rows_examined: 361182289
......

    提示:performance_schema.events_statements_summary_by_digest记录的sql并不完整,默认情况下只截取了1024字节,所以该表提供的数据只能算作慢日志分析的一个补充。如果需要完整sql文本,还得依赖慢日志分析。

查看最近失败的SQL

mysql> SELECT thread_id
    ,event_name
    ,source
    ,sys.format_time(timer_wait)
    ,sys.format_time(lock_time)
    ,sql_text
    ,current_schema
    ,message_text
    ,rows_affected
    ,rows_sent
    ,rows_examined
    FROM performance_schema.events_statements_history
    WHERE errors>0 \G
    
    
 *************************** 1. row ***************************
                  thread_id: 6172541
                 event_name: statement/sql/select
                     source: socket_connection.cc:101
sys.format_time(timer_wait): 135.89 us
 sys.format_time(lock_time): 0 ps
                   sql_text: SELECT id,waybill_num,oms_order_status FROM store_order 
  	WHERE is_sync_CSS_status_end IS NULL OR is_sync_css_status_end!='01' ORDER BY create_time ASC, css_search_time ASC LIMIT 0,200
             current_schema: oms
               message_text: Table 'oms.store_order' doesn't exist
              rows_affected: 0
                  rows_sent: 0
              rows_examined: 0
1 row in set (0.02 sec)

查看是MDL在等什么

# 查看MDL锁等待事件的instrments(采集器)是否开启
mysql> SELECT *
FROM performance_schema.setup_instruments
WHERE name LIKE '%metadata/sql/mdl%';
+----------------------------+---------+-------+
| NAME                       | ENABLED | TIMED |
+----------------------------+---------+-------+
| wait/lock/metadata/sql/mdl | NO      | NO    |
+----------------------------+---------+-------+
1 row in set (0.00 sec)
# 启用与MDL锁等待事件相关的instruments(采集器)
mysql> update performance_schema.setup_instruments set ENABLED='YES' where name like '%metadata/sql/mdl%';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> update performance_schema.setup_instruments set TIMED='YES' where name like '%metadata/sql/mdl%';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from performance_schema.setup_instruments where name like '%metadata/sql/mdl%';
+----------------------------+---------+-------+
| NAME                       | ENABLED | TIMED |
+----------------------------+---------+-------+
| wait/lock/metadata/sql/mdl | YES     | YES   |
+----------------------------+---------+-------+
1 row in set (0.01 sec)
# 然后使用sys.schema_table_lock_wait视图进行查询(注意:请自行模拟一个会话事务不提交,
另外一个会话发生DDL的操作,就可以查看到MDL锁等待的内容)。
mysql> select * from sys.schema_table_lock_waits \G

查看innodb_buffer_pool中热点数据有哪些

mysql> select * from  sys.innodb_buffer_stats_by_table order by allocated desc limit 10 ;
+---------------+--------------------+------------+------------+-------+--------------+-----------+-------------+
| object_schema | object_name        | allocated  | data       | pages | pages_hashed | pages_old | rows_cached |
+---------------+--------------------+------------+------------+-------+--------------+-----------+-------------+
| mysql         | help_keyWord       | 96.00 KiB  | 43.99 KiB  |     6 |            6 |         6 |         283 |
| InnoDB System | SYS_COLUMNS        | 80.00 KiB  | 44.50 KiB  |     5 |            5 |         5 |         696 |
| mdm           | employee_jz        | 64.00 KiB  | 19.77 KiB  |     4 |            4 |         4 |         177 |
| mysql         | innodb_index_stats | 64.00 KiB  | 28.20 KiB  |     4 |            4 |         4 |         288 |

查看数据库中是否有表使用了外键

mysql> SELECT *
FROM information_schema.key_column_usage
WHERE constraint_schema = 'oms'
	AND referenced_table_schema IS NOT NULL \G;
	
	
*************************** 1. row ***************************
           CONSTRAINT_CATALOG: def
            CONSTRAINT_SCHEMA: oms
              CONSTRAINT_NAME: qrtz_blob_triggers_ibfk_1
                TABLE_CATALOG: def
                 TABLE_SCHEMA: oms
                   TABLE_NAME: qrtz_blob_triggers
                  COLUMN_NAME: SCHED_NAME
             ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: 1
      REFERENCED_TABLE_SCHEMA: oms
        REFERENCED_TABLE_NAME: qrtz_triggers
       REFERENCED_COLUMN_NAME: SCHED_NAME
*************************** 2. row ***************************
           CONSTRAINT_CATALOG: def
            CONSTRAINT_SCHEMA: oms

    通常在开发规范中禁止使用外键。

查看每张表都有哪些索引

mysql> SELECT TABLE_SCHEMA
	,TABLE_NAME
	,INDEX_NAME
	,COLUMN_NAME
	,CARDINALITY
FROM information_schema.STATISTICS
GROUP BY TABLE_SCHEMA
	,TABLE_NAME limit 100;
	
+--------------+---------------------------+-------------------------+------------------+-------------+
| TABLE_SCHEMA | TABLE_NAME                | INDEX_NAME              | COLUMN_NAME      | CARDINALITY |
+--------------+---------------------------+-------------------------+------------------+-------------+
| mdm          | department                | index_unique_department | deptid           |         381 |
| mdm          | employee                  | PRIMARY                 | sn               |        1544 |
| mdm          | employee_jz               | index_unique_employee   | sn               |        1626 |
.......

查看数据库是否有分区表

mysql> select * from information_schema.partitions  where partition_name is not null;
Empty set (0.02 sec)

mysql系统库之统计信息表

# 将表和索引的统计信息数据存储到磁盘中,默认是开启的
(root@localhost)[mysql]> show variables like 'innodb_stats_persistent';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| innodb_stats_persistent | ON    |
+-------------------------+-------+
1 row in set (0.00 sec)
# 持久化信息被存储在mysql数据库的如下两张表中:
(root@localhost)[mysql]> show tables from mysql like '%stats%';
+---------------------------+
| Tables_in_mysql (%stats%) |
+---------------------------+
| innodb_index_stats        |
| innodb_table_stats        |
+---------------------------+
2 rows in set (0.00 sec)
# innodb_stats_auto_recalc变量控制是否启用统计信息的自动重新计算功能,默认是开启的。如果启用,当表中的数据量超过10%时会
触发统计信息自动重新计算功能
(root@localhost)[mysql]> show variables like 'innodb_stats_auto_recalc'
    -> ;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_stats_auto_recalc | ON    |
+--------------------------+-------+
1 row in set (0.00 sec)

到此,相信大家对“如何查看mysql的运行状态”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: 如何查看mysql的运行状态

本文链接: https://www.lsjlt.com/news/60032.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何查看mysql的运行状态
    本篇内容主要讲解“如何查看mysql的运行状态”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何查看mysql的运行状态”吧!   &nbs...
    99+
    2022-10-18
  • centos怎么查看mysql运行状态
    centos查看mysql运行状态方法一:通过查询端口查看是否有tcp,3306来判断mysql运行状态。方法二:通过查询进程查看是否有mysqld_safe和mysqld两个进程来判断mysql运行状态。具体操作步骤:查询端口:首先,在端...
    99+
    2022-10-10
  • 查看BW运行状态
    BW_pro: cd /sapmnt/BIP/profile hostname:bipadm 5> jcmon pf=BIP_J01_hostname JCMon is an interna...
    99+
    2022-10-18
  • 运行中的mysql状态的查看方法
    本篇内容介绍了“运行中的mysql状态的查看方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  对正在运...
    99+
    2022-10-18
  • Linux下怎么查看mysql运行状态
    这篇文章给大家分享的是有关Linux下怎么查看mysql运行状态的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用命令 # service mysqld status 命令来查看mysql 的启动状态如图所示: ...
    99+
    2023-06-27
  • linux如何查看kafka运行状态
    要查看Kafka的运行状态,可以通过以下方法:1. 使用Kafka自带的工具:Kafka提供了一个命令行工具,可以查看Kafka的运...
    99+
    2023-09-14
    kafka linux
  • linux如何查看oracle运行状态
    在Linux系统中,可以通过以下命令查看Oracle数据库的运行状态:1. 使用`ps`命令查看Oracle相关的进程是否在运行:`...
    99+
    2023-09-05
    oracle linux
  • linux如何查看tomcat运行状态
    这篇文章主要介绍了linux如何查看tomcat运行状态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux如何查看tomcat运行状态文章都会有所收获,下面我们一起来看看...
    99+
    2023-03-23
    linux tomcat
  • MySQL 5.7 查看运行状态(sys表的使用)
    host_summary,查看连接到mysql的主机信息 字段名 意义 host 从哪个服务器上连过来。如果是NULL,表示内部的进程 ...
    99+
    2015-02-20
    MySQL 5.7 查看运行状态(sys表的使用)
  • linux如何查看程序运行状态
    在Linux中,可以使用以下命令来查看程序的运行状态:1. `ps`命令:用于显示系统中当前运行的进程。- `ps -ef`:显示所...
    99+
    2023-08-29
    linux
  • Docker怎样查看运行状态
    小编给大家分享一下Docker怎样查看运行状态,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!查看运行状态docker ...
    99+
    2022-10-19
  • ubuntu如何查看mongodb服务运行状态
    ubuntu中查看mongodb服务运行状态的方法:1、打开ubuntu终端;2、输入“sudo service mongod restart”命令查看mongodb服务的运行状态即可。具体操作步骤:在ubuntu系统桌面中使用快捷键【Ct...
    99+
    2022-10-19
  • 查看HARD的配置及运行状态
    查看HARD的配置及运行状态HADR连接状态:当备用数据库的HADR启动时,它首先进入本地同步更新状态。并根据本地日志路径配置参数及日志归档方法的设置检索本地系统中的日志文件并重放。当本地日志文件重放完毕,...
    99+
    2022-10-18
  • linux怎么查看oracle运行状态
    要查看Oracle数据库的运行状态,在Linux中可以使用以下命令:1. 使用`ps`命令查看Oracle相关的进程是否在运行:``...
    99+
    2023-08-23
    linux oracle
  • linux如何查看单个服务的运行状态
    linux中查看单个服务运行状态的方法:1、打开linux终端;2、在终端命令行中输入“service 服务名 status”命令查看单个服务运行状态即可。具体操作步骤:在linux系统桌面中使用快捷键【Ctrl+Alt+T】打开linux...
    99+
    2022-10-24
  • linux如何查看所有服务的运行状态
    linux中查看所有服务运行状态的方法:1、打开linux终端;2、在终端命令行中输入“service --status-all”或“chkconfig --list”命令查看所有服务运行状态即可。具体操作步骤:在linux系统桌面中使用快...
    99+
    2022-10-17
  • linux如何查看tomcat是否为运行状态
    这篇文章主要介绍“linux如何查看tomcat是否为运行状态”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux如何查看tomcat是否为运行状态”文章能帮助大家解决问题。查看方法:1、使用“...
    99+
    2023-06-30
  • python如何在运行状态查看源代码
    这篇文章将为大家详细讲解有关python如何在运行状态查看源代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何在运行状态查看源代码查看函数的源代码,我们通常会使用 IDE 来完成。比如在 PyChar...
    99+
    2023-06-27
  • linux怎么查看程序运行状态
    在Linux中,有多种方法可以查看程序的运行状态。 使用命令ps:可以使用ps命令来查看当前正在运行的程序。使用ps命令时,可以...
    99+
    2023-10-25
    linux
  • java怎么查看线程运行状态
    Java提供了一些方法来查看线程的运行状态,可以使用下面的方法来查看线程的状态:1. 使用`Thread.getState()`方法...
    99+
    2023-08-18
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作