成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因

MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因

熱門標(biāo)簽:百度地圖圖標(biāo)標(biāo)注中心 石家莊電商外呼系統(tǒng) 芒果電話機(jī)器人自動(dòng)化 湖南人工外呼系統(tǒng)多少錢 廣東人工電話機(jī)器人 日照旅游地圖標(biāo)注 信陽穩(wěn)定外呼系統(tǒng)運(yùn)營商 申請外呼電話線路 南通自動(dòng)外呼系統(tǒng)軟件

對于運(yùn)行很長時(shí)間的數(shù)據(jù)庫來說,往往會(huì)出現(xiàn)表占用存儲(chǔ)空間過大的問題,可是將許多沒用的表刪除之后,表文件的大小并沒有改變,想解決這個(gè)問題,就需要了解 InnoDB 如何回收表空間的。

對于一張表來說,占用空間重要分為兩部分,表結(jié)構(gòu)和表數(shù)據(jù)。通常來說,表結(jié)構(gòu)定義占用的空間很小。所以空間的問題主要和表數(shù)據(jù)有關(guān)。

在 MySQL 8.0 前,表結(jié)構(gòu)存儲(chǔ)在以 .frm 為后綴的文件里。在 8.0,允許將表結(jié)構(gòu)定義在系統(tǒng)數(shù)據(jù)表中。

關(guān)于表數(shù)據(jù)的存放

可以將表數(shù)據(jù)存在共享表空間,或者單獨(dú)的文件中,通過 innodb_file_per_table 來控制。

  • 如果為 OFF ,表示存在系統(tǒng)共享表空間中,和數(shù)據(jù)字典一起
  • 如果為 ON,每個(gè) InnoDB 表結(jié)構(gòu)存儲(chǔ)在 .idb 為后綴的文件中

在 5.6.6 以后,默認(rèn)值為 ON.

建議將該參數(shù)設(shè)置為 ON,這樣在不需要時(shí),通過 drop table 命令,系統(tǒng)就會(huì)直接刪除該文件。

但在共享表空間中,即使表刪掉,空間也不會(huì)回收。

truncate = drop + create 

數(shù)據(jù)刪除流程

但有時(shí)使用 delete刪除數(shù)據(jù)時(shí),僅僅刪除的是某些行,但這可能就會(huì)出現(xiàn)表空間沒有被回收的情況。

我們知道,MySQL InnoDB 中采用了 B+ 樹作為存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),也就是常說的索引組織表,并且數(shù)據(jù)時(shí)按照頁來存儲(chǔ)的。

在刪除數(shù)據(jù)時(shí),會(huì)有兩種情況:

  • 刪除數(shù)據(jù)頁中的某些記錄
  • 刪除整個(gè)數(shù)據(jù)頁的內(nèi)容

比如想要?jiǎng)h除 R4 這條記錄:

InnoDB 直接將 R4 這條記錄標(biāo)記為刪除,稱為可復(fù)用的位置。如果之后要插入 ID 在 300 到 700 間的記錄時(shí),就會(huì)復(fù)用該位置。由此可見,磁盤文件的大小并不會(huì)減少。

而且記錄的復(fù)用,只限于符合范圍條件的數(shù)據(jù)。之后要插入 ID 為 800 的記錄,R4 的位置就不能被復(fù)用了。

再比如要是刪除了整個(gè)數(shù)據(jù)頁的內(nèi)容,假設(shè)刪除 R3 R4 R5,為 Page A 數(shù)據(jù)頁。

這時(shí) InnoDB 就會(huì)將整個(gè) Page A 標(biāo)記為刪除狀態(tài),之后整個(gè)數(shù)據(jù)都可以被復(fù)用,沒有范圍的限制。比如要插入 ID=50 的內(nèi)容就可以直接復(fù)用。

