您的位置:首页 > 数据库 > MySQL

MYSQL 的两种存储引擎区别(事务、锁级别等等),各自的适用场景

2020-03-24 12:26 513 查看

MySQL的两种存储引擎

引擎 特性
MYISAM 不支持外键,表锁,插入数据时,锁定整个表,查表总行数时,不需要全表扫描
INNODB 支持外键,行锁,查表总行数时,全表扫描

数据库引擎
数据库引擎是用于存储、处理和保护数据的核心服务。
当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是通过数据库引擎去访问数据库文件

mysql的两种存储引擎的比较
MySQL5.5 之前默认使用MyISAM ,5.6 以后默认为 InnoDB

InnoDB特点介绍及适用场景
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,其为MySQL数据库5.6及以后版本默认存储引擎。

MyISAM 和 InnoDB 是许多人在使用MySQL时最常用的两个存储引擎,这两个各有优劣,视具体应用而定。
基本的差别为:

MyISAM只支持表级锁,用户在操作MyISAM表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。不支持外键。
InnoDB支持事务和行级锁,行锁大幅度提高了多用户并发操作的新能。支持外键;对一个包含外键的InnoDB表转为MYISAM会失败;
MyISAM 不支持事务处理等高级处理,强调的是性能,其执行速度比 InnoDB 更快,但是不提供事务支持,而 InnoDB 提供事务支持、外部键等高级数据库功能。
InnoDB支持事务和行级锁,是InnoDB的最大特色。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。如果数据表主要用来插入和查询记录,则 MyISAM 能提供较高的处理效率;如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB 是一个好的选择。
不知道ACID是什么的童鞋可要去了解哦,面试时比较常问到的。可以看下这篇数据库事务的四大特性+事务的隔离级别
MyISAM和InnoDB两者的应用场景
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
lucky小罗 发布了6 篇原创文章 · 获赞 3 · 访问量 94 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: