登录
首页 >  数据库 >  MySQL

MySQL常用存储引擎之MyISAM

来源:SegmentFault

时间:2023-01-23 16:17:50 329浏览 收藏

本篇文章给大家分享《MySQL常用存储引擎之MyISAM》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

1. mysql 5.5之前版本默认存储引擎

1.1 因为这个原因现在还有大量服务器在使用这myisam引擎的表

1.2 myisam是mysql大部分系统表和临时表使用的存储引擎

clipboard.png

2. myisam存储引擎表由myd和myi组成

2.1 myd存储数据信息

2.2 myi存储索引信息

2.3 frm记录表结构的,所有存储引擎都有的

clipboard.png

3. 特性

3.1 并发性与锁级别

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

3.2 表损坏修护

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

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

clipboard.png

除了上诉命令,mysql还提供了修护工具,叫做myisamchk

myisampack  压缩表

clipboard.png

4. 限制

4.1 版本

若果存储大表则要修改

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

4.2 版本 >mysql5.0时默认支持为256tb

5. 适用场景

5.1 非事务型应用

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

5.2 只读类应用

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

5.3 空间类应用

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

理论要掌握,实操不能落!以上关于《MySQL常用存储引擎之MyISAM》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表