赞
踩
InnoDB是一个事务型引擎,也是最重要使用最广泛的存储引擎。InnoDB的设计目标是处理大量短事务,短事务大部分情况是正常提交的,很少会回滚。一般的业务处理中,应该首选InnoDB存储引擎。
InnoDB的数据存储在表空间,表空间是由一些列数据文件组成。InnoDB可以将每个表的数据和索引文件存放在单独的文件中。
InnoDB使用MVVC来支持高并发。
InnoDB支持四个事务隔离级别(四个事务隔离级别参考:事务与事务隔离级别-MySQL),通过间隙锁(next-key locking)解决幻读。间隙锁是锁住范围,间隙锁参考:MySQL官方:Next-Key Locks。
InnoDB表是基于聚簇索引建立的。
InnoDB可以在内存中创建哈希索引加速读操作,这种索引也称为:自适应哈希索引(adaptive hash index),InnoDB是不支持基于文件的哈希索引的,这个要额外注意。
InnnDB支持热备份,比如使用开源的XtraBackup可以做热备份,其他存储引擎不支持热备份。
更多InnoDB特性(官方):
MyISAM存储引擎也提供了大量的功能特性:全文索引、压缩、空间函数。MyISAM不支持事务和行级锁,所以崩溃后无法安全恢复。
MyISAM将表存储在两个文件中:数据文件和索引文件。MyISAM可以存储的记录大小一般受限于操作系统单个文件大小和物理硬盘大小。
锁:MyISAM是表锁,查询时对整张表加共享读锁,修改时对表加排他写锁。并发插入是业务的一个常态,MyISAM存储引擎有一个系统变量CONCURRENT INSERT用来控制并发插入行为:
更多特性:
Memory引擎是将表结构数据存储在硬盘中,数据存放在内存中的存储引擎。因为所有的数据都存在内存中, 所以读取和写入速度非常快,因为没有磁盘I/O。但是Memory表中的数据在遇到系统崩溃、硬件错误或断电问题后数据全部丢失。
尽管如此,Memory存储引擎依然可以适用于以下场景中:
Memory存储引擎支持哈希索引,所以查询速度快。
更多Memory存储引擎特性参考:
CSV存储引擎将数据记录到文本文件中,并且值要以逗号分割。
CSV可以在运行时将文件拷入和拷出件到数据目录中,拷入文件后可以立即在查询到数据。
CSV存储引擎不支持索引、不支持分区、表不能存在空列,必须都是非空。
Archive存储引擎在数据写入时将数据压缩,数据压缩采用zlib无损压缩;在读取数据时将数据解压。
写入时将行数据压缩,读取时将行数据解压。
Archive存储引擎支持INSERT、REPLACE、SELECT,不支持DELETE、UPDATE、ORDER BY、BLOB数据类型和空间数据类型。
Archive存储引擎支持自增列属性。
Archive存储引擎不支持索引。
BlockHole(黑洞)存储引擎会丢弃所有写入的数据,所以尝试从BlockHole表中读取数据只能得到空结果。BlockHole存储引擎定位于MySQL Server间复制数据的过滤。假设你的应用需要一部分binlog日志数据,但是MySQL Server默认是将所有binlog数据传输给复制客户端,所有的binlog有可能太大了,所以可以使用BlockHole存储引擎对binlog进行过滤。
高性能MySQL作者说他在使用BlockHole存储引擎来完成特殊复制架构时碰到很多问题,并不推荐。
Merge引擎是MyISAM引擎的一个变种,专门用来将MyISAM的表合并成一张虚拟表,这样使用MyISAM表就像使用一张表一样方便。
Fedrated存储引擎是用来访问远程MySQL数据库的,当你查询Fedrated存储引擎表时,Fedrated存储引擎会自动从远程读取数据,但是数据不会存储到本地表。
Example是用来向MySQL数据库引擎开发人员展示如何编写一个新的存储引擎。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。