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

溫馨提示×

溫馨提示×

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

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

MySQL占用空間后越刪越大的示例分析

發布時間:2022-01-06 17:17:13 來源:億速云 閱讀:145 作者:柒染 欄目:云計算

今天就跟大家聊聊有關MySQL占用空間后越刪越大的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

你MySQL中查詢回表

話說有一天,我心血來潮。登錄阿里云,發現 RDS 占用的空間挺大的。想起有一張表,當初設計的不好,沒用的數據挺多的。就想著刪除清理一部分數據,節約空間。

說做就做,一條 delete 語句,如下:

MySQL占用空間后越刪越大的示例分析

沒想到意外發生了,刪除幾十萬條數據后,我再去查看 RDS 占用的數據空間,不僅沒降,還上升了。這是怎么回事?

MySQL占用空間后越刪越大的示例分析

這個問題可能很多人都沒有注意到。平時大家的關注點可能都不在這方面。

我把這個數據刪除后,阿里云立馬發郵件報警,說我們的 RDS 存儲空間過大,沒辦法,當初知識水平有限。就又花公司的錢,升級了存儲空間。

這個問題一直困惑著我,直到兩年前看了《高性能MySQL》。而今天剛好又有一個網友私信我,我想起了這件事。所以,今天就給大家解惑一下,為什么會這樣。

第一個就是網上很多人所說的那樣,這是一個MySQL的BUG,直到MySQL 5.7 版本才解決。由于我們當初選的是 MySQL 5.6 的版本,出現這個問題后,也咨詢了阿里云。但是阿里云給出的答復是只能進行數據遷移,雖然MySQL5.7版本,可以解決這個問題,但是阿里云的MySQL5.6的版本并不能直接升級到5.7。而遷移數據庫也太浪費時間和精力了,搞不好,再把主要數據給丟失了。BOSS 非剁了我不可。

第二個我要說的就是 MySQL 5.6中默認是獨立表空間,如果采用獨立表存儲模式,data 中還會產生 report_site_day.ibd 這類文件(存儲數據信息和索引信息)。而刪除的時候,它不會被刪除。

第三個就是 MySQL 對于刪除的功能的底層實現,并不是大家想象的那樣,執行 delete 就真的給刪除了。而是當你使用 delete 刪除的時候,MySQL 并沒有把數據文件刪除,而是將數據文件的標識位刪除,沒有整理文件,因此不會徹底釋放空間。被刪除的數據將會被保存在一個鏈接清單中,當有新數據寫入的時候,MySQL 會利用這些已刪除的空間再寫入。即,刪除操作會帶來一些數據碎片,正是這些碎片在占用硬盤空間。

關于數據遷移也會帶來一些問題,這個我們下一章再說。今天我先說一下,MySQL 官方推薦的 OPTIMIZE TABLE 命令來清理優化表 InnoDB 空間的做法。

OPTIMIZE TABLE 命令的格式如下:

MySQL占用空間后越刪越大的示例分析

具體的用法如下:

MySQL占用空間后越刪越大的示例分析

或者,你也可以這樣批量生成優化所有表的 SQL,再復制出來執行:

MySQL占用空間后越刪越大的示例分析

除此之外,我們還還可以把表設置為單表存儲的形式,這樣每個表中的數據單獨存儲,在刪除數據的時候,會隨著數據的刪除而釋放存儲空間。

MySQL占用空間后越刪越大的示例分析

至于數據遷移,我們可以先備份后刪除然后進行導入。

MySQL占用空間后越刪越大的示例分析


看完上述內容,你們對MySQL占用空間后越刪越大的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

海晏县| 循化| 屏边| 阳江市| 永和县| 万源市| 青浦区| 大同县| 堆龙德庆县| 伊宁县| 聂拉木县| 镇雄县| 固镇县| 砚山县| 黎川县| 和田县| 阿拉善盟| 奉节县| 中卫市| 霍山县| 班戈县| 和林格尔县| 惠州市| 贵州省| 永靖县| 新和县| 凤山市| 额敏县| 黄冈市| 开平市| 封开县| 惠安县| 新昌县| 霍林郭勒市| 麻城市| 读书| 资源县| 金川县| 湖口县| 平乡县| 留坝县|