真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么理解MySQLInnoDB的存儲結構

這篇文章將為大家詳細講解有關怎么理解MySQL InnoDB的存儲結構,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

創(chuàng)新互聯(lián)公司2013年成立,先為黔西南州等服務建站,黔西南州等地企業(yè),進行企業(yè)商務咨詢服務。為黔西南州企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

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


以下為InnoDB的表空間結構圖:

怎么理解MySQL InnoDB的存儲結構

在InnoDB存儲引擎中,默認表空間文件是ibdata1,初始化為10M,且可以擴展,如下圖所示:
怎么理解MySQL InnoDB的存儲結構
實際上,InnoDB的表空間文件是可以修改的,使用以下語句就可以修改:

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


使用共享表空間存儲方式時,Innodb的所有數(shù)據(jù)保存在一個單獨的表空間里面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在,所以其大小限制不再是文件大小的限制,
而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,當然這個大小是包括這個表的所有索引等其他相關數(shù)據(jù)。

而在使用單獨表空間存儲方式時,每個表的數(shù)據(jù)以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統(tǒng)的大小限制了。

以下即為不同平臺下,單獨表空間文件最大限度。

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  8TB


※ 以下是MySQL文檔中的內(nèi)容:
Windows用戶請注意: FAT和VFAT (FAT32)不適合MySQL的生產(chǎn)使用。應使用NTFS。


共享表空間與獨占表空間可以通過參數(shù)innodb_file_per_table來轉(zhuǎn)換,若為1,則開啟獨占表空間,否則,開啟共享表存儲。


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


具體的共享表空間和獨立表空間優(yōu)缺點如下:


共享表空間:
優(yōu)點:
可以放表空間分成多個文件存放到各個磁盤上(表空間文件大小不受表大小的限制,如一個表可以分布在不同步的文件上)。數(shù)據(jù)和文件放在一起方便管理。
缺點:
所有的數(shù)據(jù)和索引存放到一個文件中以為著將有一個很常大的文件,雖然可以把一個大文件分成多個小文件,但是多個表及索引在表空間中混合存儲,這樣對于一個表做了大量刪除操作后表空間中將會
有大量的空隙,特別是對于統(tǒng)計分析,日值系統(tǒng)這類應用最不適合用共享表空間。


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


優(yōu)點:
1.  每個表都有自已獨立的表空間。
2.  每個表的數(shù)據(jù)和索引都會存在自已的表空間中。
3.  可以實現(xiàn)單表在不同的數(shù)據(jù)庫中移動。
4.  空間可以回收(除drop table操作處,表空不能自已回收)
a)         Drop table操作自動回收表空間,如果對于統(tǒng)計分析或是日值表,刪除大量數(shù)據(jù)后可以通過:alter table TableName engine=innodb;回縮不用的空間。
b)         對于使innodb-plugin的Innodb使用truncate table也會使空間收縮。
c)         對于使用獨立表空間的表,不管怎么刪除,表空間的碎片不會太嚴重的影響性能,而且還有機會處理。
缺點:
單表增加過大,如超過100個G。


※ 對于啟用了innodb_file_per_table 的參數(shù)選項之后,在每個表對應的.idb文件內(nèi)只是存放了數(shù)據(jù)、索引和插入緩沖,而撤銷(undo)信息,系統(tǒng)事務信息,二次寫緩沖等還是存放在了原來的共享表空間內(nèi)。


※ 數(shù)據(jù)段即B+樹的葉節(jié)點,索引段即為B+樹的非索引節(jié)點。


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


※ 區(qū)由64個連續(xù)的頁組成,每個頁大小為16K,即每個區(qū)大小為1MB,創(chuàng)建新表時,先有32頁大小的碎片頁存放數(shù)據(jù),使用完后才是區(qū)的申請,(InnoDB最多每次申請4個區(qū),保證數(shù)據(jù)的順序性能)

※ 頁類型有:數(shù)據(jù)頁、Undo頁、系統(tǒng)頁、事務數(shù)據(jù)頁、插入緩沖位圖頁、以及插入緩沖空閑列表頁。

關于怎么理解MySQL InnoDB的存儲結構就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享文章:怎么理解MySQLInnoDB的存儲結構
分享路徑:http://weahome.cn/article/jpcjjo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部