Wetts's blog

Stay Hungry, Stay Foolish.

0%

高性能MySQL-1.5-MySQL的存储引擎

在文件系统中,MySQL将每个数据库(也可以称之为schema)保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个和表同名的.frm文件保存表的定义。

可以使用SHOW TABLE STATUS命令(在MySQL5.0以后的版本中,也可以查询INFORMATION_SCHEMA中对应的表)显式表的相关信息。

例如:

1
SHOW TABLE STATUS LIKE 'user' \G
  • name:表名
  • Engine:表的存储引擎类型。在旧版本中,该列的名字叫Type,而不是Engine
  • Row_format:行的格式。
  • ROWS:表中的行数。对于MyISAM和其他的一些存储引擎,该值是精确的,但对于InnoDB该值是估计值。
  • Avg_row_length:平均每行包含的字节数。
  • Data_length:表数据的大小(以字节为单位)。
  • Max_data_length:表数据的最大容量,该值和存储引擎有关。
  • Index_length:索引的大小(以字节为单位)。
  • Data_free:对于MyISAM表,表示已分配但目前没有使用的空间。这部书空间包括了之前删除的行,以及后续可以被INSERT利用到的空间。
  • Auto_increment:下一个AUTO_INCREMENT的值。
  • Create_time:表的创建时间。
  • Update_time:表数据的最后修改时间。
  • Check_time:使用CHECK TABLE命令或者myisamchk工具最后一次检查表的时间。
  • Collation:表的默认字符集和字符列排序规则。
  • Checksum:如果启动,保存的时候整个表的实时校验和。
  • Create_options:创建表时指定的其他选项。
  • Comment:该列包含了一些其他的额外信息。对于MyISAM表,保存的是表在创建时带的注释。对于InnoDB表,则保存的是InnoDB表空间的剩余空间信息。如果是一个视图,则该列包含“VIEW”的文本字样。

InnoDB

InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。

MyISAM

在MySQL5.1及之前的版本,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法安全恢复。