并且如果兩個(gè)相鄰的數(shù)據(jù)頁利用率都很小,就會(huì)把兩個(gè)頁中的數(shù)據(jù)合到其中一個(gè)頁上,另一個(gè)頁標(biāo)記為可復(fù)用。

綜上,無論是數(shù)據(jù)行的刪除還是數(shù)據(jù)頁的刪除,都是將其標(biāo)記為刪除的狀態(tài),用于復(fù)用,所以文件并不會(huì)減小。對應(yīng)到具體的操作就是使用 delete 命令.

而且,我們還可以發(fā)現(xiàn),對于第一種刪除記錄的情況,由于復(fù)用時(shí)會(huì)有范圍的限制,所以就會(huì)出現(xiàn)很多空隙的情況,比如刪除 R4,插入的卻是 ID=800.

插入操作也會(huì)造成空隙

在插入數(shù)據(jù)時(shí),如果數(shù)據(jù)按照索引遞增順序插入,索引的結(jié)構(gòu)會(huì)是緊湊的。但如果是隨機(jī)插入的,很可能造成索引數(shù)據(jù)頁分裂。

比如給已滿的 Page A 插入數(shù)據(jù)。

由于 Page A 滿了,所以要申請 Page B,調(diào)整 Page A 的過程到 Page B,這也稱為頁分裂。

結(jié)束后 Page A 就有了空隙。

另外對于更新操作也是,先刪除再插入,也會(huì)造成空隙。

進(jìn)而對于大量進(jìn)行增刪改的表,都有可能存在空洞。如果把空洞去掉,自然空間就被釋放了。

使用重建表

為了把表中的空隙去掉,這時(shí)就可以采用重新建一個(gè)與表 A 結(jié)構(gòu)相同的表 B,然后按照主鍵 ID 遞增的順序,把數(shù)據(jù)依次插入到 B 表中。

由于是順序插入,自然 B 表的空隙不存在,數(shù)據(jù)頁的利用率也更高。之后用表 B 代替表 A,好像起到了收縮表 A 空間的作用。

具體通過:

alter table A engine=InnoDB

在 5.5 版本后,該命令和上面提到的流程差不多,而且 MySQL 會(huì)自己完成數(shù)據(jù),交換表名,刪除舊表的操作。

但這就有一個(gè)問題,在 DDL 中,表 A 不能有更新,此時(shí)有數(shù)據(jù)寫入表 A 的話,就會(huì)造成數(shù)據(jù)丟失。

在 5.6 版本后引入了 Online DDL。

Online DDL

Online DDL 在其基礎(chǔ)上做了如下的更新:

重建表的過程如下:

  1. 建立一個(gè)臨時(shí)文件,掃描表 A 主鍵的所有數(shù)據(jù)頁。
  2. 用生成的數(shù)據(jù)頁生成 B+ 樹,存儲(chǔ)到臨時(shí)文件中。
  3. 生成臨時(shí)文件時(shí),如果有對 A 的操作,將其記錄在日志文件中,對應(yīng)圖中 state 2 的狀態(tài)。
  4. 臨時(shí)文件生成后,將日志文件應(yīng)用到臨時(shí)文件中,得到與 A 表相同的數(shù)據(jù)文件,對應(yīng) state 3 狀態(tài)。
  5. 用臨時(shí)文件替換 A 表的數(shù)據(jù)文件。

由于 row log 日志文件存在,可以在重建表示,對表 A 進(jìn)行 DML 操作。

需要注意的是,在 alter 語句執(zhí)行前,會(huì)先申請 MDL 寫鎖,但在拷貝數(shù)據(jù)前會(huì)退化成 MDL 讀鎖,從而支持 DML 操作。

至于為什么不大 MDL 去掉,是防止其他線程對這個(gè)表同時(shí)做 DDL 操作。

對于大表來說,該操作很耗 IO 和 CPU 資源,所以在線上操作時(shí),要控制操作時(shí)間。如果為了保證安全,推薦使用 gh-ost 來遷移。

Online 和 inplace

