在阅读mysql引擎innoDB教程时,我偶然发现了这句话
"InnoDB将其表和索引存储在表空间中“
有人能解释一下这意味着什么吗。
谢谢您:)
发布于 2014-03-06 03:57:56
表空间本质上是一个黑匣子,InnoDB自己管理表空间,它本质上是一个跨越disk.InnoDB上一个或多个文件的虚拟文件系统,它将表空间用于许多目的,它将其撤消日志、插入缓冲区、双写缓冲区和其他内部结构默认保存在表空间中,所有InnoDB表和索引都存储在系统表空间中。作为替代,您可以将每个InnoDB表及其索引存储在自己的文件中。此特性称为“多个表空间”,因为在此设置生效时创建的每个表都有自己的表空间。每个表空间的优点,您可以在截断或删除表时回收磁盘空间。对于关闭文件/表模式时创建的表,截断或删除它们会在ibdata文件内部创建空闲空间。这个空闲空间只能用于新的InnoDB数据。
InnoDB文件-每表模式
InnoDB表空间
发布于 2014-03-06 03:39:37
默认情况下,InnoDB引擎共享多个表的文件。如果Country是InnoDB表,那么将在数据库目录中创建一个Country.frm格式文件,但是InnoDB存储引擎本身会将表数据和索引信息存储在InnoDB共享表空间中。表空间由多个表使用。也就是说,用于存储表内容的文件在表之间共享。但是MyISAM引擎为每个表创建一个数据文件和索引文件。如果Country是MyISAM表,则MyISAM存储引擎将创建名为Country.MYD和Country.MYI的数据和索引文件,以存储表的数据行和索引(分别)。
发布于 2014-03-06 05:58:21
"InnoDB stores its tables and indexes in a tablespace"这意味着所有InnoDB表和索引都存储在MySQL v5.6之前的表空间中,所有表和索引都存储在共享的表空间中,尽管更改诺姆b_文件_每_表格的选项是可用的。
在v5.6.6之前,这种单块方法的目标是完全用于数据库处理的机器,并精心规划数据增长,在这些机器中,分配给MySQL的任何磁盘存储永远不需要用于其他目的。InnoDB的文件-每个表模式是一种更灵活的选择,您可以将每个InnoDB表及其索引存储在一个单独的文件中。每个这样的.ibd文件代表一个单独的表空间。此模式由innodb_file_per_table配置选项控制,是MySQL 5.6.6及更高版本中的默认模式。在v5.6中,或者如果您设置了Innodb_file_per_table模式"ON“,您将为每个表找到.ibd和.frm条目,分别表示每个表的表空间和表定义。
https://dba.stackexchange.com/questions/60260
复制相似问题