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

首頁 > 數據庫 > MySQL > 正文

Innodb中mysql快速刪除2T的大表方法示例

2024-07-24 12:49:59
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Innodb中mysql快速刪除2T的大表的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

來,先來看小漫畫陶冶一下情操


OK,這里就說了。假設,你有一個表erp,如果你直接進行下面的命令

drop table erp

這個時候所有的mysql的相關進程都會停止,直到drop結束,mysql才會恢復執行。出現這個情況的原因就是因為,在drop table的時候,innodb維護了一個全局鎖,drop完畢鎖就釋放了。

這意味著,如果在白天,訪問量非常大的時候,如果你在不做任何處理措施的情況下,執行了刪大表的命令,整個mysql就掛在那了,在刪表期間,QPS會嚴重下滑,然后產品經理就來找你喝茶了。所以才有了漫畫中的一幕,你可以在晚上十二點,夜深人靜的時候再刪。

當然,有的人不服,可能會說:"你可以寫一個刪除表的存儲過程,在晚上沒啥訪問量的時候運行一次就行。"
我內心一驚,細想一下,只能說:"大家還是別抬杠了,還是聽我說一下業內通用做法。"

一個假設

先說明一下,在這里有一個前提,mysql開啟了獨立表空間,MySQL5.6.7之后默認開啟。

也就是在my.cnf中,有這么一條配置(這些是屬于mysql優化的知識,后期給大家介紹)

innodb_file_per_table = 1

查看表空間狀態,用下面的命令

mysql> show variables like '%per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | OFF | +-----------------------+-------+

如果innodb_file_per_table的value值為OFF,代表采用的是共享表空間。

如果innodb_file_per_table的value值為ON ,代表采用的是獨立表空間。

于是,大家要問我,獨立表空間和共享表空間的區別?

共享表空間:某一個數據庫的所有的表數據,索引文件全部放在一個文件中,默認這個共享表空間的文件路徑在data目錄下。 默認的文件名為:ibdata1(此文件,可以擴展成多個)。注意,在這種方式下,運維超級不方便。你看,所有數據都在一個文件里,要對單表維護,十分不方便。另外,你在做delete操作的時候,文件內會留下很多間隙,ibdata1文件不會自動收縮。換句話說,使用共享表空間來存儲數據,會遭遇drop table之后,空間無法釋放的問題。

獨立表空間:每一個表都以獨立方式來部署,每個表都有一個.frm表描述文件,還有一個.ibd文件。

.frm文件:保存了每個表的元數據,包括表結構的定義等,該文件與數據庫引擎無關。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉化市| 牡丹江市| 云和县| 新疆| 和硕县| 汉中市| 孟连| 宽甸| 东阳市| 五台县| 大城县| 图们市| 普格县| 乌鲁木齐县| 柳江县| 新乡市| 迁西县| 万全县| 盐山县| 安徽省| 石渠县| 昔阳县| 沂源县| 于都县| 类乌齐县| 锡林浩特市| 汉源县| 岑巩县| 彝良县| 丰镇市| 七台河市| 锡林浩特市| 政和县| 多伦县| 合江县| 赞皇县| 双流县| 防城港市| 宝清县| 武宣县| 嘉禾县|