《MySQL系列-InnoDB引擎23》文件-InnoDB存储引擎文件-表空间文件
Posted DATA数据猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MySQL系列-InnoDB引擎23》文件-InnoDB存储引擎文件-表空间文件相关的知识,希望对你有一定的参考价值。
InnoDB存储引擎文件
之前介绍的文件都是mysql数据库本身的文件,和存储引擎无关。除了这些文件外,每个表存储引擎都有其自己独有的文件。本节将具体介绍与InnoDB存储引擎密切相关的文件,这些文件包括重做日志文件、表空间文件。
表空间文件
InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计。在默认配置下会有一个初始大小为10MB,名为idbta1的文件。该文件就是默认的表空间文件(tablespace file),用户可以通过参数innodb_data_file_path对其进行设置,格式如下:
## innodb_data_file_path=datafile_spec1[;datafile_spec2]...
mysql> show variables like 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+
1 row in set (0.00 sec)
用户可以通过多个文件组成一个表空间,同时制定文件的属性,如:
[mysqld]
innodb_data_file_path = /db/ibdata1:2000M;/dr2/db/ibdata2:2000M:autoextend
这里将/db/ibdata1
和/dr2/db/ibdata2
两个文件来组成表空间。若这两个文件位于不同的磁盘上,磁盘的负载可能被平均,因此可以提高数据库的整体性能。同时,两个文件的文件名后面都跟了属性,表示文件ibdata1
的大小为2000MB;文件ibdata2
的大小为2000MB,如果用完也可以自动增长(autoextend);
设置innodb_data_file_path
参数后,所有基于InnoDB存储引擎的表数据都会记录到该共享表空间中。
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
若设置了参数innodb_file_per_table
,则用户可以将每个基于InnoDB存储引擎的表产生一个独立表空间。独立表空间命名规则为:表名.idb
。
# 如下所示,article和c_zxy有独立的表空间。
# 需要注意的是,这些单独表空间文件仅存储该表的数据、索引和插入缓冲bitmap等信息
# 其余信息还是存放在默认表空间中。
mysql> system ls -lh /var/lib/mysql/zxy
total 69M
-rw-r----- 1 mysql mysql 8.6K Oct 8 16:51 article.frm
-rw-r----- 1 mysql mysql 96K Oct 8 16:51 article.ibd
-rw-r----- 1 mysql mysql 8.5K Oct 8 16:51 c_zxy.frm
-rw-r----- 1 mysql mysql 96K Oct 8 16:51 c_zxy.ibd
以上是关于《MySQL系列-InnoDB引擎23》文件-InnoDB存储引擎文件-表空间文件的主要内容,如果未能解决你的问题,请参考以下文章