在MySQL5.1版本之前,默认的存储引擎是MyISAM。该存储引擎管理非事务表,是ISAM 的扩展格式。除了提供ISAM里所没有的索引的字段管理的功能外,MyISAM 还使用一种表格锁定的机制来优化多个并发的读写操作。视频讲解如下:
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存储引擎的应用场景:
- 不需要事务支持的场景。
- 读多或者写多的单一业务场景,读写频繁的则不适合。
- 读写并发访问较低的业务。
- 数据修改相对较少的业务。
- 以读为主的业务。
- 对数据的一致性要求不是很高的业务。
- 服务器硬件资源相对比较差的场景