首页   快速返回

MySQL InnoDB存储结构     所属分类 mysql
InnoDB表由共享表空间、日志文件组(redo文件组)、表结构定义文件组成。
若将innodb_file_per_table设置为on,每一个表单独一个table_name.ibd的文件,
存储与该表相关的数据、索引、表的内部数据字典信息。
表结构文件 .frm ,这与存储引擎无关。



默认表空间文件是ibdata1,初始化为10M,且可以扩展
show variables like 'innodb_data%'

innodb_data_file_path ibdata1:12M:autoextend

使用共享表空间存储方式时,所有数据保存在一个单独的表空间里面,表空间可以由很多个文件组成,
一个表可以跨多个文件存在,其大小限制不再是文件大小的限制,而是其自身的限制。
表空间的最大限制为64TB,Innodb单表限制为64TB左右,
这个大小是包括这个表的所有索引等其他相关数据。

使用单独表空间存储方式时,每个表的数据以一个单独的文件来存放,单表限制为文件系统的大小限制。


不同平台单独表空间文件最大限制。

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

FAT和VFAT (FAT32)不适合MySQL生产使用,应使用NTFS。

my.cnf
innodb_file_per_table

独占表空间 共享表空间 开关

默认是共享表空间 

共享表空间和独立表空间优缺点

共享表空间:
优点
表空间分成多个文件存放到各个磁盘上,一个表可以分布在不同的文件上。

缺点
多个表及索引在表空间中混合存储,对一个表做大量删除操作后表空间中会有大量的空隙,
特别是对于统计分析,日志系统这类应用不适合用共享表空间。


独立表空间

优点
1 每个表有自已独立的表空间
2 每个表的数据和索引都会存在自已的表空间中
3 可以实现单表在不同的数据库中移动
4 独立管理,空间回收方便 
 
缺点
单表大小限制


启用独立表空间后
每个表对应的.idb文件内只存放数据、索引和插入缓冲,而撤销(undo),事务,二次写缓冲等信息还是存放在原来的共享表空间内。
数据段即B+树的叶节点,索引段即为B+树的非索引节点。

页类型:数据页、Undo页、系统页、事务数据页、插入缓冲位图页、插入缓冲空闲列表页。

上一篇     下一篇
zookeeper常用运维命令

mysql innodb 索引原理

innodb与myisam的区别

mysqldump使用说明

忆往昔•疯牛

spring配置bean的三种方式