MySQL数据库 数据引擎MyISAM InnoDB 比较

一、MyISAM

1、主要特点:

(1)仅支持表级锁
(2)注重性能,在少并发环境下,查找、插入表现优秀。
(3)支持FULLTEXT类型的索引
(4)保存表的具体行数
(5)自增类型,InnoDB必须包含只有该字段的索引,MyISAM中可以和其他字段建立联合索引
(6)索引与数据是分开的,索引有压缩,提高了内存使用率。
(6)使用非聚簇索引,索引使用B+树的结构,主键索引的B+树的节点存储了主键,辅助键索引B+树存储了辅助键。表数据存储在独立的地方,两棵B+树的叶子节点都使用一个地址指针指向真正的表数据,对于表数据来说这两个键没有任何差别。由于索引树是独立的,通过辅助键索引无需访问主键的索引树。 
(7)表保存成文件的形式,便于跨平台的数据转移。

2、适用场景:

MyISAM管理非事务表。提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,是很好的选择。

二、InnoDB

1、主要特点:

(1)支持事务处理、外键、行级锁[最小粒度锁]
(2)适用于高并发或对事务有要求的情况
(3)删除操作按行删除记录,不建新表
(4)索引与数据捆绑,且无压缩,体积庞大
(5)使用聚簇索引,本身就是索引文件,将主键组织到一棵B+树中,行数据存储在叶子节点。辅助索引B+树中,叶子节点存放的是对应的主键。按辅助索引查询时需要进行两次查询,先找到主键,再根据主键找到行数据。
所以查询速度比MyISAM慢
(6)更加安全,可以在保证数据不丢失的情况下,切换非事务表到事务表。【alter table tablename type=innodb】

2、适用场景:

       InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量Insert、Update操作,则应使用InnoDB,这样可以提高多用户并发操作的性能。

3、InnoDB行级锁实现方式:

      通过给索引上的索引项加锁实现行级锁,并不是像Oracle中给数据加锁。所以只有使用索引条件检索数据时,才会使用行级锁。由于不是给记录加锁,所以对于多条记录而使用同一索引键时,会发生冲突。SQL执行计划会预判执行代价然后决定是否使用索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值