日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql皮秒转成年月日时分秒_MySQL performance_schema 中 TIMER_*类字段 的易读转换

發(fā)布時(shí)間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql皮秒转成年月日时分秒_MySQL performance_schema 中 TIMER_*类字段 的易读转换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

performance_schema中有很多的表(語(yǔ)句信息表,事務(wù)信息表等)記錄執(zhí)行的SQL的具體信息,執(zhí)行事務(wù)的具體信息,其中都會(huì)有一個(gè)叫做TIMER_START的字段,這個(gè)字段的值易讀性很差,官方文檔說(shuō)是皮秒,但也沒(méi)說(shuō)怎么轉(zhuǎn)成人類(lèi)易讀的形式,通過(guò)以下的方法可以將其轉(zhuǎn)換為人易讀的格式。

舉例

以performance_schema.events_statements_history_long表為例,擺上對(duì)應(yīng)的SQL語(yǔ)句,可以考慮將其寫(xiě)成函數(shù)。

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)'

FROM

performance_schema.events_statements_history_long

where thread_id=194277

limit 1\G;

*************************** 1. row ***************************

THREAD_ID: 194277

EVENT_ID: 323

END_EVENT_ID: 354

EVENT_NAME: statement/sql/select

SOURCE:

TIMER_START: 1122588644870331000

TIMER_END: 1122588645297519000

TIMER_WAIT: 427188000

LOCK_TIME: 327000000

SQL_TEXT: select count(*) from mysql.user

DIGEST: a41461c07eca51bcda21d91cf128cfa6

DIGEST_TEXT: SELECT COUNT ( * ) FROM `mysql` . `user`

CURRENT_SCHEMA: NULL

OBJECT_TYPE: NULL

OBJECT_SCHEMA: NULL

OBJECT_NAME: NULL

OBJECT_INSTANCE_BEGIN: NULL

MYSQL_ERRNO: 0

RETURNED_SQLSTATE: NULL

MESSAGE_TEXT: NULL

ERRORS: 0

WARNINGS: 0

ROWS_AFFECTED: 0

ROWS_SENT: 1

ROWS_EXAMINED: 0

CREATED_TMP_DISK_TABLES: 0

CREATED_TMP_TABLES: 0

SELECT_FULL_JOIN: 0

SELECT_FULL_RANGE_JOIN: 0

SELECT_RANGE: 0

SELECT_RANGE_CHECK: 0

SELECT_SCAN: 0

SORT_MERGE_PASSES: 0

SORT_RANGE: 0

SORT_ROWS: 0

SORT_SCAN: 0

NO_INDEX_USED: 0

NO_GOOD_INDEX_USED: 0

NESTING_EVENT_ID: NULL

NESTING_EVENT_TYPE: NULL

NESTING_EVENT_LEVEL: 0

start_time: 2020-10-22 10:07:39.644871

wait in (ms): 0.427

1 row in set (0.10 sec)

關(guān)鍵字段

DATE_SUB(

NOW(),

INTERVAL (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME='UPTIME') - TIMER_START*10e-13 second

) AS 'start_time'

DATE_SUB(指定日期A, 需要減去的時(shí)間間隔B):如現(xiàn)在是2020-10-22 10:15:00.000(參數(shù)A),我指定需要減去的天數(shù)為2即INTERVAL 2 DAY(參數(shù)B),就能返回得到2020-10-20 10:15:00.000

結(jié)論

timer_*即從數(shù)據(jù)庫(kù)正常啟動(dòng)以來(lái)經(jīng)過(guò)的時(shí)間,但這個(gè)時(shí)間不一定準(zhǔn)確,官方文檔內(nèi)說(shuō)這個(gè)會(huì)基于處理器的啥啥啥進(jìn)行計(jì)算,可能會(huì)有波動(dòng)。

筆者有一臺(tái)數(shù)據(jù)庫(kù)的timer_*字段信息用以上方法計(jì)算之后,相差特別大(大的離譜那種,時(shí)間多了1年),不知道原因,這臺(tái)經(jīng)歷過(guò)升級(jí),有知道的大佬,歡迎留言。

創(chuàng)建時(shí)間轉(zhuǎn)換函數(shù),方便調(diào)用

begin;

set global log_bin_trust_function_creators=on;

DELIMITER $$

DROP FUNCTION IF EXISTS timer_to_date$$

CREATE FUNCTION timer_to_date(timer bigint(20) unsigned) RETURNS varchar(50)

BEGIN

DECLARE res_date varchar(50);

DECLARE uptime int;

SET uptime=(SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME='UPTIME');

SET res_date=DATE_SUB(NOW(),INTERVAL @uptime - timer*10e-13 second);

return res_date;

END $$

delimiter ;

set global log_bin_trust_function_creators=off;

commit;

總結(jié)

以上是生活随笔為你收集整理的mysql皮秒转成年月日时分秒_MySQL performance_schema 中 TIMER_*类字段 的易读转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。