您好,登錄后才能下訂單哦!
---注意,在生產(chǎn)環(huán)境中MySQL刪除表的時(shí)候 如果表過大,幾十G 甚至上百G ,刪除的時(shí)候要小心,要不然會(huì)導(dǎo)致MySQLhang住,從而影響業(yè)務(wù);
1、MySQL在刪除表的時(shí)候,一共分為2步:
①:buffer pool頁面清除的過程
在刪除表的時(shí)候,innodb會(huì)將文件在buffer pool中對(duì)應(yīng)的頁面清除,對(duì)于刪除表的頁面清除,只需要將頁面從flush隊(duì)列中刪除即可,而不需要去做flush操作,這樣就可以減少對(duì)系統(tǒng)的沖擊;
②:刪除ibd磁盤文件的過程(這個(gè)過程是很耗資源的也比較慢會(huì)影響數(shù)據(jù)庫的性能)
2、正確的刪除大表的姿勢(shì):
①:對(duì)表的系統(tǒng)文件做個(gè)硬鏈接,加速刪除
如:ln /mysql/data/test/emp.ibd /mysql/data/test/emp.ibd.hdlk
[mysql@db2 test]$ ln /mysql/data/test/emp.ibd /mysql/data/test/emp.ibd.hdlk
[mysql@db2 test]$ ls -l
total 208
-rw-r--r-- 1 mysql mysql 65 Mar 3 10:35 db.opt
-rw-rw---- 1 mysql mysql 8556 May 12 04:40 emp.frm
-rw-rw---- 2 mysql mysql 98304 May 12 04:40 emp.ibd
-rw-rw---- 2 mysql mysql 98304 May 12 04:40 emp.ibd.hdlk
[mysql@db2 test]$
然后在數(shù)據(jù)庫中執(zhí)行:drop table emp; ---即可,
②:第二種方法就是分批刪除數(shù)據(jù),設(shè)定一個(gè)條件有序的刪除,如:可以按照每天的數(shù)據(jù)刪除或按照一個(gè)范圍進(jìn)行分批刪除,
---注意,在生產(chǎn)數(shù)據(jù)庫刪除表的時(shí)候,如果表數(shù)據(jù)量過大要么分批刪除 要么做硬鏈接的方式刪除;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。