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.cnhttp://www.bianceng.cn/database/MySQL/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, 存储
, 数据
, 引擎
, 数据库引擎
, 支持
, innodb
, RethinkDB
, 存储引擎
, 数据引擎
, mysql存储引擎选择
, mysql存储引擎比较
, MySQL数据库引擎
Infobright
主流工作流引擎介绍、mysql 存储引擎、mysql存储引擎比较、mysql memory存储引擎、mysql的存储引擎,以便于您获取更多的相关知识。

时间: 2024-08-22 10:03:57

MySQL的主流存储引擎介绍的相关文章

关于mysql的MERGE存储引擎简单例子

关于mysql的MERGE存储引擎简单例子 作用:可以将多个表结构相同的表 和合并到一个表中 版本支持:mysql5.1 如下例子: 假设有如下几个表:结构完全相同 article_0,article_1,article_2,article_3,   -- Table "article_0" DDL CREATE TABLE `article_0` (   `id` bigint(20) NOT NULL,   `subject` varchar(200) NOT NULL,   `c

MySQL查看修改存储引擎总结

本文总结了MySQL下查看.修改存储引擎的一些方法.测试.验证环境为MySQL 5.6 ,如有差异,请以实际版本为准   1:查看MySQL的存储引擎信息   1.1 使用show engines命令. Support列, YES表示当前版本支持这个存储引擎, DEFAULT表示该引擎是默认的引擎.NO表示不支持该存储引擎.如下所示,InnoDB是默认的存储引擎.   1.2 可以查看系统变量default_storage_engine或storage_engine        1:defau

MySQL数据库MyISAM存储引擎转为Innodb的方法_Mysql

mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Innodb.步骤如下: 1.导出CentOS数据库的表结构 复制代码 代码如下: mysqldump -d -uxxx -p centos > centos_table.sql 其中-d参数表示不导出数据,只导出表结构 2.替换centos_table.sql里的MyISAM为INNODB 复制代码 代码如下:

mysql基础之存储引擎

原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务,锁表 Innodb, 批量插入相对较慢,支持事务,锁行. 常见引擎: 一个数据库目录解析:

MySQL修改表存储引擎安全做法

1.真接修改.在数据多的时候比较慢,而且在修改时会影响读取性能.my_table是操作的表,innoDB是新的存储引擎.  代码如下 复制代码 ALTER TABLE my_table ENGINE=InnoDB2. 导出,导入.这个比较容易操作,直接把导出来的sql文件给改了,然后再导回去.用mysqldump ,枫哥常用的是navicate那样更容易上手.友情提醒风险较大. 3.创建,插入.这个比第一种速度快, 安全性比第二种高,推荐.分2步操作 a.创建表,先创建一个和要操作表一样的表,然

《MySQL技术内幕:InnoDB存储引擎第2版》——第1章 MySQL体系结构和存储引擎

第1章 MySQL体系结构和存储引擎 MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,如Linux,Solaris.FreeBSD.Mac和Windows.尽管各平台在底层(如线程)实现方面都各有不同,但是MySQL基本上能保证在各平台上的物理体系结构的一致性.因此,用户应该能很好地理解MySQL数据库在所有这些平台上是如何运作的.

MySQL修改表存储引擎方法总结

MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引擎的修改.有三种方式,列表如下. 1.真接修改.在数据多的时候比较慢,而且在修改时会影响读取性能.my_table是操作的表,innoDB是新的存储引擎.  代码如下 复制代码 ALTER TABLE my_table ENGINE=InnoDB 2.导出,导入.这个比较容易操作,直接把导出来的sql文件给改了,然后再导回去.用mysqldump ,枫哥常用的是navicate那样更容易上手.友情提醒风险较大. 3.创建

mysql 的存储引擎介绍

在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能. 例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL

MySQL数据库的存储引擎简介

[导读]在这篇文章中,我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎. 存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能. 例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎.内存存储引擎能够在内存中存储所有的表格数据.又或者,你也许需要一个支持事务处理的数据库(以确保