Mysql

記錄動態構造的mysql儲存過程的執行時間

  • June 25, 2018

我有一個MySQL伺服器。

MySQL伺服器包含龐大的網路數據集合。客戶端 API 將連接到MySQL伺服器並執行一些動態創建的儲存過程,並在成功執行後即時刪除它。

目前沒有可用的跟踪機制。我將無法修改儲存過程,因為它是由客戶端動態創建的API's

是否有任何機制來跟踪這種動態創建的儲存過程的執行?

您可以在程式碼的開始和結束時擷取 mysqld 的正常執行時間或數據庫伺服器的時間。

也許像這樣

建議 #1

SELECT variable_value INTO @t1
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE variable_name='uptime';
<Your Stored Procedure Code>
SELECT variable_value INTO @t2
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE variable_name='uptime';
SET @RunningTimeSec = @t2 - @t1;
SET @RunningTime = SEC_TO_TIME(@RunningTimeSec);
INSERT INTO sometable ... VALUES (...,@RunningTimeSec,...);

建議 #2

SET @t1 = UNIX_TIMESTAMP(NOW());
<Your Stored Procedure Code>
SET @t2 = UNIX_TIMESTAMP(NOW());
SET @RunningTimeSec = @t2 - @t1;
SET @RunningTime = SEC_TO_TIME(@RunningTimeSec);
INSERT INTO sometable ... VALUES (...,@RunningTimeSec,...);

試一試 !!!

使用可用的現成審計外掛之一跟踪伺服器上的活動。McAfee Audit 將是我的推薦,因為您可能只想知道圍繞儲存過程過濾的呼叫。

引用自:https://dba.stackexchange.com/questions/97233