资讯专栏INFORMATION COLUMN

MySQL常用存储引擎之MyISAM

Reducto / 3303人阅读

摘要:所以,使用存储引擎的表,读取和写入这两种操作是互斥的。版本时默认支持为适用场景非事务型应用本身时一种非事务型存储引擎,也就是说是不支持事务的。空间类应用在之前,是唯一支持空间函数的存储引擎。

1. mysql 5.5之前版本默认存储引擎 1.1 因为这个原因现在还有大量服务器在使用这myisam引擎的表 1.2 myisam是mysql大部分系统表和临时表使用的存储引擎

2. myisam存储引擎表由myd和myi组成 2.1 myd存储数据信息 2.2 myi存储索引信息 2.3 frm记录表结构的,所有存储引擎都有的

3. 特性 3.1 并发性与锁级别

myisam使用的是表级锁, 而不是行级锁。这也就意味着对表数据进行修改时,需要对整个表进行加锁。而在对表中的数据进行读取时,也需要对所有表加共享锁。所以,使用myisam存储引擎的表,读取和写入这两种操作是互斥的。当然,在一些情况下,当我们对表中的数据进行读取时,也可以在表的末尾插入数据。因此,myisam对读写混合的并发性不是很好。如果知识制度的操作的话,就并发性而言,性能还是可以接受的。因为共享锁并不会阻塞共享锁。

3.2 表损坏修护

支持对意外关闭的表进行检查和修护操作,这里提到的修护,并不是事务恢复。因为myisam并不是一种事物存储引擎,所以它不可能提供事务恢复所需要的相关日志。所以注意了,对myisam表做数据恢复,可能会造成数据的丢失。对有问题的表可以使用

check table tablename 进行检查
repair table tablename 进行修护

除了上诉命令,mysql还提供了修护工具,叫做myisamchk( 如果使用,则需要停止mysql服务),如果不停止使用这个工具,可能造成更大的损坏。

3.3 myisam表支持的索引类型

myisam表支持全文索引,是 mysql5.7之前唯一支持全文索引的官方存储引擎。支持text或block等字段前500个字符的前缀索引,若果myisam是一张很大的只读表的话,在表创建完,导入数据后,就不会在对表进行任何修改操作,那么我们可以对这样的表进行压缩操作,这样可以减少磁盘io。

3.4 myisam表支持数据压缩

对于表中数据压缩是独立进行压缩的,所以在读取单行数据的时候,不必对整个表来进行解压

myisampack  压缩表

4. 限制 4.1 版本< mysql5.0时默认表大小为4g

若果存储大表则要修改 max_rowsavg_row_length , 这两个数相乘的大小,就是表达到的大小。对于大表来说,修改这两个参数会导致表重建,可能需要一些时间。

4.2 版本 >mysql5.0时默认支持为256tb 5. 适用场景 5.1 非事务型应用

myisam本身时一种非事务型存储引擎,也就是说myisam是不支持事务的。

5.2 只读类应用

因为可以对表进行压缩,压缩后只读。

5.3 空间类应用

在mysql5.7之前,myisam是唯一支持空间函数的存储引擎。如果需要存储空间类数据,使用空间函数,只能使用myisam存储引擎。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28962.html

相关文章

  • MySQL常用存储引擎Innodb

    摘要:所以我们如果使用系统表空间进行表数据的存储,所面临的问题是无法很容易的收缩系统文件,造成大量的空间浪费,并且会产生大量的磁盘碎片,从而降低了系统性能。 1. mysql 5.5及之后版本默认存储引擎   为不了解存储引擎的数据库使用者,提供了很大的便利,因为innodb适应大部分应用场景。   和myisam不同的是,innodb是一种事务型存储引擎。也就是说,innodb是支持事务的...

    Soarkey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<