`

InnoDB 引擎独立表空间 innodb_file_per_table

 
阅读更多
使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。然而当你使用InnoDB的时候,一切都变了。

InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。

在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。

可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

独立表空间:

优点:

1.  每个表都有自已独立的表空间。
2.  每个表的数据和索引都会存在自已的表空间中。
3.  可以实现单表在不同的数据库中移动。
4.  空间可以回收(除drop table操作处,表空不能自已回收)

a)         Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。

b)         对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。

c)         对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点:

单表增加过大,如超过100个G。

结论:

共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整一 下:innodb_open_files 。

InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。

1.innodb_file_per_table设置.开启方法:
在my.cnf中[mysqld]下设置
innodb_file_per_table=1

2.查看是否开启:
mysql> show variables like ‘%per_table%’;

3.关闭独享表空间
innodb_file_per_table=0关闭独立的表空间
mysql> show variables like ‘%per_table%’;



更多Mysql Innodb 引擎优化  http://linux.chinaunix.net/techdoc/database/2009/04/28/1109193.shtml
分享到:
评论

相关推荐

    MySQL判别InnoDB表是独立表空间还是共享表空间的方法详解

    如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数据都放在这个共享表空间中,而系统变量innodb_file_per_table=1的话,那么InnoDB存储引擎类型的表就会产生一个独立表空间,独立表空间的命名...

    innodb存储引擎修改表共享空间为独立空间

    +———————–+——-+| Variable_name | Value |+———————–+——-+| innodb_file_per_table | OFF |+———————–+——-+1 row in set (0.00 sec)如果是OFF,肯定不是独立表空间。如果是ON的话,也不...

    数据库优化配置.doc

    file="ADMIN-PC-slow.log" long_query_time=10 lower_case_table_names=1 log-error="ADMIN-PC.err" secure-file-priv="c:/ProgramData/MySQL/MySQL Server 5.7/Uploads" user=mysql innodb_buffer_pool_size=2G ...

    Mysql InnoDB删除数据后释放磁盘空间的方法

    如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。 运行OPTIMIZE TABLE 表名后,虽然最后会报...

    mysql参数及其优化

    query_cache_size、query_cache_type、innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size、innodb_flush_logs_at_trx_commit、transaction_isolation、innodb_file_per_table、innodb_open_...

    优化InnoDB表BLOB,TEXT列的存储效率

    启用 innodb_file_per_table 选项,5.5以后可以在线动态修改生效,并且执行 ALTER TABLE xx ENGINE = InnoDB 将现有表转成独立表空间,早于5.5的版本,修改完这个选项后,需要重启才能生效。 2、InnoDB的data page...

    InnoDB 类型MySql恢复表结构与数据

    MySQL中.frm文件:保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关。MySQL中.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

    提高MySQL中InnoDB表BLOB列的存储效率的教程

    启用 innodb_file_per_table 选项,5.5以后可以在线动态修改生效,并且执行 ALTER TABLE xx ENGINE = InnoDB 将现有表转成独立表空间,早于5.5的版本,修改完这个选项后,需要重启才能生效; 2、InnoDB的data page...

    mysql Innodb表空间卸载、迁移、装载的使用方法

    从MySQL的Innodb特性中...则默认会把表空间存放在一个文件中(ibdata1),当开启独享表空间参数Innodb_file_per_table时,会为每个Innodb表创建一个.ibd的文件。文章讨论在独享表空间卸载、装载、迁移Innodb表的情况

    MySQL Innodb 存储结构 和 存储Null值 用法详解

    表空间:INNODB 所有数据都存在表空间当中(共享表空间),要是开启innodb_file_per_table,则每张表的数据会存到单独的一个表空间内(独享表空间)。 独享表空间包括:数据,索引,插入缓存,数据字典。共享表空间...

    MySQL学习笔记之为什么表数据删掉一半,表文件大小不变(十三)

    1.参数 innodb_file_per_table 表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数 innodb_file_per_table 控制的: 参数设置为OFF ,表的数据存放在系统表空间,也就是跟数据字典放在一起 参数...

    mysql数据库my.cnf配置文件

    # InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间 # 独立表空间优点: # 1.每个表都有自已独立的表空间。 # 2.每个表的数据和索引都会存在自已的表空间中。 # 3.可以实现单表在不同的数据库中...

    InnoDBinsert性能拐点测试

    上篇blog《InnoDBselect性能拐点测试》测试了InnoDBselect的性能拐点,...  1、调整my.cnf的参数如下:  innodb_file_per_table=0  innodb_flush_log_at_trx_commit=2  innodb_buffer_pool_size=8G  innodb_file_i

    探讨:innodb与myisam在存储上有何特点和区别

    .MYI ,.FRM 数据文件和索引文件分开存储innodb存储数据有.FRM存放表定义,.ibd(独享表空间),.ibdata(共享表空间).innodb存储数据分独立表空间和共享表空间(具体使用哪个由innodb_file_per_table变量确定),独享表...

    DBRECOVER for MySQL:修复损坏MySQL数据库恢复删除的表和数据库-开源

    一般而言,该工具通过从整体 ibdata 文件和/或独立 InnoDB 表空间文件(使用 innodb_file_per_table 的 .ibd 文件)中提取索引页来工作。 在适用的情况下,blob 页面被提取到一个单独的子目录。 MySQL删除表后,...

    MySQL 删除大表的性能问题解决方案

    1、当innodb_file_per_table=0的时候,以上不是问题,因为采用共享表空间的时候,该表所占用的空间不会被删除,buffer pool中的相关页不会 被discard。 2、当innodb_file_per_table=1的时候,并且当buffer_pool比较...

    MySQL删除数据,表文件大小依然没变的原因

    对于运行很长时间的数据库来说,往往会出现表占用存储空间过大的问题,可是将...可以将表数据存在共享表空间,或者单独的文件中,通过 innodb_file_per_table 来控制。 如果为 OFF ,表示存在系统共享表空间中,和数据

    浅谈选择mysql存储引擎的标准

    主要存储引擎的介绍 1、InnoDB存储引擎 InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量...可以通过在my.cnf中增加innodb_file_per_table来开启这个功能。如下:   InnoDB采用MVCC来支持高并发,并且实现了四个

    第2章OpenStack安装部署第2节安装Glance镜像服务.pdf

    innodb_file_per_table collation-server = utf8_general_ci character-set-server = utf8 5)初始化 keystone 数据库 su -s /bin/sh -c "keystone-manage db_sync" keystone ( 6)初始化 Fernet keystone...

    MySQL问答系列之如何避免ibdata1文件大小暴涨

    当innodb_file_per_table选项打开的话,新创建表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中. 显然这个文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,...

Global site tag (gtag.js) - Google Analytics