首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >innodb如何将表存储在文件中?

innodb如何将表存储在文件中?
EN

Database Administration用户
提问于 2013-11-16 16:19:37
回答 2查看 505关注 0票数 0

我在某个地方读到,InnoDB可以将所有表存储在一个文件或单独的文件中。这是配置选项吗?默认设置是什么?所有表的文件还是每个表的文件?推荐的设置是什么?

EN

回答 2

Database Administration用户

发布于 2013-11-16 21:17:01

设置为innodb_file_per_table,默认为0(即。使用一个大文件),直到MySQL 5.1,然后在5.5或5.6中默认更改。更改此值不会影响已经存在的表。

即使innodb_file_per_table设置为ON,您仍然需要共享表空间文件(默认情况下是ibdata1文件)。

没有人推荐设置,这取决于您的数据库。一些优点:

  • 从文件中恢复空间更容易(只需重新导入一个表)

  • 在ext*文件系统上,使用inode级别锁定的速度会更快,因此将访问拆分到多个文件上可以稍微减轻这一点。

一些缺点:

  • 它占用更多的空间,因为再生的空间只能在同一个表中使用。

  • 从不干净的重启中恢复需要更长的时间。

  • 如果您有大量的表(因为您可以达到打开的文件限制),这可能是一个大问题。

  • 我可能错了,但是如果临时表不在系统表空间中,那么拖放表可能需要很长时间。

你想解决什么问题?

票数 2
EN

Database Administration用户

发布于 2013-11-18 05:47:14

  • Innodb_file_per表控制InnoDB是否使用单个表空间。如果设置为"1“,将为每个表创建一个表空间。它从应用时起生效--现有表不会更改。如果您经常删除大型对象(表或数据库),那么使用多个表空间尤其有用,因为文件将被删除,并且操作系统将回收磁盘空间。在设置为"0“的情况下,删除对象将不会将磁盘空间返回到操作系统。
  • 一组具有名称(如ibdata1、ibdata2等)的文件,组成InnoDB系统表空间。
  • 使用文件-每个表模式创建的每个InnoDB表都在数据库目录中进入自己的表空间文件,其中有一个.ibd扩展名。此文件包含表数据和表的任何索引。由innodb_file_per_table选项控制的文件-表模式会影响InnoDB存储使用和性能的许多方面,默认情况下在MySQL 5.6.7和更高版本中启用。

结论:

因此,最好使用InnoDB_file_per_table选项,如果在my.cnf中打开此选项,请确保您已经备份了InnoDB表,并在服务restart.Now之后恢复了这些表,您将拥有所有带有单独.ibd文件的InnoDB表

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/53414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档