使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。然而当你使用InnoDB的时候,一切都变了。
InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。
在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。
这样可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。
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%’;
*** 做以上操作时,可以先清掉原有的ibdata1文件和log文件。方法如下:
Do a mysqldump of all databases, procedures, triggers etc (导出数据)
Drop all databases except the mysql database (删除除mysql之外的数据库)
Stop mysql (停止mysql服务)
Delete ibdata1 and ib_log files (删除ibdata1和日志)
Start mysql (重启mysql服务)
Restore from dump (导入备份的数据)
独立表空间:
优点:
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及表空间的管理命令可以实现单现移动。
更多Mysql Innodb 引擎优化 http://linux.chinaunix.net/techdoc/database/2009/04/28/1109193.shtml
以上内容部分摘自:
http://linuxfun.me/?cat=18 下同标题文章。
分享到:
相关推荐
- 通过查询 `innodb_file_per_table` 变量确认是否启用了独立表空间管理模式。 ```sql SHOW VARIABLES LIKE '%per%'; ``` - 结果显示 `innodb_file_per_table` 的值为 `ON`,表明启用了独立表空间管理模式。 5...
InnoDB 删除数据后释放磁盘空间需要通过设置参数 innodb_file_per_table=1 和使用 OPTIMIZE TABLE 命令来实现。如果没有设置这个参数,那么需要将数据库导出,删除 InnoDB 数据库文件,然后再倒入。 此外,InnoDB ...
如果在创建数据库时没有设置`innodb_file_per_table`,那么释放空间的过程会更加复杂。此时,需要通过以下步骤来完成: 1. 使用`mysqldump`工具将InnoDB数据库完整导出到SQL文件。 2. 安全地停止MySQL服务。 3. ...
- **修改配置文件**:在`my.cnf`中添加或修改`innodb_file_per_table=1`,这会开启独立表空间功能。 - **备份数据库**:使用`mysqldump`命令备份可能受影响的InnoDB数据库。 - **删除旧数据**:删除`ib*`文件...
- **innodb_file_per_table**:该参数控制InnoDB是否为每个表使用独立的数据表空间,建议设置为1,以避免共享表空间(ibdata1)可能带来的问题,例如难以进行数据库的备份和恢复。 - **innodb_stats_on_metadata**...
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 ...
- `innodb_file_per_table`:开启后,每个InnoDB表都有独立的表空间文件,利于管理和备份。 综上所述,理解并优化MySQL的InnoDB存储引擎参数对于提升数据库性能和管理效率至关重要。在创建和管理表时,选择合适的...
InnoDB的表文件(.ibd)通常是单独存放的,除非配置了innodb_file_per_table=1。否则数据文件会放在系统表空间ibdata1中。 6. XtraDB的额外特性 XtraDB引入了一些额外的特性,例如innodb_extra_rsegments可以用来...
4. `innodb_file_per_table` 设为 1,每个表在一个单独的 .ibd 文件中存储。 5. `innodb_read_io_threads` 和 `innodb_write_io_threads` 分别设为 16,以优化 I/O 并发。 6. `innodb_io_capacity` 设为 2000,表示...
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_file_format配置参数来指定InnoDB创建file_per_table表空间时的文件格式。默认情况下,使用的是Antelope格式。当需要启用新特性的文件格式,如Barracuda,或者需要管理不同MySQL版本...
- `innodb_file_per_table` 开启,每个表的索引文件独立存储,便于管理和空间回收。 - `innodb_io_capacity` 和 `innodb_io_capacity_max` 分别设置I/O能力的基线和上限,以控制InnoDB的I/O操作。 4. **InnoDB...
8. **innodb_file_per_table**:开启后,每个InnoDB表都有独立的数据文件,便于管理、备份和恢复。默认关闭时所有表共享一个表空间,可能导致空间无法自动收缩。 9. **innodb_stats_on_metadata**:关闭时,统计...
7. **innodb_file_per_table**: 推荐启用此选项,可以使每个InnoDB表使用独立的数据文件,便于管理和备份。 综上所述,通过对`my.cnf`配置文件中各项参数的合理设置和优化,可以显著提升MySQL服务器的性能表现和...
21. `innodb_file_per_table`: 如果设为 1,每个 InnoDB 表都有独立的数据文件,便于管理和备份。 22. `innodb_flush_log_at_trx_commit`: 控制事务日志刷新策略,以平衡性能和数据一致性。 23. `innodb_log_...