欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一次mysql的.ibd文件過大處理過程記錄

 更新時(shí)間:2022年06月29日 11:20:04   作者:精神病院里病最重的人  
mysql數(shù)據(jù)庫的每個(gè)表都有ibd和frm兩種格式的文件,ibd文件是表的數(shù)據(jù)文件,存放表的數(shù)據(jù),修改文件后綴,無法在MySQL數(shù)據(jù)庫中查詢表數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于一次mysql的.ibd文件過大處理過程的相關(guān)資料,需要的朋友可以參考下

一條zabbix微信的磁盤告警打破了往常的寧靜

收到告警之后發(fā)現(xiàn)是mysql的datadir目錄,按著平時(shí)習(xí)慣開始排查;過程就不說了,最后發(fā)現(xiàn)某個(gè)庫的目錄大小異常,然后進(jìn)去查看之后發(fā)現(xiàn)jdp_tb_trade.ibd過大,達(dá)到46G;跟真實(shí)數(shù)據(jù)量不符,就此打算對它下手處理。

那么,我們知道ibd文件是每個(gè)數(shù)據(jù)庫里面每個(gè)表的數(shù)據(jù)空間,每個(gè)表的數(shù)據(jù)和索引都會存在自已的表空間中。

這么重要的東西肯定不能直接在線上操作,畢竟之前完全不知道處理這個(gè)東西會產(chǎn)生什么影響,那接下來就是測試環(huán)境的再現(xiàn)過程了:

測試環(huán)境:配置直接cp線上的my.cnf

然后建庫建表,插入數(shù)據(jù),使該表的ibd文件增大

最后如圖:

該文件46G,表里面的數(shù)據(jù)也有八百多萬條,接下來就是再現(xiàn)線上環(huán)境的操作了(線上環(huán)境增刪操作多),先刪個(gè)10數(shù)據(jù),并且用優(yōu)化命令對該表進(jìn)行優(yōu)化(optimize):

但是發(fā)現(xiàn)在等待該命令執(zhí)行結(jié)果的過程中,根目錄一直在增長:

直到跟目錄被占用百分百之后,優(yōu)化命令報(bào)錯(cuò)了:

報(bào)錯(cuò)之后跟目錄空間瞬間釋放了:

這里我當(dāng)時(shí)猜想到是因?yàn)榕R時(shí)表的問題,但是不知道怎么改臨時(shí)表的存儲目錄,那肯定是不懂就問。

問了DBA 大佬后,說是修改tmpdir參數(shù)即可(默認(rèn)是指向tmp目錄):

熟練的vim my.cnf

在[mysqld]下添加:

tmpdir = /ssd_data2/158mysql/107.sla

重啟mysql實(shí)例

在mysql命令符下查看該參數(shù)目錄是否生效:

那就再執(zhí)行一遍優(yōu)化命令:

成功了,文件也縮小了一個(gè)G。

接下來我又進(jìn)一步測試,刪除表里面數(shù)據(jù),只保留10萬條數(shù)據(jù);再執(zhí)行optimize命令,并且觀察目錄占用大小情況:

這里值得一提的是:optimize命令執(zhí)行時(shí)間只用了15分鐘,通過觀察目錄的變化發(fā)現(xiàn)臨時(shí)表大小大概在45G左右。

接下來是總結(jié):

1)我原以為做一些小小的改動(只刪除了10條數(shù)據(jù))會很快得到實(shí)驗(yàn)的結(jié)果,結(jié)果可以在圖上面看到optimize命令執(zhí)行了一個(gè)半小時(shí);但是后面我再一次測試發(fā)現(xiàn)只用了15分鐘,可能是服務(wù)器上其他業(yè)務(wù)影響了,時(shí)間上不好下結(jié)論。
這個(gè)命令會產(chǎn)生鎖表的效應(yīng),所以時(shí)間上需要注意。

2)學(xué)習(xí)知識點(diǎn):

1、ibd文件為何物,里面是放什么東西的:
上面也說到,是放表的元數(shù)據(jù),索引。

2、optimize這個(gè)命令的相關(guān)知識,會對數(shù)據(jù)庫造成什么影響等:
已知有:
執(zhí)行過程中會鎖表
會產(chǎn)生臨時(shí)表,占用一定的空間
會影響主從延遲
(歡迎留言補(bǔ)充)

3、tmpdir這個(gè)參數(shù):
臨時(shí)表指定存放目錄
可以跟innodb_tmpdir參數(shù)對比學(xué)習(xí)

