MySQL两种引擎的区别

Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。 MyIASM引擎 MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些。不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。 主要区别: 1、MyIASM是非事务安全的,而InnoDB是事务安全的 2、MyIASM锁的粒度是表级的,而InnoDB支持行级锁 3、MyIASM支持全文类型索引,而InnoDB不支持全文索引 4、MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM 5、MyIASM表保存成文件形式,跨平台使用更加方便 应用场景: 1、MyIASM管理非事务表,提供高速存储和检索以及全文搜索能力,如果再应用中执行大量select操作,应该选择MyIASM 2、InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,应该选择InnoDB

原文地址:https://www.cnblogs.com/xiaogou/p/11655559.html

时间: 2024-10-31 19:43:48

MySQL两种引擎的区别的相关文章

mysql 两种引擎的比较

参考链接:https://blog.csdn.net/feeltouch/article/details/65459028 文章摘要: 两种引擎的名称是:Innodb 和 MyIASM. Innodb 支持事务.行级锁.外键.MyIASM 不支持事务.行级锁.外键. 当读操作多于写操作,且不需要支持事务时,可以使用 MyIASM 引擎. 原文地址:https://www.cnblogs.com/mexding/p/9427257.html

Mysql两种引擎

Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,mysql运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引.但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表.当需要使用数据库事务时,该引擎当然是首选.由于锁的粒度更小,写操作不会

分享知识-快乐自己:mysql数据库常见两种引擎

mysql的常用引擎 在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 首先: 1.简单介绍这两种引擎,以及该如何去选择. 2.这两种引擎所使用的数据结构是什么. Innodb引擎: 1):Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持.并且还提供了行级锁和外键的约束.它的设计的目标就是处理大数据容量的数据库系统.它本身实际上是基于Mysql后台的完整的系统.Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引.但是,该引擎是不

数据库的两种引擎Innodb和MyIASM

Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔 离级别这篇文章.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL 运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引.但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表

UIImage两种初始化的区别

UIImage可以通过以下两种方式进行初始化: 1 //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] 2 UIImage *image = [UIImage imageNamed:@"v_red_heart_selected"]; 1 //第二种初始化方式:[必须拼接图片的全名称,否则image的路径为空] 2 NSString *filePath = [[NSBundle mainBundle] pathForResou

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

UIimage两种初始化的区别 广告轮播封装

UIimage两种初始化的区别 第一种初始化: UIImage *image = [UIImage imageNamed:@"xxx"];  注意(这种方法加载的图片如果后缀名是png的,可以不写后缀名,根据屏幕分辨率自己去匹配图片) 第二种初始化: NSString *path = [[NSBundle mainBundle] pathForResource:@"xxx.png" ofType:nil]; UIImage *image = [[UIImage al

jsp两种include指令区别

[转]:http://www.cnblogs.com/lazycoding/archive/2011/04/04/two_include.html <%@ include file="relativeURI"%> <jsp:include page="relativeURI" flush="true" /> 首先说明这两种都是什么: <%@ include file="relativeURI"%&

UIImage 两种初始化的区别

UIImage 两种初始化的区别 1.使用imageNamed:第一次读取的时候,先把这个图片放到缓存里,下次再使用到这个图片的时候直接从缓存中读取(优点:方便快捷,只有第一次使用的时候稍微慢,接下来在使用就会快点:缺点:如果在当前工程中只使用一次会浪费内存)[这个内次在程序关闭的时候才释放] 2.使用initWithContentsOfFile:每次都会根据路径去读取,不会占用内存,如果图片在当前工程中只使用一次,应该选用这个方法