数据库引擎
About 2 min
MyISAM
InnoDB
可以存多少数据
想要知道这个,我们就需要知道
- 计算机中,磁盘存储数据的最小单元是扇区,一个扇区占512字节。
- 文件系统中,最小单位是块,一个块大小就是4K。
- InnoDB存储引擎最小存储单元是页,一页大小是4块,即16K。所以InnoDB读取一次将会读取16K的内容。
生产环境中,B+树得高度在3-4层,叶子节点在最后一层,则有2-3层为索引层。
再结合B+树中,叶子节点存储数据,非叶子节点存储键值-指针,即索引-指针(注意这里考虑的是主键索引,因为只有主键索引的B+树才会存储数据)。
假设索引为ID,long类型(8字节),指针在InnoDB中一个指针大小为8字节(实际上是6字节),所以在非叶子节点中一条数据就是8+8=16字节。那么总共能存储的数据条数为:
第一层存储的索引节点 x 第二层存储的索引节点 x 第三层存储的索引节点,即
或
假设每条数据占1K字节,那么一个叶子节点可以存16K/1K = 16条数据
所以能存放的数据量为:1048567 * 16 = 16777216 条数据,即三层就能实现千万级(16G)存储。
当然这里也需要说明一下,这是因为主键声明的较小,如果主键索引数据量*10,那么级别就会降低为十万级。