`

InnoDB 引擎独立表空间 innodb_file_per_table

    博客分类:
  • sql
 
阅读更多

使用过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://imysql.cn/node/609

分享到:
评论

相关推荐

    MySql innodb 引擎表存储分析

    - 通过查询 `innodb_file_per_table` 变量确认是否启用了独立表空间管理模式。 ```sql SHOW VARIABLES LIKE '%per%'; ``` - 结果显示 `innodb_file_per_table` 的值为 `ON`,表明启用了独立表空间管理模式。 5...

    实战mysql innodb 删除数据后释放磁盘

    InnoDB 删除数据后释放磁盘空间需要通过设置参数 innodb_file_per_table=1 和使用 OPTIMIZE TABLE 命令来实现。如果没有设置这个参数,那么需要将数据库导出,删除 InnoDB 数据库文件,然后再倒入。 此外,InnoDB ...

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

    - **修改配置文件**:在`my.cnf`中添加或修改`innodb_file_per_table=1`,这会开启独立表空间功能。 - **备份数据库**:使用`mysqldump`命令备份可能受影响的InnoDB数据库。 - **删除旧数据**:删除`ib*`文件...

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

    如果在创建数据库时没有设置`innodb_file_per_table`,那么释放空间的过程会更加复杂。此时,需要通过以下步骤来完成: 1. 使用`mysqldump`工具将InnoDB数据库完整导出到SQL文件。 2. 安全地停止MySQL服务。 3. ...

    MYSQL innodb性能优化学习总结

    - **innodb_file_per_table**:该参数控制InnoDB是否为每个表使用独立的数据表空间,建议设置为1,以避免共享表空间(ibdata1)可能带来的问题,例如难以进行数据库的备份和恢复。 - **innodb_stats_on_metadata**...

    数据库优化配置.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 ...

    XtraDB、InnoDB 内部结构示意图

    InnoDB的表文件(.ibd)通常是单独存放的,除非配置了innodb_file_per_table=1。否则数据文件会放在系统表空间ibdata1中。 6. XtraDB的额外特性 XtraDB引入了一些额外的特性,例如innodb_extra_rsegments可以用来...

    MySQL数据页功能性能测试innodb-page-size

    4. `innodb_file_per_table` 设为 1,每个表在一个单独的 .ibd 文件中存储。 5. `innodb_read_io_threads` 和 `innodb_write_io_threads` 分别设为 16,以优化 I/O 并发。 6. `innodb_io_capacity` 设为 2000,表示...

    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_...

    14.8 InnoDB File-Format Management

    在具体操作上,可以通过innodb_file_format配置参数来指定InnoDB创建file_per_table表空间时的文件格式。默认情况下,使用的是Antelope格式。当需要启用新特性的文件格式,如Barracuda,或者需要管理不同MySQL版本...

    MySQL5.6基本优化配置

    - `innodb_file_per_table` 开启,每个表的索引文件独立存储,便于管理和空间回收。 - `innodb_io_capacity` 和 `innodb_io_capacity_max` 分别设置I/O能力的基线和上限,以控制InnoDB的I/O操作。 4. **InnoDB...

    MYSQL-innodb性能优化学习总结.pdf

    8. **innodb_file_per_table**:开启后,每个InnoDB表都有独立的数据文件,便于管理、备份和恢复。默认关闭时所有表共享一个表空间,可能导致空间无法自动收缩。 9. **innodb_stats_on_metadata**:关闭时,统计...

    mysql数据库配置模板

    7. **innodb_file_per_table**: 推荐启用此选项,可以使每个InnoDB表使用独立的数据文件,便于管理和备份。 综上所述,通过对`my.cnf`配置文件中各项参数的合理设置和优化,可以显著提升MySQL服务器的性能表现和...

    mysql 5.5 配置文档

    21. `innodb_file_per_table`: 如果设为 1,每个 InnoDB 表都有独立的数据文件,便于管理和备份。 22. `innodb_flush_log_at_trx_commit`: 控制事务日志刷新策略,以平衡性能和数据一致性。 23. `innodb_log_...

Global site tag (gtag.js) - Google Analytics