4、這里要提一個(gè)參數(shù) “innodb_file_per_table=1”
配置文件里最好把這個(gè)參數(shù)打開,因?yàn)樯a(chǎn)環(huán)境用的是innoDB的引擎,然后innodb會默認(rèn)將所有庫的表數(shù)據(jù)都存儲在一個(gè)共享空間中:ibdata1,這樣不方便我們平時(shí)的優(yōu)化。
該參數(shù)是讓每個(gè)表都會產(chǎn)生一個(gè)獨(dú)立的ibd文件(也就是數(shù)據(jù)空間)

3)為什么會產(chǎn)生這樣的事情呢?:

個(gè)人理解:平時(shí)我們刪除數(shù)據(jù)時(shí),會使得表的ibd文件產(chǎn)生空隙:也就是說,刪除數(shù)據(jù)之后它會傻傻的空在哪里,如果沒有數(shù)據(jù)補(bǔ)進(jìn)來就會一直空著;然后重復(fù)這增加,刪除一系列操作之后,該文件隨著時(shí)間的推移變得越來越大。

目前我所知沒有特別好的辦法避免這一點(diǎn),不過定時(shí)優(yōu)化就好;

總結(jié)

到此這篇關(guān)于一次mysql的.ibd文件過大處理過程的文章就介紹到這了,更多相關(guān)mysql .ibd文件過大處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MYSQL表中某字段所有值大小寫轉(zhuǎn)換

    MYSQL表中某字段所有值大小寫轉(zhuǎn)換

    這篇文章主要為大家介紹了MYSQL表中某字段所有值大小寫轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • MySQL鎖情況查看命令

    MySQL鎖情況查看命令

    本文主要介紹了MySQL鎖情況查看命令,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Mysql5.6.36腳本編譯安裝及初始化教程

    Mysql5.6.36腳本編譯安裝及初始化教程

    這篇文章主要為大家詳細(xì)介紹了Mysql5.6.36腳本編譯安裝及初始化的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • MySQL表中添加數(shù)據(jù)的方法

    MySQL表中添加數(shù)據(jù)的方法

    這篇文章主要介紹了MySQL表中添加數(shù)據(jù)的方法,本文通過sql語句給大家詳細(xì)講解,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • Mac操作系統(tǒng)下MySQL密碼忘記后重置密碼的方法

    Mac操作系統(tǒng)下MySQL密碼忘記后重置密碼的方法

    本文給大家介紹Mac下忘記MySQL密碼后重置密碼的方法,下面通過關(guān)閉mysql服務(wù)器,配置短命令相關(guān)操作,完成重置密碼功能,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友可以參考下
    2016-06-06
  • mysql刪除表數(shù)據(jù)如何恢復(fù)

    mysql刪除表數(shù)據(jù)如何恢復(fù)

    這篇文章主要介紹了mysql刪除表數(shù)據(jù)如何恢復(fù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL 基礎(chǔ)常用命令總結(jié)

    MySQL 基礎(chǔ)常用命令總結(jié)

    這篇文章主要介紹了MySQL 的基礎(chǔ)常用命令,在執(zhí)行語句的時(shí)候,很多命令都是必須記住的,想具體了解的小伙伴請參考下面文章內(nèi)容
    2021-09-09
  • MySQL數(shù)據(jù)庫復(fù)合查詢操作實(shí)戰(zhàn)

    MySQL數(shù)據(jù)庫復(fù)合查詢操作實(shí)戰(zhàn)

    mysql表的查詢都是對一張表進(jìn)行查詢,在實(shí)際開發(fā)中這遠(yuǎn)遠(yuǎn)不夠,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫復(fù)合查詢的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • win10下mysql5.7.21安裝詳細(xì)過程

    win10下mysql5.7.21安裝詳細(xì)過程

    這篇文章主要為大家詳細(xì)介紹了win10下mysql5.7.21安裝的詳細(xì)過程,以及安裝Mysql 5.7.21遇到的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • mysql數(shù)據(jù)庫導(dǎo)出xml的實(shí)現(xiàn)方法

    mysql數(shù)據(jù)庫導(dǎo)出xml的實(shí)現(xiàn)方法

    因?yàn)橛腥藛柕饺绾螌ysql數(shù)據(jù)庫導(dǎo)出為xml文件,所以發(fā)現(xiàn)了這篇文章
    2008-09-09

最新評論