存储引擎

 2、各存储引擎介绍

1、引言

        NDB 存储引擎是一个集群存储引擎,类似于 Oracle 的RAC集群,与之不同的是,其结构是 share nothing 的集群架构,因此能提供更高的可用性。

         对于表中数据的存储,InnoDB 存储引擎采用了聚焦 (clustered) 的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显示地在表定义时指定主键, InnoDB 存储引擎会为每一行生成一个 6 字节的 ROWID, 并以此作为主键。 

博客园已开通有一段时间,一直有想写博客的想法,但苦于文笔及没有系统的知识分享,第一篇博客一直拖到现在。

 

博客除分享所学外,更重要的是给自己知识的巩固。如果有不对的地方还请指正,拍砖。

         MyISAM 存储引擎表由 MYD 和 MYI 组成,MYD 用来存放数据文件, MYI 用来存放索引文件。可以通过使用 myisampack 工具来进一步压缩数据,因此使用 myisampack 工具压缩后的表是只读的,也可以用 myisampack 来解压数据文件。

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

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

         在 MySQL 5.0 版本之前, MyISAM 默认支持的表大小为 4GB,如果需要支持大于4G,需要制定 MAX_ROWS 和 AVG_ROW_LENGTH属性。从5.0版本开始,默认支持256TB的单表数据。

     MySQL 数据库独有的插件式体系结构,存储引擎是MySQL区别于其他数据库的一个最重要特性。存储引擎的好处是,每个存储引擎都有各自的特点,可以根据具体的应用建立不同存储引擎表。

          特点:a. 数据全部放在内存中,因此主键查找速度极快,并且通过加NDB 数据存储节点可以线性地提高数据库性能,是高可用、高性能的集群系统。

 

       MyISAM 存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些 OLAP 数据库应用。数据库系统与文件系统很大的一个不同之处在于对事务的支持,然而MyISAM 存储引擎是不支持事务的。

          InnoDB 存储引擎支持事务,设计主要面向在线事务处理 (OLTP) 的应用。特点是 行锁设计、支持外键、并支持类似于 Oracle 的非锁定读,默认读取操作不会产生锁。从 MySQL 数据库 5.5.8 版本开始,InnoDB 存储引擎是的存储引擎。

 

     第一类:MySQL 官方存储引擎

          注意:NDB 存储引擎的连接操作 (JOIN) 是在 MySQL 数据库层完成的, 不是在存储引擎层完成。意味着复杂的连接操作需要巨大的网络开销,因此查询速度很慢。

    总结:每种存储引擎的实现都不相同,MYSQL 数据的设计思想和存储引擎的关系需要数据库设计者权衡。

    2.1 InnoDB 存储引擎

          InnoDB 存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒一样由 InnoDB 存储引擎自身管理。可以将每个 InnoDB 存储引擎的表单独放到一个独立的 idb 文件中。

开发人员对数据库一定不陌生,但是现在的各种ORM框架使得我们不太关注数据库方面的知识储备。今天我就从数据库原理来分享最近学到的一些知识。

         MyISAM 存储引擎的另一个不同地方是它的缓冲池只缓存 (cache) 索引文件,而不缓冲数据文件,这点与大多数的数据库都不同

    其他存储引擎这里就不一一介绍,有兴趣的童鞋可以通过  MySQL 技术内幕 中了解

    2.2 MyISAM 存储引擎

          InnoDB 通过使用多版本并发控制 (MVCC) 来获得高并发性,并且实现了 SQL 标准的4种隔离级别,黑夜为 REPEATABLE 级别。 InnoDB 存储引擎还提供了插入缓冲 、二次写、自适应哈希索引、预读等高性能和高可用功能

    2.3 NDB 存储引擎

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

本文由澳门威斯尼人平台登录发布于澳门威斯尼人平台登录,转载请注明出处:存储引擎

相关阅读