目录
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据,不同的存储引擎有这不同的作用,体现着数据库中不同的功能。
1、什么是存储引擎呢?
说到 “存储引擎”,间接地会想到 “搜索引擎”。跟浏览器打交道的人,基本知道什么是搜索引擎。下面来简单介绍一下什么是搜索引擎,在介绍存储引擎就更好理解了。
搜索引擎 : 是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。(大白话说: 就是你在百度搜索 “引擎”,百度会根据搜索的关键字,进行蜘蛛爬虫去网上海选,最终将结果展示在你的搜索页面中,这就是搜索引擎干的活)。
有了搜索引擎的基本了解,我们来继续说说存储引擎。先看看官方是怎样定义的:
存储引擎(官方): 是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是插件式存储引擎。
自我理解的存储引擎: 比如浏览器的搜索引擎,有许许多多的种类,他们根据关键字进行搜索,展示,有的速度快,有的效率高,有优点,有缺点等等,那么MySQL的存储引擎,是根据数据库的数据进行创建,查询,更新和删除,来决定使用哪种存储引擎机制,而存储引擎顾名思义也就是将数据进行操作时,对数据库效率的提高和安全性。
2、查询存储引擎的类型
使用Dos 命令来查看MySQL使用的引擎,命令的输出为(我用的软件是:Navicat Premium):
返回结果:
因此我所使用的存储引擎是 :MyISAM。
3、常见的存储引擎以及区别:
MyISAM
它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
1、 .frm (存储表结构)
2.、 MYD (MYData,存储数据)
3、 MYI (MYIndex,存储索引)
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。
InnoDB
InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。我的电脑上安装的MySQL 5.6.13版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择。
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。
MEMORY
MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中。这些特性与前面的两个很不同。
MEMORY默认使用哈希索引。速度比使用B型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。
注意,MEMORY用到的很少,因为它是把数据存到内存中,如果内存出现异常就会影响数据。如果重启或者关机,所有数据都会消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。
4、总结存储引擎:
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。