首先說一下 inplace 和 copy 的區(qū)別:

在 Online DDL 中,表 A 重建后的數(shù)據(jù)放在 tmp_file 中,這個(gè)臨時(shí)文件是在 InnoDB 內(nèi)部創(chuàng)建出來的。整個(gè) DDL 在 InnoDB 內(nèi)部完成。進(jìn)而對于 Server 層來說,并沒有數(shù)據(jù)移動(dòng)到臨時(shí)表中,是一個(gè) "原地" 操作,所以叫 "inplace" .

而在之前普通的 DDL 中,創(chuàng)建后的表 A 是在 tmp_table 是 Server 創(chuàng)建的,所以叫 "copy"

對應(yīng)到語句其實(shí)就是:

-- alter table t engine=InnoDB 默認(rèn)為下面
alter table t engine=innodb,ALGORITHM=inplace;

-- 走的就是 server 拷貝的過程
alter table t engine=innodb,ALGORITHM=copy;

需要注意的是 inplace 和 Online 并不是對應(yīng)關(guān)系:

  1. DDL 過程是 Online,則一定是 inplace
  2. 如果是 inplace 的 DDL 不應(yīng)當(dāng)是 Online,如在 = 8.0, 添加全文索引和空間索引就屬于這種情況。

拓展

說一下 optimize,analyze,alter table 三種重建表之間的區(qū)別:

  1. alter table t engine = InnoDB(也就是 recreate)默認(rèn)的是 Oline DDL 過程。
  2. analyze table t 不是重建表,僅僅是對表的索引信息做重新統(tǒng)計(jì),沒有修改數(shù)據(jù),期間加 MDL 讀鎖。
  3. optimize table t 等于上兩步的操作。

在事務(wù)里面使用 alter table 默認(rèn)會(huì)自動(dòng)提交事務(wù),保持事務(wù)一致性

如果有時(shí),在重建某張表后,空間不僅沒有變小,甚至還變大了一點(diǎn)點(diǎn)。這時(shí)因?yàn)?,重建的這張表本身沒有空隙,在 DDL 期間,剛好有一些 DML 執(zhí)行,引入了一些新的空隙。

而且 InnoDB 不會(huì)把整張表填滿,每個(gè)頁留下 1/16 給后續(xù)的更新用,所以可能遠(yuǎn)離是緊湊的,但重建后變成的稍有空隙。

總結(jié)

現(xiàn)在我們知道,在使用 delete 刪除數(shù)據(jù)時(shí),其實(shí)對應(yīng)的數(shù)據(jù)行并不是真正的刪除,InnoDB 僅僅是將其標(biāo)記成可復(fù)用的狀態(tài),所以表空間不會(huì)變小。

通常來說,在標(biāo)記復(fù)用空間時(shí)分為兩種,一種是僅將某些數(shù)據(jù)頁中的位置標(biāo)記為刪除狀態(tài),但這樣的位置只會(huì)在一定范圍內(nèi)使用,會(huì)出現(xiàn)空隙的情況。

另一種是將整個(gè)數(shù)據(jù)頁標(biāo)記成可復(fù)用的狀態(tài),這樣的數(shù)據(jù)頁沒有限制,可直接復(fù)用。

為了解決這個(gè)問題,我們可以采用重建表的方式,其中在 5.6 版本后,創(chuàng)建表已經(jīng)支持 Online 的操作,但最后是在業(yè)務(wù)低峰時(shí)使用

