程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 刪除年夜表的機能成績處理計劃

MySQL 刪除年夜表的機能成績處理計劃

編輯:MySQL綜合教程

MySQL 刪除年夜表的機能成績處理計劃。本站提示廣大學習愛好者:(MySQL 刪除年夜表的機能成績處理計劃)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL 刪除年夜表的機能成績處理計劃正文


微博上評論辯論MySQL在刪除年夜表engine=innodb(30G+)時,若何削減MySQL hang的時光,現做一下簡略總結:

當buffer_pool很年夜的時刻(30G+),因為刪除表時,會遍歷全部buffer pool來清算數據,會招致MySQL hang住,處理的方法是:
1、當innodb_file_per_table=0的時刻,以上不是成績,由於采取同享表空間的時刻,該表所占用的空間不會被刪除,buffer pool中的相干頁不會 被discard。
2、當innodb_file_per_table=1的時刻,而且當buffer_pool比擬年夜的時刻,遍歷全部buffer pool 須要許多的時光(table_cache 會被鎖住,一切的DML操作被阻攔)。

熟悉誤區:
將innodb 表改成 myisam表,這個是沒有用果的,該操作會刪除舊表,樹立新表,仍然會遍歷全部buffer_pool。

處理思緒:
1、采取劇本情勢,批量刪除部門記載
2、可以再slave長進行操作,停止主備切換(本錢高)
3、Percona 5.1.58以上版本都支撐innodb_lazy_drop_table(bug很多,慎用)
4、與buffer pool有關,然則可以加速 刪除數據文件的速度,異樣能削減MySQL hang住的時光。即:對數據文件樹立硬鏈接,(依附道理:OS HARD LINK 當多個文件名同時指向統一個INODE時,這個INODE的援用數N>1, 刪除個中任何一個文件名只是刪除一個指針罷了,不會刪除數據文件。當INODE的援用數N=1時, 刪除文件須要去把這個文件相干的一切數據塊消除,所以會比擬耗時)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved