MySql 存款和储蓄引擎

天涯论坛已开通有一段时间,一贯有想写博客的主见,但苦于文笔及未有系统的知识分享,第一篇博客一向拖到以后。

开垦人士对数据库一定不面生,不过未来的各个ORM框架使得大家不太关爱数据库方面包车型地铁学问储备。后天自己就从数据库原理来享受近年来学到的有的学问。

博客除享受所学外,更关键的是给自身文化的加固。要是有狼狈的地点还请指正,拍砖。

1、引言

     MySQL
数据库独有的插件式体系布局,存款和储蓄引擎是MySQL分裂于别的数据库的二个最关键特点。存款和储蓄引擎的功利是,各样存款和储蓄引擎都有独家的特征,能够根据实际的使用建构分化存款和储蓄引擎表。

     由于 MySQL 数据库开源特性,存款和储蓄引擎可以分为2类:

     第一类:MySQL 官方存储引擎

     第二类:第三方存款和储蓄引擎 如:InnoDB

 

 2、各存款和储蓄引擎介绍

    2.1 InnoDB 存款和储蓄引擎

          InnoDB
存款和储蓄引擎帮助职业,设计入眼面向在线事务管理 (OLTP) 的施用。特点是
行锁设计、协理外键、并协理类似于 Oracle
的非锁定读,暗中同意读取操作不会产生锁。从 MySQL 数据库 5.5.8
版本早先,InnoDB 存储引擎是的囤积引擎。

          InnoDB
存储引擎将数据放在四个逻辑的表空间中,这几个表空间仿佛黑盒同样由 InnoDB
存款和储蓄引擎本身管理。能够将各种 InnoDB 存款和储蓄引擎的表单独置于一个独门的 idb
文件中。

          InnoDB 通过行使多版本并发调整(MVCC) 来赢得高并发性,何况达成了 SQL 标准的4种隔绝品级,黑夜为
REPEATABLE 品级。 InnoDB 存储引擎还提供了插入缓冲
、三遍写、自适应哈希索引、预读等高性能和高可用效率

         对于表中数据的蕴藏,InnoDB
存款和储蓄引擎选用了聚集 (clustered)
的措施,由此每张表的积攒都是按主键的次第实行贮存。若无体现地在表定义时钦定主键,
InnoDB 存款和储蓄引擎会为每一行生成一个 6 字节的 ROWID,
并以此作为主键。 

    2.2 MyISAM 存储引擎

       MyISAM
存款和储蓄引擎不帮助专门的学问、表锁设计,协助全文索引,首要面向一些 OLAP
数据库应用。数据库系统与文件系统十分大的多个不一致之处在于对作业的支撑,可是MyISAM
存款和储蓄引擎是不帮衬专业的。

         MyISAM
存款和储蓄引擎的另一个见仁见智地点是它的缓冲池只缓存 (cache)
索引文件,而不缓冲数据文件,那一点与多数的数据库都差别

         MyISAM 存款和储蓄引擎表由 MYD 和 MYI
组成,MYD 用来贮存数据文件, MYI 用来存放在索引文件。能够通过运用
myisampack 工具来更为收缩数量,由此选取 myisampack
工具压缩后的表是只读的,也能够用 myisampack 来解压数据文件。

         在 MySQL 5.0 版本在此以前, MyISAM
暗中同意帮忙的表大小为 4GB,要是需求援救胜出4G,供给制定 MAX_ROWS 和
AVG_ROW_LENGTH属性。从5.0版本开端,私下认可援助256TB的单表数据。

    2.3 NDB 存储引擎

        NDB 存款和储蓄引擎是贰个集群存款和储蓄引擎,类似于 Oracle
的RAC集群,与之不一致的是,其结构是 share nothing
的集群框架结构,因而能提供更加高的可用性。

          特点:a.
数据总体身处内部存款和储蓄器中,因而主键查找速度不慢,并且通过加NDB
数据存款和储蓄节点能够线性地抓实数据库质量,是高可用、高品质的集群系统。

          注意:NDB 存款和储蓄引擎的总是操作
(JOIN) 是在 MySQL 数据库层完结的,
不是在蕴藏引擎层完毕。意味着复杂的连接操作要求巨大的网络支付,因而查询速度异常慢。

 

   
别的存款和储蓄引擎这里就不一一介绍,有乐趣的童鞋可以经过  MySQL 能力内部原因中了然

 

   
总计:每个存款和储蓄引擎的贯彻都差异,MYSQL
数据的宏图理念和积累引擎的涉嫌要求数据库设计者权衡。

    查看当前MYSQL
数据库所支撑的储存引擎命令: show engings

相关文章