ibdata2 mysql

  • 时间:
  • 浏览:560
  • 来源:成都艾邦软件开发

简介ibdata1

ibdata1文件是InnoDB存储引擎的共享表空间文件存放位置my.ini 中的 datadirD:phpStudyMySQLdata目录下。

查看innode_file_per_table 参数的状态

  show variables like %per_table;

表空间

Innodb存储引擎可将所有数据存放于ibdata*的共享表空间也可将每张表存放于独立的.ibd文件的独立表空间。

共享表空间 :  某一个数据库的所有的表数据索引文件全部放在一个文件中默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1  初始化为10M。
独立表空间 :  每一个表都将会生成以独立的文件方式来进行存储每一个表都有一个.frm表描述文件还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容默认情况下它的存储位置也是在表的位置之中。

共享表空间转化为独立表空间

1.先备份数据然后修改配置文件my.cnf中的参数 innodb_file_per_table 参数为1/on开启独立表空间重启服务后将备份数据导入即可。
2.修改配置文件my.cnf中的参数 innodb_file_per_table 参数为1/on重启服务后将需要修改的所有innodb表都执行一遍alter table table_name engineinnodb;会将innodb表从系统共享表空间移动到独立的.ibd文件。

使用第二种方式修改后原来库中的表中的数据会继续存放于ibdata1中新建的表才会使用独立表空间

  • ibdata1是什么

Mysql ibdata1即Innodb data1缩写是innodb引擎的表空间用于存放

  1. 数据字典Data dictionary  只读的表存储对象的相关信息如占用空间列的缺省值约束信息用户名权限审计信息等
  2. 双写缓冲区 Double write buffer; Innodb写入数据默认是16k/pages为一个单位写入而磁盘是4k/page一个单位为了防止写入一半断电无法恢复数据的情况发生引入了double writer buffer机制double write buffer是一段连续空间大小2M(128 page)数据写入的时候先写到doublewrite空间然后再写入到磁盘如果发生写入了一个page一半的时候断电恢复后会自动从doublewrite中恢复
  3. 插入缓冲区INSERT BUFFER针对辅助索引(非unique)插入数据的时候先将插入的数据在buffer中根据辅助索引叶子节点的Page_no排序而后按照Page_no分批次插入提高性能
  4. 回滚日志rollback segment 用于存储未提交事物便于用户rollback当commit后数据即被标记无效
  5. undo空间 用于存放undo 日志的用于记录事物变更前的状态如果未commit,其他session可以查看到变更前状态
  6. 如果innodb_file_per_table0则Innodb的数据和索引也存储在ibdata中 (如果为1则存储在表名相同的ibd和frm文件中) 如果表数据存储在ibdata中的话那么删除表是不会释放空间

注 系统page和mysql page大小查看

[rootlocalhost apple]# getconf PAGESIZE4096mysql show variables like innodb_page_size;| Variable_name| Value || innodb_page_size | 16384 |1 row in set (0.01 sec)mysql

ibdata 路径和大小设置

mysql  show variables like innodb_data_%;| Variable_name| Value|| innodb_data_file_path | ibdata1:76M;ibdata2:10M:autoextend:max:50M || innodb_data_home_dir  | /export/data/mysql|2 rows in set (0.00 sec)

ibdata1:76M;ibdata2:10M:autoextend:max:50M含义是生成2个表空间文件第一个名字ibdata176M大小第二个ibdata2,10M大小当第一个达到最大值的时候开始存储如第二个表空间切第二个表空间可以自动增长每次增长8M增长的上限是50M

  • 为什么ibdata1增长非常快速

因为里面有UNDO LOG尤其是如果你的DB有大量写入的情况下UNDO LOG会格外地多

  • 如何查看ibdata1
  • 有什么方法可以回收空间