InnoDB独立表空间

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

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

在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

独立表空间优点:

  • 每个表都有自已独立的表空间
  • 每个表的数据和索引都会存在自已的表空间中
  • 可以实现单表在不同的数据库中移动
  • drop table操作会自动回收表空间

使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响数据库整体性能,而且还有机会处理。

独立表空间缺点:

  • 单表增加过大,如超过100个G
  • 表空间文件不能分多文件存放在不同磁盘中

结论

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

独立表空间开启方法,在my.cnf中[mysqld]下设置:

innodb_file_per_table=1

查看是否开启:

mysql> show variables like ‘%per_table%’;

关闭独享表空间:

innodb_file_per_table=0

通常这三个参数放在一起设置:

innodb_file_per_table=1
innodb_file_format=barracuda
innodb_strict_mode=1
时间: 2024-10-17 16:06:19

InnoDB独立表空间的相关文章

Innodb独立表空间的配置

环境介绍: MySQL版本:5.5.40 1.查看独立表空间是否开启 mysql> show variables like '%per_table%'; +-----------------------+-------+ | Variable_name         | Value | +-----------------------+-------+ | innodb_file_per_table | OFF   | +-----------------------+-------+ 1 r

看懂MySQL怎样判断InnoDB表是独立表空间还是共享表空间

本文参考原文-http://bjbsair.com/2020-03-22/tech-info/5348/概述 InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数

MySQL InnoDB 共享表空间和独立表空间

共享表空间 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为ibdata1, 初始化为10M. 由于是默认的方式,就暂且理解为Mysql官方推荐的方式.相对而言所有的数据都在一个(或几个)文件中,比较利于管理,而且在操作的时候只需要open这一个(或几个)文件即可,相对来说代价很低.但问题是在数据达到以G为单位来计算的时候优劣逆转.一个过大的文件很不利于管理,而且对于一个如此巨大的文件来说,读写它需要耗费的资源一样巨大.更加令

mysql InnoDB引擎 共享表空间和独立表空间(转载)

PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 1.什么是共享表空间和独占表空间 共享表空间以及独占表空间都是针对innodb表的数据存储而言的,ibdata1为innodb引擎的存储数据与索引的数据文件,ib_logfile0与ib_logfile1为innodb引擎使用的日志文件共享表空间: mysql服务器中所有数据库的innodb表(数据,索引)全部放在一个文件中,默

InnoDB 引擎独立表空间 innodb_file_per_table

使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作.然而当你使用InnoDB的时候,一切都变了. InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题.通常只能将数据使用mysqldump 导出,然后再导入解决这个问题.

mysql之innodb引擎的共享表空间和独立表空间

对于innodb的数据存储文件,首先要解决两个概念性的问题: 共享表空间以及独占表空间.(innodb引擎与MYISAM引擎的区别很大.特别是它的数据存储方式等.) 1.共享表空间和独占表空间介绍 共享表空间以及独占表空间都是针对数据的存储方式而言的. 共享表空间:  每一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1  初始化为10M. 独占表空间:  每一个表都将会生成以独立的文件方式来进行存储,每一个表都有

MySQL如何判别InnoDB表是独立表空间还是共享表空间

InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数据都放在这个共享表空间中,而系统变量innodb_file_per_table=1的话,那么InnoDB存储引

mysql共享表空间和独立表空间

innodb表的数据结构 innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等. 对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 什么是共享表空间和独占表空间 共享表空间以及独占表空间都是针对数据的存储方式而言的. 共享表空间:  某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1  初始化为10M. 独占表空间:  每一个表都将会生成以独立的文件方式

mysql共享表空间转独立表空间

使用innodb_export_import.py脚本: https://github.com/thecpaneladmin/innodb-tools 安装MySQL-python模块: shell > yum install MySQL-python -y 步骤一:修改my.cnf文件 增加innodb_force_recovery = 4参数,重启mysql,阻塞所有读写操作, 步骤二:执行脚本导出innodb表的数据(脚本没有用户和密码选项,需要写在my.cnf文件中,即user=xxx和