亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中的ibdata1用法解讀

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

MySQL的ibdata1用法

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

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

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

 ibdata1即Innodb data1的縮寫,是innodb引擎的表空間,用于存放以下內容:

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

mysql 默認配置使用 innodb 引擎 innodb_file_per_table 默認是關閉的 , 因此表空間默認建立在 ibdata1 上

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

2 、如果 innodb_file_per_table=0( 默認 =1) ,則 ibdata 也存放 InnoDB 表的實際數據,也就是 InnoDB 表建立后,不會再有單獨的 tablename.ibd 文件 , 如果是 innodb_file_per_table=1, 存放 在新的表的 ibd 文件當中

3 、 雖 然 InnoDB 表 元 數 據 通 過 information_schema.tables 來 讀 取 , 但 是 實 際 上 information_schema 是一個虛擬數據庫,并不物理存在,這些數據真正存放的地方就是 ibdata redo 是寫在 ib_logfile 中的 , 不寫在 ibdata 中。

導致ibdata1 增長很快的原因

數據庫中運行有長事務,記錄了大量的UNDO信息,從而導致了ibdata1持續(xù)增長。

可以通過show engine innodb status ;命令來查看。

mysql中并未提供如何查看ibdata1中的存儲內容信息??梢允褂霉ぞ?innochecksum 來看。

ibdata1是什么?

MySQL使用InnoDB引擎的時候,ibdata1這個文件會隨著時間的增長,會變得越來越大,占據大量的磁盤空間。

那么,ibdata1里保存了哪些東西,為什么會變得越來越大呢,讓我們開看看ibdata1的構造。

ibdata1是InnoDB的共有表空間,默認情況下會把表空間存放在一個文件ibdata1中,會造成這個文件越來越大。

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

操作步驟

下面講一下具體的操作。

1) 導出數據庫中所有數據

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

2) 刪除數據庫中數據

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

3) 停止MySQL

# /etc/init.d/mysqld stop

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

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

5) my.cnf設定

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

6) 啟動MySQL

# /etc/init.d/mysqld start

7) 導入數據

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

8) 確認

后記

開啟獨享表空間后,并不是說就不需要ibdata1了,因為在ibdata1中還保存著下面這些數據。

  • InnoDB表的元數據
  • Buffer
  • UNDO日志

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mysql大表全表update的的實現

    Mysql大表全表update的的實現

    有些時候在進行一些業(yè)務迭代時需要我們對Mysql表中數據進行全表update,本文主要介紹了Mysql大表update的的實現
    2024-08-08
  • MySQL中一條SQL查詢語句是如何執(zhí)行的

    MySQL中一條SQL查詢語句是如何執(zhí)行的

    在寫SQL查詢語句的時候,通常要考慮SQL語句的查詢效率,了解SQL查詢語句的執(zhí)行順序,可以讓我們寫出更好的SQL語句,下面這篇文章主要給大家介紹了關于MySQL中一條SQL查詢語句是如何執(zhí)行的相關資料,需要的朋友可以參考下
    2022-04-04
  • mariadb集群搭建---Galera Cluster+ProxySQL教程

    mariadb集群搭建---Galera Cluster+ProxySQL教程

    這篇文章主要介紹了mariadb集群搭建---Galera Cluster+ProxySQL教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 如何查看MySQL數據庫中使用的引擎類型

    如何查看MySQL數據庫中使用的引擎類型

    MySQL是目前使用最廣泛的開源關系型數據庫管理系統(tǒng)之一,它支持多種不同的數據存儲引擎,以方便地查看MySQL數據庫中使用的引擎類型,在實際應用中,選擇合適的存儲引擎類型可以提高數據庫的性能和穩(wěn)定性,
    2023-10-10
  • 簡單解決Windows中MySQL的中文亂碼與服務啟動問題

    簡單解決Windows中MySQL的中文亂碼與服務啟動問題

    這篇文章主要介紹了Windows中MySQL的中文亂碼與服務啟動問題,如果程序沒有特殊需要則建議MySQL盡量默認設為UTF-8格式編碼,需要的朋友可以參考下
    2016-03-03
  • MySQL主從復制搭建流程分步實現

    MySQL主從復制搭建流程分步實現

    這篇文章主要介紹了MySQL的主從復制原理詳細分析,讀寫分離是基于主從復制來實現的。文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-11-11
  • MySQL學習第二天 安裝和配置mysql winx64

    MySQL學習第二天 安裝和配置mysql winx64

    MySQL學習第二天,主要為大家詳細介紹了在Windows 64位操作系統(tǒng)下安裝和配置MySQL的具體步驟,整理一份mysql winx64安裝配置方法教程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 分析mysql中一條SQL查詢語句是如何執(zhí)行的

    分析mysql中一條SQL查詢語句是如何執(zhí)行的

    為了充分發(fā)揮MySQL的性能并順利地使用,就必須正確理解其設計思想,因此,了解MySQL的邏輯架構是必要的。本文將通過一條SQL查詢語句的具體執(zhí)行過程來詳細介紹MySQL架構中的各個組件
    2021-06-06
  • mysql查詢表里的重復數據方法

    mysql查詢表里的重復數據方法

    這篇文章主要介紹了mysql查詢表里的重復數據方法,需要的朋友可以參考下
    2017-05-05
  • MySQL 5.5的max_allowed_packet屬性的修改方法

    MySQL 5.5的max_allowed_packet屬性的修改方法

    今天在部署一個實驗系統(tǒng)的時候,報錯提示需要修改一下MySQL的配置文件,在修改的時候是有技巧的,大家可以參考下本文嘗試操作下
    2013-08-08

最新評論