最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中的ibdata1用法解讀

 更新時(shí)間:2023年03月13日 09:09:31   作者:Omega29  
這篇文章主要介紹了MySQL中的ibdata1用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL的ibdata1用法

系統(tǒng)表空間是InnoDB數(shù)據(jù)字典、雙寫(xiě)緩沖區(qū)、更改緩沖區(qū)和撤消日志的存儲(chǔ)區(qū)域 。

如果表是在系統(tǒng)表空間中創(chuàng)建的,而不是在每個(gè)表文件或通用表空間中創(chuàng)建,則它還可能包含表和索引數(shù)據(jù)。

系統(tǒng)表空間可以有一個(gè)或多個(gè)數(shù)據(jù)文件。默認(rèn)情況下,ibdata1會(huì)在數(shù)據(jù)目錄中創(chuàng)建一個(gè)名為 的系統(tǒng)表空間數(shù)據(jù)文件 。系統(tǒng)表空間數(shù)據(jù)文件的大小和數(shù)量由innodb_data_file_path啟動(dòng)選項(xiàng)定義。

 ibdata1即Innodb data1的縮寫(xiě),是innodb引擎的表空間,用于存放以下內(nèi)容:

  • 數(shù)據(jù)字典Data dictionary:只讀的表,存儲(chǔ)對(duì)象的相關(guān)信息,如占用空間,列的缺省值,約束信息,用戶(hù)名,權(quán)限,審計(jì)信息等;
  • 雙寫(xiě)緩沖區(qū) Double write buffer:Innodb寫(xiě)入數(shù)據(jù)默認(rèn)是16k/pages為一個(gè)單位寫(xiě)入,而磁盤(pán)是4k/page一個(gè)單位,為了防止寫(xiě)入一半,斷電無(wú)法恢復(fù)數(shù)據(jù)的情況發(fā)生,引入了double writer buffer機(jī)制;double write buffer是一段連續(xù)空間,大小2M(128 page),數(shù)據(jù)寫(xiě)入的時(shí)候先寫(xiě)到doublewrite空間,然后再寫(xiě)入到磁盤(pán),如果發(fā)生寫(xiě)入了一個(gè)page一半的時(shí)候斷電,恢復(fù)后會(huì)自動(dòng)從doublewrite中恢復(fù);
  • 插入緩沖區(qū)INSERT BUFFER:針對(duì)輔助索引(非unique),插入數(shù)據(jù)的時(shí)候,先將插入的數(shù)據(jù)在buffer中根據(jù)輔助索引葉子節(jié)點(diǎn)的Page_no排序,而后按照Page_no分批次插入,提高性能;
  • 回滾日志rollback segment: 用于存儲(chǔ)未提交事物,便于用戶(hù)rollback,當(dāng)commit后,數(shù)據(jù)即被標(biāo)記無(wú)效;
  • undo空間 用于存放undo 日志的;用于記錄事物變更前的狀態(tài),如果未commit,其他session可以查看到變更前狀態(tài)
  • 如果innodb_file_per_table=0,則Innodb的數(shù)據(jù)和索引也存儲(chǔ)在ibdata中; (如果為1,則存儲(chǔ)在表名相同的ibd和frm文件中); 如果表數(shù)據(jù)存儲(chǔ)在ibdata中的話(huà),那么刪除表是不會(huì)釋放空間;

mysql 默認(rèn)配置使用 innodb 引擎 innodb_file_per_table 默認(rèn)是關(guān)閉的 , 因此表空間默認(rèn)建立在 ibdata1 上

1 、默認(rèn)情況下 ibdata 存放 InnoDB 表( InnoDB 數(shù)據(jù)字典)元數(shù)據(jù)、 undo logs 、 the change buffer, and the doublewrite buffer

2 、如果 innodb_file_per_table=0( 默認(rèn) =1) ,則 ibdata 也存放 InnoDB 表的實(shí)際數(shù)據(jù),也就是 InnoDB 表建立后,不會(huì)再有單獨(dú)的 tablename.ibd 文件 , 如果是 innodb_file_per_table=1, 存放 在新的表的 ibd 文件當(dāng)中

3 、 雖 然 InnoDB 表 元 數(shù) 據(jù) 通 過(guò) information_schema.tables 來(lái) 讀 取 , 但 是 實(shí) 際 上 information_schema 是一個(gè)虛擬數(shù)據(jù)庫(kù),并不物理存在,這些數(shù)據(jù)真正存放的地方就是 ibdata redo 是寫(xiě)在 ib_logfile 中的 , 不寫(xiě)在 ibdata 中。

導(dǎo)致ibdata1 增長(zhǎng)很快的原因

數(shù)據(jù)庫(kù)中運(yùn)行有長(zhǎng)事務(wù),記錄了大量的UNDO信息,從而導(dǎo)致了ibdata1持續(xù)增長(zhǎng)。

可以通過(guò)show engine innodb status ;命令來(lái)查看。

mysql中并未提供如何查看ibdata1中的存儲(chǔ)內(nèi)容信息??梢允褂霉ぞ?innochecksum 來(lái)看。

ibdata1是什么?

MySQL使用InnoDB引擎的時(shí)候,ibdata1這個(gè)文件會(huì)隨著時(shí)間的增長(zhǎng),會(huì)變得越來(lái)越大,占據(jù)大量的磁盤(pán)空間。

那么,ibdata1里保存了哪些東西,為什么會(huì)變得越來(lái)越大呢,讓我們開(kāi)看看ibdata1的構(gòu)造。

ibdata1是InnoDB的共有表空間,默認(rèn)情況下會(huì)把表空間存放在一個(gè)文件ibdata1中,會(huì)造成這個(gè)文件越來(lái)越大。

