注意:
独立表空间文件中仅存放该表对应数据、索引、insert buffer bitmap。
其余的诸如:undo信息、insert buffer 索引页、double write buffer 等信息依然放在默认表空间,也就是共享表空间中。
这里的undo、insert buffer、double write buffer 如果你不了解他们是啥也没关系。按照大纲排期,我会在第 41、42 篇文中跟大家分享。在这里只需要先了解即使你设置了innodb_file_per_table=ON 共享表空间的体量依然会不断的增长,并且你即使你不断的使用undo进行rollback,共享表空间大小也不会缩减就好了。
查看我的表空间文件:
最后再简述一下这种file per table的优缺点:
优点:
- 提升容错率,表A的表空间损坏后,其他表空间不会收到影响。s
- 使用MySQL Enterprise Backup快速备份或还原在每表文件表空间中创建的表,不会中断其他InnoDB 表的使用
缺点:
对fsync系统调用来说不友好,如果使用一个表空间文件的话单次系统调用可以完成数据的落盘,但是如果你将表空间文件拆分成多个。原来的一次fsync可能会就变成针对涉及到的所有表空间文件分别执行一次fsync,增加fsync的次数。
六、临时表空间
临时表空间用于存放用户创建的临时表和磁盘内部临时表。
参数innodb_temp_data_file_path定义了临时表空间的一些名称、大小、规格属性如下图:
查看临时表空间文件存放的目录
七、undo表空间
相信你肯定听过说undolog,常见的当你的程序想要将事物rollback时,底层MySQL其实就是通过这些undo信息帮你回滚的。
在MySQL的设定中,有一个表空间可以专门用来存放undolog的日志文件。
然而,在MySQL的设定中,默认的会将undolog放置到系统表空间中。
如果你的MySQL是新安装的,那你可以通过下面的命令看看你的MySQL undo表空间的使用情况:
大家可以看到,我的MySQL的undo log 表空间有两个。
也就是我的undo从默认的系统表空间中转移到了undo log专属表空间中了。
那undo log到底是该使用默认的配置放在系统表空间呢?还是该放在undo表空间呢?
这其实取决服务器使用的存储卷的类型。
如果是SSD存储,那推荐将undo info存放在 undo表空间中。
以上就是MySQL的表空间是什么的详细内容,更多关于MySQL 表空间的资料请关注其它相关文章!
更多Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。