当前位置: 首页 > 后端技术 > PHP

MySQL通用存储引擎MyISAM

时间:2023-03-29 21:35:10 PHP

1。5.5之前的mysql版本默认存储引擎1.1。为此,至今仍有大量的服务器在使用这张myisam引擎表。1.2myisam是大多数mysql系统表和临时表使用的存储引擎2myisam存储引擎表由myd和myi组成2.1myd存储数据信息2.2myi存储索引信息2.3frm记录表结构,所有存储引擎都有3.特点3.1并发和锁级别myisam使用表级锁,而不是行级锁。这也意味着当表数据被修改时,需要对整个表进行加锁。在读取表中的数据时,还需要给所有的表加共享锁。因此,对于使用myisam存储引擎的表来说,读写这两个操作是互斥的。当然,在某些情况下,我们在读取表中的数据时,也可以在表尾插入数据。所以myisam对于读写的并发性不是很好。如果知识系统运行,就并发性而言,性能是可以接受的。因为共享锁不会阻塞共享锁。3.2表损坏修复支持对意外关闭的表进行检查和修复操作。这里所说的修复不是事务恢复。因为myisam不是事务型存储引擎,所以无法提供事务恢复所需的相关日志。所以要注意,对myisam表进行数据恢复可能会导致数据丢失。可以使用checktabletablename来检查有问题的表和repairtabletablename来修复。mysql除了appeal命令外,还提供了修复工具myisamchk(如果使用需要停止mysql服务)。如果您不停止使用此工具,可能会造成更大的损害。3.3myisam表支持的索引类型Myisam表支持全文索引,是mysql5.7之前唯一支持全文索引的官方存储引擎。支持文本或块等字段的前500个字符的前缀索引。如果myisam是只读的大表,建表导入数据后,不会修改表。那么我们可以对这样的表进行压缩,这样可以减少磁盘io。3.4myisam表支持数据压缩。表中的数据压缩是独立压缩的,所以在读取单行数据时,不需要对整个表进行解压。4g如果存储大表,需要修改max_rows和avg_row_length。这两个数相乘的大小就是表达式的大小。对于大表,修改这两个参数会导致重建表,这可能需要一些时间。对于4.2>mysql5.0版本,默认支持256tb5。适用场景5.1非事务性应用Myisam本身是一个非事务性的存储引擎,也就是说myisam不支持事务。5.2对于只读应用,表可以压缩,压缩后为只读。5.3空间类应用在mysql5.7之前,myisam是唯一支持空间功能的存储引擎。如果需要存储空间数据和使用空间函数,只能使用myisam存储引擎。