mysql performance_schema 如何从 events_statements_current 表中获取事件时间

标签 mysql sql

为此我在谷歌上搜索了很多,但没有看到任何人谈论它,所以这一定是一个简单的问题,但它仍然让我感到难过。
此 performance_schema 表 - http://dev.mysql.com/doc/refman/5.6/en/events-statements-current-table.htm有 timer_start 和 TIMER_END 列。根据文档“TIMER_START 和 TIMER_END 值表示事件计时开始和结束的时间”。
一个小问题。这是一个 bigint 而不是日期。如何将其转换为日期?

我看到一位博主建议它是自服务器启动以来的时间单位数。在我的例子中,陈述应该被测量到纳秒 (10^9)。因此,如果我的 timer_start 值为 3723676792253626000,则意味着 3723676792 秒,这不太可能,因为服务器正常运行时间为 3723716 秒。简单比较这两个数字的位数会让我认为时间单位真的是皮秒 (10^12)。
所以问题是:
1. timer_start真的是从上次重启算起的单元数吗?
2. 如果是这样,为什么setup_timers 表示纳秒时它的单位是皮秒?

TIA

最佳答案

这是 MySQL 5.7 的更正版本:

SELECT
    DATE_SUB(NOW(), INTERVAL (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME='UPTIME') - TIMER_START*10e-13 second) AS `start_time`,
    ROUND(timer_wait*10E-10, 3) AS `wait in (ms)`,
    sql_text,
    current_schema
FROM performance_schema.events_statements_history_long;

修复是:

  • performance_schema获取global_status(MySQL 5.7引入)
  • 修复 wait in (ms)(10E-8 与 10E-10)+ 格式;示例测试是以下 SQL 查询:SELECT SLEEP(0.5)
  • 返回的列
  • 使用“长”历史表(events_statements_history_long)

关于mysql performance_schema 如何从 events_statements_current 表中获取事件时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607249/

相关文章:

MySQL Workbench 无法连接到 Ubuntu 20.04 中的数据库

mysql - 超过 MySQL 的 TIME 值限制 838 :59:59

mysql - 错误 1022 - 无法写入;表中的重复键

用于删除重复的 SQL 查询

php - 无法从其他 php 文件获取变量

SQL:在 column1 上选择 distinct 并对合并行的 column2 值求和

mysql - 在 MySQL 8.0+ 中使用 MySQL 驱动程序在 MySQL 语句中传递 C++ 变量

mysql - 使用集群(NDBCluster 或 Galera)时,nodejs 应用程序如何连接到故障转移 MySQL 服务器之一?

c# - 合并 gridview 行并消除重复项

java - 使用 Hibernate 归档数据的最佳方法