mysql中常见的存储引擎和索引类型

Posted 中年程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中常见的存储引擎和索引类型相关的知识,希望对你有一定的参考价值。

存储引擎

 

1.      定义

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而mysql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

 

2.      存储引擎的类型及特点

引擎名称

优点

缺陷

应用场景

MyISAM

独立于操作系统,这说明可以轻松地将其从Windows服务器移植到Linux服务器

不支持事务/行级锁/外键约束

适合管理邮件或Web服务器日志数据

InnoDB

健壮的事务型存储引擎;支持事务/行级锁/外键约束自动灾难恢复/AUTO_INCREMENT

 

需要事务支持,并且有较高的并发读取频率

MEMORY

为得到最快的响应时间,采用的逻辑存储介质是系统内存

当mysqld守护进程崩溃时,所有的Memory数据都会丢失;不能使用BLOB和TEXT这样的长度可变的数据类型

临时表

MERGE

是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表

 

常应用于日志和数据仓库

ARCHIVE

归档的意思,支持索引,拥有很好的压缩机制

仅支持插入和查询功能

经常被用来当做仓库使用

 

详细请参考:

http://blog.csdn.net/codepen/article/details/46678725

http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html#commentform

 

 

索引

Nomal

没什么好说的

Unique

列值不能有重复,主键就是一种特殊的唯一索引

Full Text

用于全文检索,仅可用在MyISAM/InnoDB引擎表格的char、varchar和text的字段上

 

创建:

CREATE TABLE article ( 

          id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 

          title VARCHAR(200), 

          body TEXT, 

           FULLTEXT(title, body) 

) TYPE=MYISAM; 

使用:

--单列,单词

SELECT * FROM `student` WHERE MATCH(`name`) AGAINST(\'聪\')

--多列,多词

SELECT * FROM `student` WHERE MATCH(`name`,`address`) AGAINST(\'聪 广东\')

--用IN BOOLEAN MODE即可以避开50%的门槛限制。

SELECT * FROM `student` WHERE MATCH(`name`) AGAINST(\'聪\' IN BOOLEAN MODE)

 

(详见:http://blog.csdn.net/u011734144/article/details/52817766

 

---------------------------------

B-Tree索引:

B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。B-Tree 索引的物理文件大多都是以 Balance Tree 的结构来存储的,也就是所有实际需要的数据都存放于 Tree 的 Leaf Node ,而且到任何一个 Leaf Node 的最短路径的长度都是完全相同的。

Hash索引:

将索引字段转化为hashcode,在对hashcode进行排序。仅支持Memory引擎。

(详见:http://blog.sina.com.cn/s/blog_6fd335bb0100v1lm.html)

 

以上是关于mysql中常见的存储引擎和索引类型的主要内容,如果未能解决你的问题,请参考以下文章

mysql存储引擎及索引类型都有哪些

mysql 索引中的USING BTREE 的意义

我的MYSQL学习心得 索引

浅谈MySQL存储引擎-InnoDB&MyISAM

MySql存储引擎和索引原理

mysql常见存储引擎特点