INNODB 到底能存放多少数据?

简介: 一个INNODB SPACE 最大为64TB,但是为什么这样大呢? 如果我们设置innodb_file_per_table后出现了多个SPACE 那么空间又是多大呢? 先讨论一下INNODB 每个PAGE的 4-8字节为 block 的块号,我们查看一下: (工具为自己编写放到了云盘http://pan.
一个INNODB SPACE 最大为64TB,但是为什么这样大呢?
如果我们设置innodb_file_per_table后出现了多个SPACE 那么空间又是多大呢?

先讨论一下INNODB 每个PAGE的 4-8字节为 block 的块号,我们查看一下:
(工具为自己编写放到了云盘http://pan.baidu.com/s/1num76RJ)
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的数据可能真会成为问题。


相关文章
|
6天前
|
存储 算法 关系型数据库
InnoDb行格式、数据页结构、索引底层原理和如何建立索引
InnoDb行格式、数据页结构、索引底层原理和如何建立索引
69 0
|
6天前
|
存储 关系型数据库 MySQL
InnoDB一棵B+树可以存放多少行数据?
InnoDB一棵B+树可以存放多少行数据?
44 0
InnoDB一棵B+树可以存放多少行数据?
|
6月前
|
存储 算法 关系型数据库
第21章_InnoDB数据页结构
第21章_InnoDB数据页结构
44 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
|
8月前
|
存储 关系型数据库 MySQL
第5章 【MySQL】InnoDB数据页结构
第5章 【MySQL】InnoDB数据页结构
47 0
|
12月前
|
存储 算法 关系型数据库
一文带你了解MySQL之InnoDB 数据页结构
学完了记录结构,我们该学数据页的结构,前边我们简单的提了一下页的概念,它是Innodb管理存储空间的基本单位,页的大小默认16KB,InnoDB为了不同的目的而设计了许多种不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等等等。而我们聚焦的是那些存放我们表中记录的那种类型的页,官方称这种存放记录的页为索引(INDEX)页,鉴于我们还没有了解过索引是个什么东系,而这些表中的记录就是我们日常口中所称的数据,所以目前还是叫这种存放记录的页为数据页吧
334 0
|
SQL 监控 关系型数据库
InnoDB数据页什么时候合并(2)
InnoDB数据页什么时候合并
|
存储 SQL 关系型数据库
InnoDB数据页什么时候合并(1)
InnoDB数据页什么时候合并
|
存储 关系型数据库 MySQL
【Mysql】InnoDB 引擎中的数据页结构
【Mysql】InnoDB 引擎中的数据页结构
【Mysql】InnoDB 引擎中的数据页结构
|
存储 关系型数据库 MySQL
InnoDB(7)数据持久化 --mysql从入门到精通(十二)
InnoDB(7)数据持久化 --mysql从入门到精通(十二)