中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL大表清空和刪除正確方法

發布時間:2020-09-26 15:16:27 來源:網絡 閱讀:2052 作者:898009427 欄目:MySQL數據庫

MySQL大表清空和刪除正確方法

1 清空大表

1.1 truncate

刪除表中的數據的方法有delete,truncate, 其中TRUNCATE TABLE用于刪除表中的所有行,而不記錄單個行刪除操作。TRUNCATE TABLE 與沒有 WHERE 子句的 DELETE 語句類似;但是,TRUNCATE TABLE 速度更快,使用的系統資源和事務日志資源更少。

truncate 清空表數據,50G的表大概需要20秒以上;

mysql> truncate table old_table;

1.2 rename

1.2.1 格式:

mysql> rename table 原表名 to 新表名;

當你執行 RENAME 時,你不能有任何鎖定的表或活動的事務。你同樣也必須有對原初表的 ALTER 和 DROP 權限,以及對新表的 CREATE 和 INSERT 權限。

1.2.2 實例

# 新建一個空表(測試);
mysql> create table old_table(id int);

# new_table克隆old_table的表結構;
mysql> create table new_table like old_table;

# old_table改名為backup_table,new_table改名為old_table;
mysql> RENAME TABLE old_table TO backup_table, new_table TO old_table;

# 刪除舊表及數據;
mysql> DROP TABLE old_table;    

2 刪除

2.1 背景

在生產環境有可能有刪除某個不重要大表的需求,因為大表占用的大量磁盤空間,如果我們直接drop掉此表,通常需要20秒以上的時間,總會覺得會卡主MySQL,現在給大家一個正確的刪除方法。

2.2 首先我們查看此大表

# shell
[root@ras221 db]# du -shc old_table*
12K old_table.frm
49G old_table.ibd
[root@ras221 db]# ls -l old_table*
-rw-r----- 1 mysql mysql      9075 11月  8 11:39 old_table.frm
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd
[root@ras221 db]# ln old_table.ibd old_table.ibd.bak        # 硬鏈接;
[root@ras221 db]# ls -l old_table*
-rw-r----- 1 mysql mysql      9075 11月  8 11:39 old_table.frm
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd
-rw-r----- 1 mysql mysql 52273610752 1月  10 14:12 old_table.ibd.bak
[root@ras221 db]# 

# mysql 
mysql> drop table old_table;
Query Ok, 0 rows affacted(0.92 sec)

通過這樣的操作,可以減少mysql drop大表hang住的時間,然后在業務低峰期再去刪除真實的那個.b文.bak件。

至于原理:
就是利用OS HARD LINK的原理,
當多個文件名同時指向同一個INODE時,這個INODE的引用數N>1, 刪除其中任何一個文件名都會很快.
因為其直接的物理文件塊沒有被刪除.只是刪除了一個指針而已;
當INODE的引用數N=1時, 刪除文件需要去把這個文件相關的所有數據塊清除,所以會比較耗時;

對于大表操作操作的其實幾個Tips:
可以先用rename table替代drop table
mysql> rename table old_table to old_table_bak;
這個動作也很快只是相當于改一個文件名。
另外也可以考慮使用XFS文件系統,對于Drop表動作也比較快。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高阳县| 游戏| 广灵县| 南平市| 田林县| 湖州市| 修武县| 嘉鱼县| 华容县| 靖江市| 丰镇市| 乌苏市| 玉溪市| 池州市| 瓮安县| 宜兰市| 崇文区| 鄂托克旗| 新沂市| 铜陵市| 连平县| 会泽县| 邯郸县| 达拉特旗| 灵璧县| 西丰县| 浦江县| 定州市| 合阳县| 南澳县| 梁山县| 乌拉特后旗| 贵德县| 大英县| 来安县| 惠水县| 高州市| 晋城| 元阳县| 郯城县| 锦屏县|