9.為什么表數(shù)據(jù)刪掉一半眉孩,表文件大小不變2022-02-21

一、表的空間是怎么回收的勒葱?

InnoDB包含了兩個部分:表結(jié)構(gòu)定義和數(shù)據(jù)浪汪;在MySQL8.0前表結(jié)構(gòu)是存在以.frm為后綴的文件里,8.0及之后已經(jīng)允許放在系統(tǒng)數(shù)據(jù)表中凛虽,因為表結(jié)構(gòu)占用空間很小死遭。

1.怎么控制InnoDB表的表結(jié)構(gòu)存放位置

innodb_file_per_table : MySQL5.6.6之后默認(rèn)是ON
ON:每個InnDB的表數(shù)據(jù)存在一個以.ibd為后綴的文件中;
OFF:表的數(shù)據(jù)放在系統(tǒng)共享表空間凯旋,也就是跟數(shù)據(jù)字典放在一起呀潭;

建議設(shè)置

建議設(shè)置為ON,因為如果需要刪除表至非,設(shè)置為ON钠署,執(zhí)行drop table 命令也會刪除.ibd文件,會回收表結(jié)構(gòu)的空間荒椭;設(shè)置為OFF雖然把表刪了也不會回收表結(jié)構(gòu)的空間谐鼎。

2.數(shù)據(jù)的刪除流程

DQL(查詢):查詢數(shù)據(jù):select語句(最常用)
DML(操縱):表數(shù)據(jù)的增刪改,insert趣惠、update该面、delete
DDL(定義):對表的增刪改,create信卡、drop、alter
DCL(控制):grant授權(quán)题造、revoke撤消等
TCL(事務(wù)控制):commit事務(wù)提交傍菇、rollback回滾事務(wù)

(1)什么叫數(shù)據(jù)的“空洞”?
數(shù)據(jù)在刪除的時候界赔,表結(jié)構(gòu)InnDB的索引是以B+tree的形式儲存的丢习,當(dāng)刪除某個數(shù)據(jù)時,只會把該子葉子節(jié)點的數(shù)據(jù)標(biāo)記淮悼,不會立即釋放空間咐低,只有有一條記錄的索引等于該值時才會復(fù)用這個位置。
我們直到mysql都是以數(shù)據(jù)頁的形式儲存的袜腥,如果整個數(shù)據(jù)頁都被標(biāo)記见擦,那么新增數(shù)據(jù)在該數(shù)據(jù)頁的范圍值內(nèi),就可以直接復(fù)用。
當(dāng)相鄰兩個數(shù)據(jù)頁的數(shù)據(jù)都比較少時鲤屡,兩個數(shù)據(jù)頁的數(shù)據(jù)會合在一起损痰,騰出一個新的數(shù)據(jù)頁被標(biāo)記為可復(fù)用。
delete命令刪除表時酒来,都會把刪除的位置標(biāo)記卢未,認(rèn)為是可復(fù)用,我們把那些沒有被復(fù)用到的位置稱為空洞堰汉。
(2)怎么解決空洞問題呢辽社?
重建表

2.怎么重建表?

用語句:

alert table t engine=InnoDB

(1)請簡述重建表的過程:
在MySQL5.6之后翘鸭,重建表支持Online DDL(在重建表時滴铅,可以有DDL操作)的操作:

  • 建立一個臨時文件,記錄掃描表t的數(shù)據(jù)頁
  • 用數(shù)據(jù)頁表t的記錄生成B+tree矮固,記錄臨時文件
  • 在生成記錄臨時文件的過程中失息,對表t的操作記錄到日志文件 row log,
    -把row log日志文件的記錄寫入到臨時文件的得到邏輯上與表t相同的文件
  • 用臨時文件把表t替換
    (2)DDL 之前是要拿 MDL 寫鎖的档址,這樣還能叫 Online DDL 嗎盹兢?
    在執(zhí)行alert之后是會獲取MDL寫鎖的,但是在復(fù)制數(shù)據(jù)的時候會退化成MDL讀鎖守伸,這個時候是可以修改數(shù)據(jù)的绎秒。
    為什么不直接放開MDL鎖呢?
    因為要禁止其它線程對表DDL
    所以在整個DDL過程來說尼摹,鎖的時間非常短见芹,所以可以看做是Online DDL
    (3)在生產(chǎn)中一般怎么使用
    在生產(chǎn)中一般數(shù)據(jù)量比較大的數(shù)據(jù)庫來說的話,因為會對整個表掃描和建立臨時文件是非常消耗io和cpu的蠢涝,建議使用Githud開源的gh-ost
    gh-ost是什么玄呛?
    是一個開源的縮小表空間的工具。
3.DDL online 和 inplace的區(qū)別

DDL online和inplace是包含與被包含的關(guān)系和二,online一定是inplace徘铝,反之亦然。截止到 MySQL 8.0惯吕,添加全文索引(FULLTEXT index)和空間索引 (SPATIAL index) 就屬于這種情況

 alter table t add FULLTEXT(field_name);

這個過程是 inplace 的惕它,但會阻塞增刪改操作,是非 Online 的废登。

二淹魄、思考題

假設(shè)現(xiàn)在有人碰到了一個“想要收縮表空間,結(jié)果適得其反”的情況堡距,看上去是這樣的:一個表 t 文件大小為 1TB甲锡;對這個表執(zhí)行 alter table t engine=InnoDB兆蕉;發(fā)現(xiàn)執(zhí)行完成后,空間不僅沒變小搔体,還稍微大了一點兒恨樟,比如變成了 1.01TB。你覺得可能是什么原因呢 疚俱?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劝术,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呆奕,更是在濱河造成了極大的恐慌养晋,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梁钾,死亡現(xiàn)場離奇詭異绳泉,居然都是意外死亡,警方通過查閱死者的電腦和手機姆泻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門零酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拇勃,你說我怎么就攤上這事四苇。” “怎么了方咆?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵月腋,是天一觀的道長。 經(jīng)常有香客問我瓣赂,道長榆骚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任煌集,我火速辦了婚禮妓肢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苫纤。我一直安慰自己职恳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布方面。 她就那樣靜靜地躺著,像睡著了一般色徘。 火紅的嫁衣襯著肌膚如雪恭金。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天褂策,我揣著相機與錄音横腿,去河邊找鬼颓屑。 笑死,一個胖子當(dāng)著我的面吹牛耿焊,可吹牛的內(nèi)容都是我干的揪惦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼罗侯,長吁一口氣:“原來是場噩夢啊……” “哼器腋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钩杰,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤纫塌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讲弄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體措左,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年避除,在試婚紗的時候發(fā)現(xiàn)自己被綠了怎披。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓶摆,死狀恐怖凉逛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赏壹,我是刑警寧澤鱼炒,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蝌借,受9級特大地震影響昔瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菩佑,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一自晰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稍坯,春花似錦酬荞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勤揩,卻和暖如春咧党,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陨亡。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工傍衡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留深员,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓蛙埂,卻偏偏與公主長得像倦畅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绣的,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容