头图

  在MySQL5.1版本之前,默认的存储引擎是MyISAM。该存储引擎管理非事务表,是ISAM 的扩展格式。除了提供ISAM里所没有的索引的字段管理的功能外,MyISAM 还使用一种表格锁定的机制来优化多个并发的读写操作。视频讲解如下:

https://www.bilibili.com/video/BV1oZ421u7jN/?aid=1155630898&c...

  MyISAM 提供高速存储和检索,以及全文搜索能力。MyIASM存储引擎的特性如下:

  • 不支持事务,不具备事务的AICD特性。
  • 采用表级别锁定。更新数据时将锁定整个表。虽然表级锁定实现成本很小,但是却大大降低了其并发的性能。
  • 读写相互阻塞。不仅会在写入的时候阻塞读取数据的操作 ,还会在读取的时候阻塞写入数据的操作;但是读取数据的操作不会阻塞另外的读取数据操作。
  • 只会缓存索引,不缓存数据。
  • 读取数据的速度快占,用资源比较少。
  • 不支持外键约束。
  • 支持全文检索。

  下面通过一个示例来演示MyIASM存储引擎的特性。
(1)创建test2表,存储引擎是myisam。

mysql> create table test2(tid int,tname varchar(20),money int)
       engine=myisam

(2)开启事务,并往test2插入数据。

mysql> start transaction;
mysql> insert into test2 values(1,'Tom',1000);

(3)不提交事务,直接断掉客户端。数据依然被持久地保存了。

MyIASM存储引擎的应用场景:

  • 不需要事务支持的场景。
  • 读多或者写多的单一业务场景,读写频繁的则不适合。
  • 读写并发访问较低的业务。
  • 数据修改相对较少的业务。
  • 以读为主的业务。
  • 对数据的一致性要求不是很高的业务。
  • 服务器硬件资源相对比较差的场景

赵渝强老师
30 声望10 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...