麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL 5.7臨時表空間如何玩才能不掉坑里詳解

2024-07-25 19:08:57
字體:
來源:轉載
供稿:網友

導讀

MySQL 5.7的目標是成為發布以來最安全的MySQL服務器,其在SSL/TLS和全面安全開發方面有一些重要的改變。

MySQL 5.7起支持獨立臨時表空間,但個別時候也可能會踩坑的。

MySQL 5.7起,開始采用獨立的臨時表空間(和獨立的undo表空間不是一回事喲),命名ibtmp1文件,初始化12M,且默認無上限。

選項 innodb_temp_data_file_path 可配置臨時表空間相關參數。

innodb_temp_data_file_path = ibtmp1:12M:autoextend

臨時表空間的幾點說明

  • 臨時表空間不像普通InnoDB表空間那樣,不支持裸設備(raw device)。
  • 臨時表空間使用動態的表空間ID,因此每次重啟時都會變化(每次重啟時,都會重新初始化臨時表空間文件)。
  • 當選項設置錯誤或其他原因(權限不足等原因)無法創建臨時表空間時,mysqld實例也無法啟動。
  • 臨時表空間中存儲這非壓縮的InnoDB臨時表,如果是壓縮的InnoDB臨時表,則需要單獨存儲在各自的表空間文件中,文件存放在 tmpdir(/tmp)目錄下。
  • 臨時表元數據存儲在 INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO 視圖中。

有時執行SQL請求時會產生臨時表,極端情況下,可能導致臨時表空間文件暴漲,幫人處理過的案例中最高漲到快300G,比以前遇到的 ibdata1 文件暴漲還要猛…

臨時表使用的幾點建議

  • 設置 innodb_temp_data_file_path 選項,設定文件最大上限,超過上限時,需要生成臨時表的SQL無法被執行(一般這種SQL效率也比較低,可借此機會進行優化)。
  • 檢查 INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO,找到最大的臨時表對應的線程,kill之即可釋放,但 ibtmp1 文件則不能釋放(除非重啟)。
  • 擇機重啟實例,釋放 ibtmp1 文件,和 ibdata1 不同,ibtmp1 重啟時會被重新初始化而 ibdata1 則不可以。
  • 定期檢查運行時長超過N秒(比如N=300)的SQL,考慮干掉,避免垃圾SQL長時間運行影響業務。

附:臨時表測試案例

表DDL

CREATE TEMPORARY TABLE `tmp1` ( `id` int(10) unsigned NOT NULL DEFAULT '0', `name` varchar(50) NOT NULL DEFAULT '', `aid` int(10) unsigned NOT NULL AUTO_INCREMENT, `nid` int(11) unsigned GENERATED ALWAYS AS ((`id` + 1)) VIRTUAL NOT NULL, `nnid` int(11) unsigned GENERATED ALWAYS AS ((`id` + 1)) STORED NOT NULL, PRIMARY KEY (`aid`), KEY `name` (`name`), KEY `id` (`id`), KEY `nid` (`nid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

原表大小只有 120MB,從這個表直接 INSERT…SELECT 導數據到tmp1表。

-rw-r----- 1 yejr imysql 120M Apr 14 10:52 /data/mysql/test/sid.ibd

生成臨時表(去掉虛擬列,臨時表不支持虛擬列,然后寫入數據),還更大了(我也不解,以后有機會再追查原因)。

-rw-r----- 1 yejr imysql 140M Jun 25 09:55 /Users/yejinrong/mydata/ibtmp1

查看臨時表元數據信息

[email protected] [test]>select * from  INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO/G*********************** 1. row ***********************   TABLE_ID: 405    NAME: #sql14032_300000005_3    N_COLS: 6    SPACE: 421PER_TABLE_TABLESPACE: FALSE  IS_COMPRESSED: FALSE

再刪除索引,結果,又更大了

-rw-r----- 1 yejr imysql 204M Jun 25 09:57 /data/mysql/ibtmp1

第二次測試刪除索引后,變成了200M(因為第二次測試時,我設置了臨時表最大200M)

innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:200M
-rw-r----- 1 yejr imysql 200M Jun 25 10:15 /data/mysql/ibtmp1

執行一個會產生臨時表的慢SQL。

注:MySQL 5.7起,執行UNION ALL不再產生臨時表(除非需要額外排序)。

[email protected] [test]>explain select * from tmp1 union  select id,name,aid from sid/G*************************** 1. row ***************************   id: 1 select_type: PRIMARY  table: tmp1 partitions: NULL   type: ALLpossible_keys: NULL   key: NULL  key_len: NULL   ref: NULL   rows: 3986232  filtered: 100.00  Extra: NULL*************************** 2. row ***************************   id: 2 select_type: UNION  table: sid partitions: NULL   type: ALLpossible_keys: NULL   key: NULL  key_len: NULL   ref: NULL   rows: 802682  filtered: 100.00  Extra: NULL*************************** 3. row ***************************   id: NULL select_type: UNION RESULT  table: <union1,2> partitions: NULL   type: ALLpossible_keys: NULL   key: NULL  key_len: NULL   ref: NULL   rows: NULL  filtered: NULL  Extra: Using temporary

文件漲到588M還沒結束,我直接給卡了

-rw-r----- 1 yejr imysql 588M Jun 25 10:07 /data/mysql/ibtmp1

第二次測試時,設置了臨時表空間文件最大200M,再執行會報錯:

[email protected] [test]>select * from tmp1 union  select id,name,aid from sid;ERROR 1114 (HY000): The table '/var/folders/bv/j4tjn6k54dj5jh1tl8yn6_y00000gn/T/#sql14032_5_8' is full

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

參考

https://dev.mysql.com/doc/refman/5.7/en/temporary-files.html

https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html

https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_temp_data_file_path

https://dev.mysql.com/doc/refman/5.7/en/innodb-temporary-tablespace.html


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 粉嫩粉嫩一区二区三区在线播放 | 成人短视频在线观看 | 免费毛片在线视频 | 激情小说激情图片激情电影 | 亚洲无毛av | 日韩精品久久久 | 精精国产xxxx视频在线播放7 | 亚洲视频在线观看免费 | 久草成人在线观看 | 成人毛片100免费观看 | 久久精品一级片 | 午夜视频在线免费播放 | 精品中文字幕久久久久四十五十骆 | 午夜精品在线视频 | 国产激情精品一区二区三区 | 青青草成人免费视频在线 | 亚洲日色| 美女久久久久 | 高清视频一区二区 | 亚洲一区二区三区高清视频 | 伊人二本二区 | 久久久精品视频免费 | 日本欧美一区 | a免费看 | 亚洲少妇诱惑 | 天天夜夜草 | 国产一区二区视频精品 | 国产成人在线观看免费 | 亚洲视频观看 | 一级黄色免费大片 | 视频一区国产 | 黄色毛片一级视频 | 在线成人av观看 | 99精品国产一区二区三区 | 亚洲一区二区三区日本久久九 | 99riav视频一区二区 | 操操操操操| 史上最强炼体老祖动漫在线观看 | av电影免费在线看 | 鲁丝一区二区二区四区 | 亚洲自拍第一 |