Mysql存储引擎
插件式mysql 存储引擎
mysql 存储引擎, 以插件的形式, 可以根据我们的业务需求设置不同的存储引擎, 并且每种存储引擎都有各自的特点, 能够适合不同的业务场景,对于我们开发人员, 只有充分的了解各种存储引擎后才能真正的发挥mysql的性能, 总体来说,mysql的存储引擎类似与不同的数据存储结构。
InnoDB存储引擎
Mysql 从5.5.8后默认InnoDB存储引擎为默认的存储引擎 ,也是使用率最大的, 被应用于各种系统开发中,那么InnoDB的特点有哪些呢?
- 支持事务
其目的主要是面向在线事务处理(OLTP) 的应用,其特点是支持行锁设计,支持外键,并支持非锁定读, 及默认读取操作不会产生锁。
- InnoDB数据存储方式
InnoDb存储引擎是将数据存储在一个逻辑的表空间里, 而这个逻辑的 表空间 就想一个黑盒子一样, 由InnoDB存储引擎自身进行管理
- InnoDB性能优势
InnoDB通过使用多版本并发控制(MVCC) 来获取高并发性,并且实现了sql标准的4种隔离级别,默认REPEATABLE级别,同时使用next-keylocking的策略来避免幻读的现象产生,而且InnoDB存储引擎还提供了插入缓冲(insert buffer),二次写(double write),自适应哈希索引(adaptive hash index),预读(read ahead)等高性能和高可用的功能
MYISAM存储引擎
Myisam 存储引擎是不支持事务, 不支持表锁设计, 支持全文索引,主要面向一些(OLAP)的数据库应用,此外, Myisam还有一个与众不同的地方是他的缓冲池只是缓存了索引文件,而不是缓存数据文件,这点和大多数数据库都不同。
- Myisam 存储引擎数据存储
Myisam 存储引擎表由MYD和MYI组成,MYD用来存储数据文件,MYI用来存储索引文件。
- Myisam数据大小
Myisam 存储引擎在 mysql 5.0之前支持的表大小为4GB, mysql5.0后默认支持256TB的单表数据,基本上满足一般应用需求。
NDB存储引擎
NDB存储引擎属一种集群存储引擎,类似于oracle 的RAC 集群, 但是不同于oracle的share everthing架构, NDB是一种share nothing的集群架构。
- NDB存储引擎数据存储
DNB存储引擎是数据存储在内存里面的, 因此主键查找的速度非常快,可通过添加节点提升数据库的高可用, 高性能。
- NDB存储引擎连接查询
NDB存储引擎连接查询(JOIN)实在mysql数据库层完成, 而不是在存储引擎层完成的,这意味着复杂的连接操作需要巨大的网络开销,因此查询速度会很慢。
Memory存储引擎
Memory 存储引擎(称之为Heap存储引擎)将表中的数据存在内存中了,如果数据库重启, 或者崩溃,表中的 数据都将消失,适用于临时数据的存储,Memory存储引擎使用哈希索引,而非B+树索引。 因为数据存在内存里面, 所以查询速度非常快,只支持表锁,并发差,不支持TEXT和BLOB类型。
Archive存储引擎
Archive 存储引擎只支持INSERT 和SELECT操作,Mysql5.1开始支持索引,Archive存储引擎最大的特点是将数据使用zlib算法将数据行(row)进行压缩, 压缩比一般可达1:10, 同时能够使用行锁来实现高并发的插入操作。
Mysql 存储引擎的设置查看
查看当前表使用的存储引擎
mysql> show create table emp;
mysql> show table status like 'emp' \G;
查看当前mysql版本支持的存储引擎
mysql> show engines \G;
设置mysql 需要的存储引擎
alter table emp engine=innodb;
主要在此记录一些学习体会, 如有出入,望指正…