加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_镇江站长网 (https://www.0511zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL的主流存储引擎介绍 - MySQL教程

发布时间:2014-05-15 19:35:07 所属栏目:MySql教程 来源:站长网
导读:我们知道MySQL最大的特色是其可插拔的插件式存储引擎,本文将介绍目前市面上主流的存储引擎。这里要特别提一 点:由于MySQL是开源的,所以如果你对某些存储引擎
我们知道MySQL最大的特色是其可插拔的插件式存储引擎,本文将介绍目前市面上主流的存储引擎。这里要特别提一 点:由于MySQL是开源的,所以如果你对某些存储引擎不满意,可以修改或写一个存储引擎,增加自己想要的特性(据我 所知,国内比较知名的有网易的TNT引擎),这也是MySQL作为开源数据库的魅力之一。

有些人刚接触MySQL的时候可能会有些惊讶,竟然有不支持事务的存储引擎,因为学过关系型数据库理论的人都知道 ,事务是关系型数据库的核心。但是在现实应用中(特别是互联网),为了提高性能,在某些场景下可以摈弃事务。

InnoDB

InnoDB是MySQL使用率最高的存储引擎,目前市面上至少95%的MySQL采用该存储引擎,因此从MySQL5.5开始 ,它替代MyISAM成为默认的存储引擎。它有如下几个特点:

1)支持事务:采用MVCC(多版本并发控制)来支持高并 发,实现了四个ANSI标准的隔离级别,默认为Repeatable Read,并且通过间隙锁(next-key lock)防止幻读。

2) InnoDB的表是基于聚簇索引,对主键查询有很高的性能,但它的二级索引必须包含主键列。

3)支持热备份:Oracle 提供的MySQL Enterprise Backup和Percona提供的开源的XtraBackup都可以实现热备

4)支持行级锁

MyISAM

1) 不支持行级锁,也就是说任何操作都对整张表加锁。

2)不支持事务,无法回滚,崩溃后无法安全恢复。

3)支持 全文索引、压缩、空间函数等

MyISAM设计简单,数据以紧密格式存储,在某些场景下性能很好,但 它最典型的问题 还是表锁。

Archive

是一个针对高速插入和压缩做了优化的简单引擎,只支持insert和select操作,每次select都 是全表扫描,适合日志和数据采集应用。

CSV

可以将普通的csv文件作为MySQL的表处理,可以将excel的数据存储 为csv格式文件,然后复制到MySQL的数据目录下,就能在MySQL中以表的方式打开,因此CSV引擎作为一种数据交换机制 ,非常有用。

Memory

所有的数据都保持在内存中,重启后数据会丢失。Memory表是表级锁,因此写性能较低,但 它的查询性能非常高,支持Hash索引。

NDB集群

MySQL服务器、NDB集群存储引擎,以及分布式的、share-nothing的、容灾的、高可用的NDB数据库组合成为MySQL集 群。

以上介绍的都是MySQL内建的存储引擎,以下是第三方的存储引擎。

XtraDB、PBXT

是Percona公司基于InnoDB的一个改进版本

TokuDB

一种大数据的存储引擎。

RethinkDB

为固态存储SSD设 计。

Infobright

面向列的存储引擎,为数据分析和数据仓库设计。

如何选择合适的存储引擎?

准则1:除非需要用到InnoDB没有的特性,否则都应该优先选择InnoDB引擎。

准则2 :不要混合使用多种存储引擎。

改变表的存储引擎

有三种方法可以改变表的存储引擎,最常见的一种是:

alter table mytbl engine = InnoDB;

但这种方法有一个问题:需要执行很长时间,因为MySQL将按行把数据从原表复制到新表。

第2种方法是利用 mysqldump工具将数据导出到文件,然后修改导出的文本文件中的create table语句的存储引擎选项。

最后一种方法 是创建一个新的存储引擎的表,然后利用insert...select语句来导数据:

create table newtbl like oldtbl;  
alter table newtbl engine=innodb;  
insert into newtbl select * from oldtbl;

查看本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

(编辑:应用网_镇江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!