MYSQL数据库之常见的数据引擎
Posted Old Liao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL数据库之常见的数据引擎相关的知识,希望对你有一定的参考价值。
前言
InnoDB和MyISAM是在日常开发中较为常见的引擎类型,下面我们对这两种常见的引擎做一些比对,了解InnoDB和MyISAM两者之间区别。
InnoDB和MyISAM对比
InnoDB | MyISAM | |
---|---|---|
事务和外键 | 支持事务和外键,具有安全性和完整性,适合大量insert或update操作 | 不支持事务和外键,它具有高速存储和索引,适合大量的select查询操作 |
锁机制 | 支持行级锁,锁定指定记录。基于索引来加锁实现 | 支持表级锁,锁定整张表 |
索引结构 | 使用聚集索引,索引和记录一起存储,即缓存索引,也缓存记录 | 非聚集索引,索引和记录分开 |
并发处理能力 | 读写阻塞可以与隔离级别有关,采用多个版本并发控制(MVCC)来支持高并发 | 使用表锁,会导致写操作并发率低,读之间不会阻塞,读写阻塞 |
存储文件 | 对应两个文件,一个.frm表结构文件;一个.ibd数据文件。innodb表最大支持64TB | 对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件。从mysql5.0版本起默认限制是256TB |
InnoDB和MyISAM各自适用场景
InnoDB
需要事务支持(具备较好的事务特性) 行级锁定对高并发有着很好的适应能力 数据更新较为频繁的场景 数据一致性要求较高 硬件设备内存较大,可以更好利用InnoDB的缓存能力来提高内存利用率,减少磁盘I/O
MyISAM
不需要事务支持(它本身就不具备事务特性) 并发相对较低(锁定机制问题) 数据修改相对较少,主要以读为主 数据一致性要求不高(不具备事务特性,某些高并发场景下存在数据不一致)
总结:在大多数场景下,都采用InnoDB引擎,MySQL5.5版本开始默认使用InnoDB作为默认引擎。如需在特殊场景下,可以在建表时就指定引擎为MyISAM。
扩展知识:各种存储引擎特性对比
以上是关于MYSQL数据库之常见的数据引擎的主要内容,如果未能解决你的问题,请参考以下文章