国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL 刪除大表的性能問題解決方案

2024-07-24 12:48:55
字體:
來源:轉載
供稿:網友
微博上討論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時, 刪除文件需要去把這個文件相關的所有數據塊清除,所以會比較耗時)

您可能感興趣的文章:

mysql表的清空、刪除和修改操作詳解mysql支持跨表delete刪除多表記錄MySQL 添加、修改、刪除表的列及約束等表的定義MySQL中批量刪除指定前綴表的sql語句MySQL創建和刪除表操作命令實例講解mysql中多表刪除其中ID相同記錄的方法php中批量刪除Mysql中相同前綴的數據表的代碼mysql delete 多表連接刪除功能在MySQL中刪除表的操作教程MySQL實現快速刪除所有表而不刪除數據庫的方法
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永安市| 革吉县| 商河县| 古丈县| 安仁县| 南康市| 云梦县| 瓦房店市| 新邵县| 松桃| 黑山县| 平远县| 石城县| 科尔| 广东省| 永福县| 九龙坡区| 桑日县| 乐山市| 綦江县| 综艺| 隆安县| 吕梁市| 剑阁县| 苏尼特左旗| 偏关县| 城口县| 吉木乃县| 桓台县| 全椒县| 深水埗区| 永嘉县| 临泉县| 鹤岗市| 平乡县| 原平市| 星子县| 哈尔滨市| 莎车县| 乡宁县| 友谊县|