标签:div 文件的 存储空间 限制 动态 mysql5.6 适合 共享 修改
Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间.
共享表空间以及独立表空间都是针对数据的存储方式而言的。
某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1 初始化为10M。
每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。
优点:可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上)。数据和文件放在一起方便管理。
缺点:所有的数据和索引存放到一个文件中,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。
alter table TableName engine=innodb;
回缩不用的空间。mysql> set global innodb_file_per_table =ON; mysql> show variables like ‘%per_table%‘; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+
Note:动态修改后仅对后续操作生效,如原来为共享表空间,动态修改为独立表空间后仅新建的表为独立表空间。
查看当前表空间情况:
mysql> show variables like ‘%per_table‘; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | OFF | +-----------------------+-------+
innodb_file_per_table参数值为OFF表示当前是共享表空间。
将共享表空间转化为独立表空间有如下两种方法:
innodb_file_per_table = 1
,重启服务后将逻辑备份导入即可。innodb_file_per_table = 1
,重启服务后将需要修改的所有innodb表都执行一遍:alter table table_name engine=innodb;
标签:div 文件的 存储空间 限制 动态 mysql5.6 适合 共享 修改
原文地址:http://www.cnblogs.com/ilifeilong/p/7221235.html