INNODB 到底能存放多少資料?

gaopengtttt發表於2016-03-20
一個INNODB SPACE 最大為64TB,但是為什麼這樣大呢?
如果我們設定innodb_file_per_table後出現了多個SPACE 那麼空間又是多大呢?

先討論一下INNODB 每個PAGE的 4-8位元組為 block 的塊號,我們檢視一下:
(工具為自己編寫放到了雲盤)
root@hadoop1 test]# bcview ibdata1 16 4 4|more
******************************************************************
This Tool Is Uesed For Find The Data In Binary format(Hexadecimal)
Usage:./bcview file blocksize offset cnt-bytes!                   
file: Is Your File Will To Find Data!                             
blocksize: Is N kb Block.Eg: 8 Is 8 Kb Blocksize(Oracle)!         
                         Eg: 16 Is 16 Kb Blocksize(Innodb)!       
offset:Is Every Block Offset Your Want Start!                                     
cnt-bytes:Is After Offset,How Bytes Your Want Gets!                               
Edtor QQ:22389860!                                                
Used gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)                
******************************************************************
----Current file size is :140.000000 Mb
----Current use set blockszie is 16 Kb
current block:00000000--Offset:00004--cnt bytes:04--data is:00000000
current block:00000001--Offset:00004--cnt bytes:04--data is:00000001
current block:00000002--Offset:00004--cnt bytes:04--data is:00000002
current block:00000003--Offset:00004--cnt bytes:04--data is:00000003
current block:00000004--Offset:00004--cnt bytes:04--data is:00000004
current block:00000005--Offset:00004--cnt bytes:04--data is:00000005
current block:00000006--Offset:00004--cnt bytes:04--data is:00000006
current block:00000007--Offset:00004--cnt bytes:04--data is:00000007
current block:00000008--Offset:00004--cnt bytes:04--data is:00000008
current block:00000009--Offset:00004--cnt bytes:04--data is:00000009
current block:00000010--Offset:00004--cnt bytes:04--data is:0000000a
current block:00000011--Offset:00004--cnt bytes:04--data is:0000000b
current block:00000012--Offset:00004--cnt bytes:04--data is:0000000c
current block:00000013--Offset:00004--cnt bytes:04--data is:0000000d
current block:00000014--Offset:00004--cnt bytes:04--data is:0000000e
current block:00000015--Offset:00004--cnt bytes:04--data is:0000000f
省略......


如此我們能夠明確的看到確實每個塊的 4-8位元組為 block 的塊號,他們是連續的。
那麼一個問題來了,4位元組,最大為32位那最大數應該是2^32,而每個塊是16K(預設情況)
那麼一個SPACE為 16KB*2^32=64T,當然這個還受到具體檔案系統限制。
那麼如果有多個SPACE設定了引數innodb_file_per_table 那麼就會更大,因為每個SPACE 都偶有64T
不過64T對於現在的MYSQL來說也是一個海量了,因為現在的MYSQL還存在很多不如意的地方,真正
管理64T的資料可能真會成為問題。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2060586/,如需轉載,請註明出處,否則將追究法律責任。

相關文章