独立表空间
共享表空间
查看数据库的表空间
show variables like 'innodb_data%';
查看当前数据库的表空间管理类型
show variables like "innodb_file_per_table";
修改数据库的表空间管理方式
innodb_file_per_table=1
set global innodb_file_per_table=1;
每个表都会生成以独立的文件方式来存储,每个表都一个.frm
的描述文件,还有一个.ibd
文件。其中这个文件包括了单独一个表的数据及索引内容,默认情况下它的存储在mysql指定的目录下。
每个表都有自己独立的表空间,每个表的数据和索引都会存储在各个独立的表空间中,可以实现单表在不同的数据进行迁移。
表空间可以回收(除了drop table操作,表空不能自己回收),drop table 操作自动回收表空间,如果对统计分析或是日志表,删除大量数据后可以通过 :alter table tablename engin=innodb
进行回缩不用的空间。对于使用inodb-plugin的innodb使用truncate table会使用空间收缩。对于使用独立表空间,不管怎么删除,表空间的碎片都不会太严重。
单表增加过大,如超过100G。对于单表增长过大的问题,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢。
对于独立表空间也有一个解决办法是:使用分区表,也可以把那个大的表空间移动到别的空间上然后做一个连接。其实从性能上出发,当一个表超过100个G有可能响应也是较慢了,对于独立表空间还容易发现问题早做处理。
某一个数据库所有的表数据,索引文件全部都放在一个文件中,默认这个共享表空间的文件路径在data目录下,默认的文件名为 ibdata1,初始化为10M。
可以将表空间分成多个文件存放在各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上),数据和文件放在一起方便管理。
所有的数据和索引存放到一个文件中,将来会是一个很大的文件,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对一个表做了大量删除操作后表空间将有大量的空隙,特别是对统计分析、日值系统这类应用最不适合用共享表空间。
更多精彩文章访问:https://blog.csdn.net/weixin_45692705?spm=1011.2124.3001.5343
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_45692705/article/details/122044721
内容来源于网络,如有侵权,请联系作者删除!