数据库中的存储引擎其实是对使用了InnoDB、HEAP(也称为MEMORY)、CSV、BLACKHOLE(黑洞引擎)、ARCHIVE、PERFORMANCE_SCHEMA、 Berkeley、Merge、Federated和Cluster/NDB等,

下面逐次介绍一下各种引擎:

 ISAM
        该引擎在读取数据方面速度很快,而且不占用大量的内存和存储资源;但是ISAM不支持事务处理、不支持外来键、不能够容错、也不支持索引。该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。

MyISAM
        该引擎基于ISAM数据库引擎,但同样不提供事务的支持,也不支持行级锁和外键。因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,于是当进行Select
count(*) from
table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首先

Innodb引擎

  Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select
count(*) from
table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。

补充2点:

1.大容量的数据集时趋向于选择Innodb。因为它支持事务处理和故障的恢复。Innodb可以利用数据日志来进行数据的恢复。主键的查询在Innodb也是比较快的。

2.大批量的插入语句时(这里是INSERT语句)在MyIASM引擎中执行的比较的快,但是UPDATE语句在Innodb下执行的会比较的快,尤其是在并发量大的时候。

2.两种引擎所使用的索引的数据结构是什么?

答案:都是B+树!

MyIASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。也就是说它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引。

Innodb引擎的索引的数据结构也是B+树,只不过数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。

 HEAP(也称为MEMORY)
        该存储引擎通过在内存中创建临时表来存储数据。每个基于该存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该磁盘文件只存储表的结构,而其数据存储在内存中,所以使用该种引擎的表拥有极高的插入、更新和查询效率。这种存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,但也可以使用B树型索引。由于这种存储引擎所存储的数据保存在内存中,所以其保存的数据具有不稳定性,比如如果mysqld进程发生异常、重启或计算机关机等等都会造成这些数据的消失,所以这种存储引擎中的表的生命周期很短,一般只使用一次。

 CSV(Comma-Separated Values逗号分隔值)
     
  使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中的和该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型的文件当做表进行处理),这种文件是一种普通文本文件,每个数据行占用一个文本行。该种类型的存储引擎不支持索引,即使用该种类型的表没有主键列;另外也不允许表中的字段为null。

BLACKHOLE(黑洞引擎)
        该存储引擎支持事务,而且支持mvcc的行级锁,写入这种引擎表中的任何数据都会消失,主要用于做日志记录或同步归档的中继存储,这个存储引擎除非有特别目的,否则不适合使用。

 ARCHIVE(档案引擎)
        该存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。

PERFORMANCE_SCHEMA
     
  该引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)。

  Berkeley(BDB)
        该存储引擎支持COMMIT和ROLLBACK等其他事务特性。该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。
  Merge
        该引擎将一定数量的MyISAM表联合而成一个整体。
  Federated
        该存储引擎可以不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。这种存储引擎非常适合数据库分布式应用。
  Cluster/NDB
        该存储引擎用于多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全和性能要求高的场景。

最新文章

  1. [Android Pro] 关于inputStream.available()方法获取文件的总大小
  2. Jquery each() 如何操作动态添加的DOM元素
  3. XAMPP里tomcat启动报错:Make sure you have Java JDK or JRE installed and the required ports are free
  4. 关于Android的onResume的2点体会(程序切换之后恢复状态)
  5. c# 取得ip地址和网关
  6. 怎么在SQL Server 2008中还原.mdf数据文件
  7. 基于visual Studio2013解决算法导论之047赫夫曼编码
  8. Java项目和maven项目中如何获取&设置配置文件中的属性
  9. es6 模板字变量和字符串占位符
  10. 【NOI2002】银河英雄传说(并查集)
  11. bzoj 4008: [HNOI2015]亚瑟王
  12. tomcat中的线程问题
  13. Azure WebJob-Custom Schedule for Azure Web Job Timer Triggers
  14. Java 开发笔记
  15. Python解释器的安装
  16. php 把一个一维数组的值依次赋值到二维数组中的每一项
  17. EnumMap实现类
  18. sublime text3 JS语法检测插件
  19. codeblocks 配置OpenGL
  20. Redis 的安装配置介绍

热门文章

  1. 关于服务器jdk版本和代码编译调试兼容问题
  2. python read文件的r和rb的区别
  3. jquery mobile 带参数跳转收集(紧个人使用,测试完会补全)
  4. gearman mysql持久化
  5. PAT 天梯赛 L1-029. 是不是太胖了 【水】
  6. iOS 关于自动更新的分阶段发布(灰度发布)的相关简介
  7. 初学JQuery相关知识点
  8. qt的udp的初步使用(转)
  9. Struts2笔记03——架构(转)
  10. require.js和sea.js的区别