MySQL InnoDB存储结构
所属分类 mysql
浏览量 1246
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的三种方式