在文件系统中,MySQL将每个数据库(schema)保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个和表名相同的.frm文件保存表的定义。例如创建一个名为MyTable的表,MySQL会在MyTable.frm文件中保存该表的定义。因为MySQL使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体的平台密切相关。在Windows中,大小写是不敏感的;而在类Unix中则是敏感的。不同的存储引擎保存数据和索引的方式是不同的,但表的定义则是在MySQL服务层统一处理的。
可以使用SHOW TABLE STATUS命令显示表的相关信息。
输出结果表明这是一个InnoDB表。输出中还有很多其他信息以及统计信息。下面简单介绍下含义
Name:表名
Engine:存储引擎类型。旧版本中叫Type。
Row_format:行的格式
Rows:表中的数据行数。在InnoDB中该值是估算值
Avg_row_leng:平均每行包含的字节数
Data_length:表数据的大小(单位为字节)
Max_data_length:表数据的最大容量,此值与存储引擎相关
Index_length:索引的大小(单位为字节)
Data_free:已分配但未使用的空间
Auto_increment:下一个AUTO_INCREMENT的值
Create_time:创建时间
Update_time:表数据最后修改时间
Check_time:使用CKECK TABLE命令或myisamchk工具最后一次检查表的时间
Collation:表的默认字符集和字符列排序规则
Checksum:如果启用,保存的是整个表的实时校验和
Create_options:创建表时的其他选项
Comment:该列包含了一些其他的额外信息,InnoDB中保存的是表空间剩余空间信息
一 InnoDB存储引擎
InnoDB是MySQL的默认事物型引擎,也是最重要、使用最广泛的存储引擎。它被设计为用来处理大量的短期事物(short-lived),短期事物大部分情况是正常提交的,很少会被回滚。InnoDB的性能和自动崩溃恢复特性,使得它在非事物型存储的需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。如果要学习存储引擎,InnoDB也是一个非常好的学习对象。
1.InnoDB的历史
InnoDB有着复杂的发布历史,了解一下这段历史对于理解InnoDB很有帮助。2008年,发布了所谓的InnoDB plugin,适用于MySQL5.1版本,但这是Oracle穿件的下一代InnoDB引擎,其拥有者是InnoDB而不是MySQL。这基于很多原因。MySQL默认还是选择了集成旧的InnoDB引擎。当然用户可以自行选择使用新的性能更好、扩展性更加的InnoDB plugin来覆盖旧的版本。替代了旧版本的InnoDB。
这个现代的InnoDB版本,也就是MySQL5.1中所谓的InnoDB plugin,支持一些新特性,注入利用培训创建索引(building index by sorting)、删除或增加索引时不需要赋值全表数据、新的支持压缩的存储格式、新的大型列值如BLOB的存储方式,以及文件格式管理等、很多用户在MySQL5.1中没有使用InnoDB plugin,或许是因为没有注意到有这个区别、所以如果你使用的是MySQL5.1,一定要使用InnoDB plugin,它要比旧版本好很多。
InnoDB是一个很重要的存储引擎,很多个人和公司都对其贡献代码,而不仅仅是Oracle公司的开发团队。一些重要贡献者包括Google、Yasufumi Kinoshita、Percona、Facebook等,他们的一些改进被直接一直到官方版本,也有一些由InnoDB团队重新实现。在过去的几年里,InnoDB的改进速度大大加快,主要的改进集中在可测量性、可扩展性、可配置化、性能、各种新特性和对Windows的支持等方面。
为改善InoDB的性能,Oracle投入了大量的资源,并做了很多卓有成效的工作。原有版本超过四核CPU的系统中InnoDB表现不佳,而现在已经可以很好的扩展至24核的系统,甚至在某些场景,32核或者更多的系统中也表现良好。很多改进将在MySQL5.6中引入,当然还有更进一步的改善。——芝麻代理
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31561243/viewspace-2636220/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31561243/viewspace-2636220/