以上就是MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因的詳細(xì)內(nèi)容,更多關(guān)于MySQL表文件大小的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MyBatis批量插入/修改/刪除MySql數(shù)據(jù)
  • mysql利用mysqlbinlog命令恢復(fù)誤刪除數(shù)據(jù)的實(shí)現(xiàn)
  • mysql5.7.33誤刪除ibdata文件找回?cái)?shù)據(jù)的方法
  • mysql數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)只保留一條方法實(shí)例
  • mysql 大表批量刪除大量數(shù)據(jù)的實(shí)現(xiàn)方法
  • 淺談為什么MySQL不建議delete刪除數(shù)據(jù)
  • Python批量刪除mysql中千萬級大量數(shù)據(jù)的腳本分享
  • Mysql刪除數(shù)據(jù)以及數(shù)據(jù)表的方法實(shí)例
  • MySQL 快速刪除大量數(shù)據(jù)(千萬級別)的幾種實(shí)踐方案詳解
  • MySQL Delete 刪數(shù)據(jù)后磁盤空間未釋放的原因

標(biāo)簽:牡丹江 惠州 沈陽 天津 阿里 公主嶺 呼和浩特 合肥

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因》,本文關(guān)鍵詞  MySQL,刪除,數(shù)據(jù),表,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    极品裸体白嫩激情啪啪国产精品| 国内成人精品一区| 亚洲综合日韩| 日韩视频在线观看一区| 在线观看你懂得| 韩国版免费三体| 三年中国国语在线播放免费| 妖精视频在线观看免费| 亚洲午夜精品久久久久久久久久久久| 九色精品免费永久在线| 天天爽夜夜爽夜夜爽精品视频| 色爱精品视频一区| 亚洲欧美日韩精品在线| 99亚洲伊人久久精品影院红桃| 国产成人无码精品久久二区三| 亚洲黄色免费av| 日韩免费视频一区二区视频在线观看| 国产三级在线播放| 大桥未久一区二区三区| 国产一区二区三区亚洲| 日本我和搜子同居的日子高清在线| 91久久精品视频| 国产av麻豆mag剧集| 国产日韩一区二区三免费高清| 午夜免费入口| 成人免费毛片app| 欧美做受高潮中文字幕| 天堂网www在线中文天堂| 欧美风情在线视频| 久久www人成免费看片中文| 精品成人免费一区二区在线播放| 成人直播大秀| 亚洲xxxx18| 欧美大片免费播放器| 久久久久人妻一区精品色| 精品成人自拍视频| 亚洲电影成人成人影院| 第一社区sis001原创亚洲| 黄瓜视频网站| 中文字幕资源网在线观看| 欧美精品黑人性xxxx| 欧美精品免费在线观看| 久久久久久一区二区三区| 国产又大又黄又猛| xvideos.蜜桃一区二区| 夜色福利资源站www国产在线视频| 成人精品一二区| 欧美呦呦网站| 伊人精品久久| 日韩在线免费高清视频| 98精品久久久久久久| www免费视频观看在线| 91精品国产高清久久久久久久久| 中文字幕一区二区三区人妻四季| 偷拍女澡堂一区二区三区| 高清国语自产拍免费一区二区三区| 99视频精品全部免费在线视频| 国产精品亚洲人在线观看| xxxxxx欧美| 国产精品福利无圣光在线一区| 国产一区二区视频在线| 91福利在线免费| 在线小视频你懂的| 美女高潮视频在线看| 性金发美女69hd大尺寸| 中文字幕21页在线看| 亚洲成人一区二区三区| 五月婷婷丁香网| 亚洲天堂久久| 国产美女18xxxx免费视频| 北条麻妃一区二区三区在线观看| 91白丝在线| 精彩视频一区二区| 一本一道人人妻人人妻αv| 69国产精品视频免费观看| 欧亚av在线| 91欧美日韩在线| 国产精品萝li| 欧美综合77777色婷婷| 久热免费在线视频| 成人h版在线观看| 亚洲一区在线免费观看| 国产精品久久久久久久久久久久久久久久久久| 亚洲成人手机在线观看| 国产高清在线观看| 91free张津瑜movies| 麻豆影视国产在线观看| 人妻互换一二三区激情视频| 久久国产生活片100| 欧美一级一区二区三区| 久久精品亚洲94久久精品| 国产麻豆视频一区| 国产成人av一区二区| 亚洲国产精品成人综合色在线婷婷| 无码人妻aⅴ一区二区三区日本| 天天色综合色| 91手机在线播放| 亚洲成人av影片| 99久久国产综合精品五月天喷水| 亚洲精品视频一二三区| bbbbbbbbbbb在线视频| 免费国产自久久久久三四区久久| 欧美成人综合在线| 日韩成人在线电影网| 青青草国产一区二区三区| 成人午夜视屏| 中文字幕久久熟女蜜桃| 国产一区二区久久久| 天天免费亚洲黑人免费| 中文字幕人妻精品一区| 日本精品不卡| 激情综合网婷婷| 国产激情视频在线播放| 欧美孕妇孕交xxⅹ孕妇交| 日韩毛片在线免费观看| 日本一级二级视频| 日韩欧美美女一区二区三区| 中文字幕在线播放视频| 久久综合另类图片小说| 中文字幕精品三区| 国产欧美一二三区| www精品国产| 直接在线观看的三级网址| 成人性生交大片免费观看网站| 日韩黄色一级视频| 91精品国产福利在线观看麻豆| 国内精品久久99人妻无码| 国产片一区二区三区| 91女神在线观看| 红桃视频国产一区| 国产精品久久久久久久久免费樱桃| 欧美熟妇精品黑人巨大一二三区| 91免费版网站入口| 天堂va久久久噜噜噜久久va| 一区二区三区回区在观看免费视频| 宅男深夜免费观看视频| av在线无限看| 一卡二卡三卡日韩欧美| 久操视频在线播放| 亚洲一区二区在线免费看| 色多多视频在线观看| 天堂资源最新在线| 欧美久久精品午夜青青大伊人| 九九九在线视频| 国产bdsm视频| 成人免费视频国产免费| 国产精品拍拍拍| 加勒比海盗1在线观看免费国语版| 欧美一区二区三区免费在线看| 五月天欧美精品| 精品视频一区二区观看| 亚洲男人天堂久久| xxxx69·hdxxxxx| 国产精品久久麻豆| 91ts人妖另类精品系列| 精品国产一区二区三区忘忧草| 国产欧美精品久久久| 十大黄色软件免费看| 色偷偷久久一区二区三区| 亚洲美女免费精品视频在线观看| 91午夜在线| 欧美三级午夜理伦三级中文幕| 国产丝袜欧美中文另类| 欧美 日韩 国产 精品| 成片免费观看| 久久久亚洲综合网站| 黄色一级视频免费观看| 亚洲第一页综合| 成年人三级黄色片| 成人午夜电影久久影院| www在线视频观看| av网站免费| 亚洲风情第一页| 欧美日韩一级黄色片| 亚州av乱码久久精品蜜桃| 久久久久久久久久久久久国产精品| 亚州一区二区| 亚洲精品美女久久| 久久综合久久美利坚合众国| 国产麻豆精品高清在线播放| 亚洲精品国产综合区久久久久久久| 视频一区视频二区视频| www视频网站| 日韩女优视频免费观看| 精品国产视频一区二区三区| 日本免费不卡视频| 粉嫩91精品久久久久久久99蜜桃| 国产三级精品网站| 日日夜夜综合网| 欧美私人啪啪vps| 日本丰满少妇做爰爽爽| 国产精品久久久久久久久毛片| 免费无遮挡无码永久在线观看视频| 国产精品免费入口| 欧美大胆视频| 91美女免费看| 国产在线高清精品| 久久久久久久成人| 翡翠波斯猫1977年美国| 亚洲国产尤物| 99亚洲精品| 国产精品国产自产拍在线| 成人短视频在线| 欧美一级淫片videoshd| 亚洲成av人乱码色午夜| 国产自产自拍视频在线观看| 国产精品久久精品国产| 国产日韩成人内射视频| 国产精品videossex撒尿| 久色婷婷小香蕉久久| 亚洲伊人伊色伊影伊综合网| 日韩电影免费在线观看中文字幕| 一区二区三区国产盗摄| 中文字幕视频一区二区三区久| 欧美性色黄大片人与善| 91免费在线视频观看| 国产成人亚洲一区二区三区| 亚洲午夜av| 亚洲一二三四视频| 欧美男人天堂| 日韩欧美国产系列| 欧美一区二区视频在线观看2022| 在线观看免费av网| 国产又大又粗又爽| 亚洲成a人v欧美综合天堂麻豆| 国产特级aaaaaa大片| 夜夜嗨aⅴ一区二区三区| 中文字幕剧情在线观看一区| www.就去干.com| 国产精品久久久一区二区三区| 九九九九热精品免费视频| 国产欧美一区二区三区米奇| 亚洲成年电人电影网站| 先锋在线亚洲| 国产美女无遮挡永久免费| 无圣光视频在线观看| 一道本在线观看视频| 亚洲国产欧美一区二区丝袜黑人| 亚洲va欧美va国产综合剧情| 在线中文字幕视频观看| 国产欧美一区二区三区在线看蜜臂| 91蝌蚪porny成人天涯| 中文字幕亚洲欧美在线| 在线观看一区二区视频| 91福利国产成人精品播放| 成人性生交大片免费看中文视频| 波多结衣在线观看| 日本天堂在线观看| 国产欧美一级| 日韩毛片在线免费看| 自拍偷拍视频亚洲| 精品国产午夜福利| 免费人成自慰网站| 成人精品影院| 国产精品伊人久久| 亚洲av熟女高潮一区二区| 成人自拍偷拍| 日韩精品视频观看| jizz18女人| 欧美一级淫片免费视频| 在线免费观看高清视频色| 欧美日韩在线视频一区| 18成人免费观看网站下载| 久久无码av三级| 欧美影院一区二区三区| 风韵丰满熟妇啪啪区老熟熟女| 后入内射欧美99二区视频| 国产一区清纯| 手机看片国产1024| 欧美涩涩网站| 国产三区在线视频| 久久久久免费视频| 国产日本欧美一区| 亚洲线精品一区二区三区| jizzjizz日本护士免费| 黄无遮挡免费网站| 色婷婷av一区二区三区丝袜美腿| 亚洲无人区码一码二码三码| 中文字幕欧美日本乱码一线二线| 在线播放国产一区中文字幕剧情欧美| 亚洲国产天堂久久综合| 欧美三级日韩三级国产三级| 手机版av在线| 日本激情一区| 爱啪导航一精品导航站| 欧美亚洲三区| 欧美另类极品videosbest视| 中文字幕日韩av综合精品| 国产精品videossex国产高清| 91蜜桃在线免费视频| 日本不卡一二区| 精品免费在线视频| 国产精品偷伦视频免费观看国产| 2018亚洲男人天堂| 26uuu亚洲综合色| 高清乱码免费看污| 青青草免费在线视频观看| 国产精品精品一区二区三区午夜版| eeuss影院在线观看| 国产一区二区三区福利| 国产成人av一区| 久久久久久久久久久国产| 亚洲天堂免费在线观看视频| 国产精品无人区| 啦啦啦免费高清视频在线观看| 国产亚洲精品一区二555| 高潮按摩久久久久久av免费| 日韩午夜激情| 欧美一二三四五区| 欧美福利精品| 少妇高潮一69aⅹ| 久久五月激情| 9久re热视频在线精品| 手机在线视频你懂的| 91精品国产黑色紧身裤美女| 四虎成人永久免费视频| 天堂va久久久噜噜噜久久va| 国产电影一区二区在线观看| 成人片黄网站色大片免费毛片| 欧美日韩国产综合在线| 国产高潮av| 久久99精品国产麻豆婷婷| av丝袜在线| 久久久久亚洲av成人无码电影| 国产精品欧美日韩| 国产成a人无v码亚洲福利| 欧美成人一二三| 久久五月激情|