MySQL的两种存储引擎

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41948075/article/details/100130937

不知道你们有没有留意到数据库表里经常看到这样的一句ENGINES=InnoDB DEFAULT,有没有好奇是啥意思?那就一起学习吧~
在这里插入图片描述

数据库引擎

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

mysql的两种存储引擎的比较

MySQL5.5 之前默认使用MyISAM ,5.6 以后默认为 InnoDB

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

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

  • MyISAM只支持表锁不支持外键
  • InnoDB支持外键;对一个包含外键的InnoDB表转为MYISAM会失败;
  • MyISAM 不支持事务处理等高级处理,强调的是性能,其执行速度比 InnoDB 更快,但是不提供事务支持,而 InnoDB 提供事务支持、外部键等高级数据库功能。

如果数据表主要用来插入和查询记录,则 MyISAM 能提供较高的处理效率;如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB 是一个好的选择。

不知道ACID是什么的童鞋可要去了解哦,面试时比较常问到的。可以看下这篇数据库事务的四大特性及事物的隔离级别

MyISAM和InnoDB存储引擎使用的锁

MyISAM 采用表级锁(table-level locking)。
InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁

数据库中的锁

页级:引擎 BDB
表级:引擎 MyISAM
行级:引擎 INNODB

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

适用:从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。

查看数据库引擎命令
查看MySQL提供的所有存储引擎

show engines

在这里插入图片描述
从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。

查看MySQL当前默认的存储引擎

我们也可以通过下面的命令查看默认的存储引擎。

show databases; # 先查看数据库名
use databse_name; # 进入数据库
show tables_name; # 查看数据库中的表

show table status like "table_name";

在这里插入图片描述
简单了解完数据库引擎之后还要去了解数据库索引,两者关联性比较强,而且也是面试常考点~~

猜你喜欢

转载自blog.csdn.net/weixin_41948075/article/details/100130937
今日推荐