發(fā)現(xiàn)問(wèn)題所在之后,解決方法就是,使用獨(dú)享表空間,將表空間分別單獨(dú)存放。MySQL開(kāi)啟獨(dú)享表空間的參數(shù)是Innodb_file_per_table,會(huì)為每個(gè)Innodb表創(chuàng)建一個(gè).ibd的文件。

操作步驟

下面講一下具體的操作。

1) 導(dǎo)出數(shù)據(jù)庫(kù)中所有數(shù)據(jù)

# mysqldump -u root -p --all-database > /tmp/all-database.dump

2) 刪除數(shù)據(jù)庫(kù)中數(shù)據(jù)

# mysql -u root -p
mysql> drop database dbname;

3) 停止MySQL

# /etc/init.d/mysqld stop

4) 刪除ibdata1文件(移動(dòng)到/tmp下)

# mv /var/lib/mysql/ibdata1 /tmp
# mv /var/lib/mysql/ib_logfile0 /tmp
# mv /var/lib/mysql/ib_logfile1 /tmp

5) my.cnf設(shè)定

# vi /etc/my.cnf
開(kāi)啟獨(dú)享表空間,并指定ibdata1大小為1G,ibdata2大小200M,自動(dòng)擴(kuò)張。
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:1G;ibdata2:200M:autoextend
innodb_file_per_table

6) 啟動(dòng)MySQL

# /etc/init.d/mysqld start

7) 導(dǎo)入數(shù)據(jù)

# mysql -u root -p < /tmp/all-database.dump

8) 確認(rèn)

后記

開(kāi)啟獨(dú)享表空間后,并不是說(shuō)就不需要ibdata1了,因?yàn)樵趇bdata1中還保存著下面這些數(shù)據(jù)。

  • InnoDB表的元數(shù)據(jù)
  • Buffer
  • UNDO日志

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql中find_in_set()函數(shù)的使用及in()用法詳解

    mysql中find_in_set()函數(shù)的使用及in()用法詳解

    這篇文章主要介紹了mysql中find_in_set()函數(shù)的使用以及in()用法詳解,需要的朋友可以參考下
    2018-07-07
  • MySQL Like語(yǔ)句的使用方法

    MySQL Like語(yǔ)句的使用方法

    本文介紹一下關(guān)于MySQL查詢(xún)字符串中包含字符的記錄一些常用方法,這里包括有REGEXP、FIND_IN_SET、Like
    2013-11-11
  • MySQL錯(cuò)誤:You can‘t specify target table ‘xxx‘ for update in FROM clause的解決方案

    MySQL錯(cuò)誤:You can‘t specify target table&n

    在編寫(xiě)MySQL的UPDATE或DELETE語(yǔ)句時(shí),如果子查詢(xún)中直接引用了要操作的目標(biāo)表,可能會(huì)遇到一個(gè)常見(jiàn)的錯(cuò)誤:You can’t specify target table ‘xxx’ for update in FROM clause,這個(gè)錯(cuò)誤讓許多開(kāi)發(fā)者感到困惑,本文將深入分析其原因,并提供多種解決方案,
    2025-02-02
  • MySQL 慢查詢(xún)?nèi)罩镜拈_(kāi)啟與配置

    MySQL 慢查詢(xún)?nèi)罩镜拈_(kāi)啟與配置

    這篇文章主要介紹了MySQL 慢查詢(xún)?nèi)罩镜拈_(kāi)啟與配置的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-12-12
  • MySql的優(yōu)化步驟介紹(推薦)

    MySql的優(yōu)化步驟介紹(推薦)

    下面小編就為大家?guī)?lái)一篇MySql的優(yōu)化步驟介紹(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Mysql中Insert into xxx on duplicate key update問(wèn)題

    Mysql中Insert into xxx on duplicate key update問(wèn)題

    在看代碼的過(guò)程中碰到了這一用法,不太理解,google了一下。它的意義其實(shí)是如果在insert語(yǔ)句末尾制定了on duplicate key update語(yǔ)句的話(huà),則當(dāng)插入行會(huì)導(dǎo)致一個(gè)unique索引或者primary key中出現(xiàn)重復(fù)值,則執(zhí)行update中的語(yǔ)句,否則才插入新行
    2012-08-08
  • Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的方法

    Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的方法,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MySql中JOIN的用法示例詳解

    MySql中JOIN的用法示例詳解

    join顧名思義就是連接兩張表,大致分為內(nèi)連接,外連接,右連接,左連接,自然連接,今天通過(guò)本文給大家介紹MySql中JOIN的用法詳解,感興趣的朋友一起看看吧
    2022-03-03
  • MySQL修改密碼方法匯總

    MySQL修改密碼方法匯總

    本文中小編給大家匯總介紹了MySQL修改密碼的方法,分為MySQL5.7版本之前以及MySQL5.7版本之后的修改方法,有需要的小伙伴可以參考下
    2018-08-08
  • mysql刪除無(wú)用用戶(hù)的方法實(shí)現(xiàn)

    mysql刪除無(wú)用用戶(hù)的方法實(shí)現(xiàn)

    本文主要介紹了mysql刪除無(wú)用用戶(hù)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03

最新評(píng)論

云龙县| 兴安盟| 涿鹿县| 聂荣县| 喀什市| 饶阳县| 柯坪县| 城口县| 邓州市| 卢氏县| 洪洞县| 花莲市| 南川市| 宜兴市| 广河县| 长沙县| 安图县| 昭苏县| 崇明县| 庆阳市| 合作市| 延寿县| 宁南县| 宁津县| 富阳市| 香格里拉县| 巢湖市| 甘肃省| 乌拉特中旗| 邛崃市| 九龙城区| 永安市| 剑河县| 太保市| 获嘉县| 元谋县| 兴隆县| 大安市| 宜阳县| 合水县| 宣武区|