簡體   English   中英

MYSQL 臨時表 - 如何查看活動表

[英]MYSQL Temporary Tables - How to view active ones

我們公司有一個簡單的“類CRM”軟件。 有一些復雜的查詢需要一些時間,日常使用的查詢......所以我正在測試一些修改以使用臨時表來替換我們需要的所有復雜連接和子查詢。

到目前為止進展非常順利,速度達到了 90% 以上。

由於它是一個 web 應用程序(codeigniter + mysql),我計划將它放在“生產測試”環境中,以便 50% 的用戶可以幫助我測試它。 我想監視活動的表,如果可能的話,監視每個連接。

我的問題是 - 有什么方法可以查看在 mysql 實例中處於活動狀態的所有臨時表? 也許查看它的數據?

我讀過一些關於插件或類似的東西,但這篇文章太混亂了,我無法理解。

非常感謝,對不起我的英語——不是我的母語。

temp table = 臨時表,在查詢后立即刪除

沒有直接的解決方案,除了記錄所有查詢並逐一執行以檢查哪個查詢需要 tmp_table

Created_tmp_tables這樣的系統變量可能會給出一些想法

mysql> show status like '%tmp%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 0     |
| Created_tmp_files       | 0     |
| Created_tmp_tables      | 0     |
+-------------------------+-------+

臨時表的問題之一實際上是跟蹤使用情況,然后是創建、索引和刪除它們的開銷——特別是對於 web 應用程序,其中臨時表的生命周期通常與 HTTP 請求的生命周期一樣長。

如果預編譯的結果(即物化視圖)會有所幫助,我設置了一個常規表,添加了引用 MySQL 連接 ID / web Z21D6F40CFB511982E4424E0E250A9 生成的源查詢 + ID 時間的字段。數據以及是否會共享。

除了詳細跟蹤表的使用情況外,它還可以更輕松地解決查詢調優問題,當然,架構也有更好的文檔記錄。

從 v5.7 開始的 MySQL INNODB 提供了一些關於來自INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INF的臨時表的信息,但它只顯示了服務信息,沒有關於表結構或名稱的詳細信息

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO;
+----------+--------------+--------+------------+
| TABLE_ID | NAME         | N_COLS | SPACE      |
+----------+--------------+--------+------------+
|     1066 | #sql569_1c_4 |      4 | 4243767290 |
+----------+--------------+--------+------------+
1 row in set (0.00 sec)

mysql> 

當您的數據集變得更大時,臨時表將無濟於事。 最后,他們如何提供幫助? 計算結果后必須將數據復制到這些表中,為什么不使用 memcached 緩存結果呢?

此外,我還看到了有些大的數據庫(數十 GB)並且在單台機器上運行,並且查詢運行得很快。 有一個問題是您是否正確配置了數據庫服務器(軟件和硬件)。 您可能會遇到暫時的加速,但不能保證它會永久有效。 我會優化運行應用程序所需的應用程序、查詢、軟件和硬件,然后我會使用 memcache 緩存結果,除非您需要查詢結果的最新熱拷貝。

我認為在視圖臨時表中沒有意義,因為它們在連接期間存在並在關閉連接后死亡。 但是關於臨時表有一個重要的事實。 因此,如果您在腳本中使用持久連接,則臨時表將在此連接的生命周期內存在,並且使用此連接的客戶端將可以訪問相同的臨時表。 同樣在這種情況下,臨時表將消耗系統資源。 為了避免這種情況,您應該在運行使用此臨時表的必要查詢后手動刪除臨時表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM