Innodb与MyIsam

本文详细对比了MySQL中MyISAM与InnoDB存储引擎的特性,包括事务处理、锁机制、数据操作、查询效率及应用场景。MyISAM适合查询为主的应用,而InnoDB更适合需要事务处理和高并发的场景。

1.区别

(1)事务处理:

MyIsam是非事务安全的,不支持事务,Innodb支持事务。

(2)锁机制

MyIsam支持的是表锁,锁粒度比较大,Innodb支持行锁,锁粒度小,支持更多并发。

(3)数据操作

select较多的时候推荐MyISAM;

需要Update和insert,处于安全和性能的考虑,使用Innodb。

(4)查询表的行数不同

查询表包含的记录数时,Mysiam保存了行数,直接返回值,innodb需要遍历全表。

(5)外键

Innodb支持外键

2.MyISAM查询速度快的原因

Innodb查询操作时需要维护的东西比Mysiam多:

(1)数据块,Innodb需要缓冲数据块,而myisam只需要缓冲索引块,这中间还有换进换出的减少;

(2)Innodb需要维护MVCC一致(多版本并发控制)

3.应用场景

MyISAM:查询行数、查询记录;插入和更新不频繁,查询频繁;不需要事务

Innodb:要求事务,可靠性;表更新频繁,并且行锁定的机会较大。

https://www.cnblogs.com/changna1314/p/6878900.html

 

InnoDBMyISAM是MySQL数据库中两种常见的存储引擎InnoDB是MySQL的默认存储引擎,它提供了ACID(原子性、一致性、隔离性和持久性)事务支持,以及行级锁定和多版本并发控制(MVCC)等高级功能。它适用于对数据完整性要求较高或需要处理大量并发操作的场景。InnoDB的特点包括: 1. 事务支持:InnoDB支持事务,可以通过BEGIN、COMMIT和ROLLBACK等语句来实现数据的原子性操作。 2. 行级锁定:InnoDB使用行级锁定,可以最大程度地减少并发操作之间的冲突,提高数据库的并发性能。 3. 外键支持:InnoDB支持外键约束,可以保证关联表之间的数据完整性。 4. MVCC:InnoDB使用多版本并发控制来处理并发读写操作,可以提供更好的并发性能。 相比之下,MyISAM是一种较早的存储引擎,在一些特定的场景下仍然被使用。它不支持事务和行级锁定,而是使用表级锁定。MyISAM的特点包括: 1. 不支持事务:MyISAM不支持事务,因此不能保证数据的原子性操作。 2. 表级锁定:MyISAM使用表级锁定,当一个操作对表进行锁定时,其他操作需要等待锁定释放才能执行。 3. 较高的性能:由于不需要处理事务和行级锁定,MyISAM在某些特定的查询场景下可能具有较好的性能表现。 4. 全文索引:MyISAM支持全文索引,可以用于全文搜索。 选择使用InnoDB还是MyISAM取决于具体的需求和应用场景。如果需要事务支持、行级锁定和数据完整性保证,或者处理大量并发操作,通常推荐使用InnoDB。而如果只需要简单的查询和较高的性能,可以考虑使用MyISAM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值