InnoDB的存儲結構總結 MySQL InnoDB的存儲結構總結

MySQL InnoDB的存儲結構總結

 

  從物理意義上來說,InnoDB表由共享表空間、日誌文件組(redo文件組)、表結構定義文件組成。若將innodb_file_per_table設置爲on,則系統將爲每個表單獨的生成一個table_name.ibd的文件,在此文件中,存儲與該表相關的數據、索引、表的內部數據字典信息。表結構文件則以.frm結尾,這與存儲引擎無關。html

  如下爲InnoDB的表空間結構圖:數據庫

 

在InnoDB存儲引擎中,默認表空間文件是ibdata1,初始化爲10M,且能夠擴展,以下圖所示:服務器

 

  實際上,InnoDB的表空間文件是能夠修改的,使用如下語句就能夠修改:post

Innodb_data_file_path=ibdata1:370M;ibdata2:50M:autoextend性能

  使用共享表空間存儲方式時,Innodb的全部數據保存在一個單獨的表空間裏面,而這個表空間能夠由不少個文件組成,一個表能夠跨多個文件存在,因此其大小限制再也不是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中能夠看到,其表空間的最大限制爲64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,固然這個大小是包括這個表的全部索引等其餘相關數據。url

  而在使用單獨表空間存儲方式時,每一個表的數據以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統的大小限制了。日誌

  如下即爲不一樣平臺下,單獨表空間文件最大限度。htm

Operating System  File-size Limit
Win32 w/ FAT/FAT32  2GB/4GB
Win32 w/ NTFS          2TB (possibly larger)
Linux 2.4+          (using ext3 file system) 4TB
Solaris 9/10          16TB
MacOS X w/ HFS+         2TB
NetWare w/NSS file system  8TBblog

※ 如下是MySQL文檔中的內容:
Windows用戶請注意: FAT和VFAT (FAT32)不適合MySQL的生產使用。應使用NTFS。索引

共享表空間與獨佔表空間能夠經過參數innodb_file_per_table來轉換,若爲1,則開啓獨佔表空間,不然,開啓共享表存儲。

在服務器資源有限,單表數據不是特別多的狀況下, 獨立表空間明顯比共享方式效率更高 . 可是MySQL 默認是共享表空間 。

具體的共享表空間和獨立表空間優缺點以下:

共享表空間:
優勢:
能夠放表空間分紅多個文件存放到各個磁盤上(表空間文件大小不受表大小的限制,如一個表能夠分佈在不一樣步的文件上)。數據和文件放在一塊兒方便管理。
缺點:
全部的數據和索引存放到一個文件中覺得着將有一個很常大的文件,雖然能夠把一個大文件分紅多個小文件,可是多個表及索引在表空間中混合存儲,這樣對於一個表作了大量刪除操做後表空間中將會有大量的空隙,特別是對於統計分析,日值系統這類應用最不適合用共享表空間。

獨立表空間:在配置文件(my.cnf)中設置: innodb_file_per_table

優勢:
1.  每一個表都有自已獨立的表空間。
2.  每一個表的數據和索引都會存在自已的表空間中。
3.  能夠實現單表在不一樣的數據庫中移動。
4.  空間能夠回收(除drop table操做處,表空不能自已回收)
a)         Drop table操做自動回收表空間,若是對於統計分析或是日值表,刪除大量數據後能夠經過:alter table TableName engine=innodb;回縮不用的空間。
b)         對於使innodb-plugin的Innodb使用truncate table也會使空間收縮。
c)         對於使用獨立表空間的表,無論怎麼刪除,表空間的碎片不會太嚴重的影響性能,並且還有機會處理。
缺點:
單表增長過大,如超過100個G。

※ 對於啓用了innodb_file_per_table 的參數選項以後,在每一個表對應的.idb文件內只是存放了數據、索引和插入緩衝,而撤銷(undo)信息,系統事務信息,二次寫緩衝等仍是存放在了原來的共享表空間內。

※ 數據段即B+樹的葉節點,索引段即爲B+樹的非索引節點。

※ InnoDB存儲引擎的管理是由引擎自己完成的,表空間是由分散的頁和段組成。

※ 區由64個連續的頁組成,每一個頁大小爲16K,即每一個區大小爲1MB,建立新表時,先有32頁大小的碎片頁存放數據,使用完後纔是區的申請,(InnoDB最多每次申請4個區,保證數據的順序性能)

※ 頁類型有:數據頁、Undo頁、系統頁、事務數據頁、插入緩衝位圖頁、以及插入緩衝空閒列表頁。

相關文章
相關標籤/搜索