MySQL表空间结构

在Innodb中,我们可以指定一张表的数据是保存在独立表空间还是系统表空间,这个参数是:innodb_file_per_table
如果我们设置这个参数的值为0,那么一个表将使用系统表空间来保存表的数据,如果设置为1,则使用独立表空间来存储数据。
   除此之外,我们可以使用
alter table tbl_name tablespace innodb_file_per_table;
的方法来把系统表空间中的表转移到独立表空间,反之,我们可以使用:
alter table tbl_name tablespace innodb_system
的方法来将独立表空间的表转移到系统表空间。

系统表空间(ibdata1、ibdata2文件)
   系统表空间是指data目录下面的ibdata1文件和ibdata2文件,文件个数可以指定,这里的表空间文件默认大小是12M,当然,我们也可以手动设置,配置的方法如下:
# InnoDB Directory Variables
innodb_data_home_dir = /data/mysql_4306/data
innodb_data_file_path =  ibdata1:1000M;ibdata2:100M:autoextend
innodb_file_per_table = 1

   在配置文件my.cnf里面写上以上参数,注意看,这里我写的是ibdata1是1000M,而ibdata2是100M,这样的设置是完全可行的,可以看到,在ibdata一行最后是autoextend,他的意思是这个文件是可以自动扩展的,所以一般都会比较大,往往是1G更多。还有一点需要注意,就是这个系统表空间只有一份,所有的表共用这一份数据。

关于这个系统表空间,这里有一个小坑,给大家说一下:
   如果你的主库上设置的ibdata的模式是一个1000M,一个100M的话,你在搭建从库的时候,从库上需要跟主库保持一致,如果没有保持一致,则在实例启动的时候会有报错。

 

转载于:https://www.cnblogs.com/tigergaonotes/p/11429701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值