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)

时间: 2024-11-08 09:14:24

mysql中常见的存储引擎和索引类型的相关文章

MySQL中常用的存储引擎(MyISAM 和InnoDB)

 数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能.现在许多的数据库管理系统都支持多种不同的存储引擎.MySQL的核心就是存储引擎. 使用 SHOW ENGINES; 命令查看MySQL支持的存储引擎,  Support 列表示某种引擎是否可以使用,YES表示可以,NO表示不可以,DEFAULT表示当前默认存储引擎. mysql> SH

【3.3】mysql中的Federated存储引擎,远程表,相当于sql server的linked server

MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体实现. FEDERATED是其中一个专门针对远程数据库的实现.一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件. 但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要). 通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能. 1.使用show engines 命令查看数据库是否已支持FED

MySQL中merge表存储引擎用法

在Mysql数据库中,Merge表有点类似于视图.mysql的merge引擎类型允许你把许多结构相同的表合并为一个表.之后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样.每一个合并的表必须有完全相同表的定义和结构. Mysql Merge表的优点:A. 分离静态的和动态的数据B. 利用结构接近的的数据来优化查询C. 查询时可以访问更少的数据D. 更容易维护大数据集E. 可以通过修改.mrg文件来修改Merge表,当然也可以用alter进行修改,修改后要通过FLUSH TABLES

MySQL存储引擎以及索引原理

一.MySQL存储引擎:MySQL将数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.这些不同的技术以及配套的相关功能在 mysql中被称作存储引擎(也称作表类型).建表时,选择合适的存储引擎很重要,如果到后期再更换将会很麻烦.存储引擎是基于表的,而非数据库. 个人理解:存储引擎是某张表存储数据.如何为存储的数据建立索引和更新.查询数据库等技术的实现方法集合及约束.常见的存储引擎如下图: 这里,先总结常用的三种存储

MySQL存储引擎,索引及基本优化策略

存储引擎 与Oracle, SQL Server这些数据库不同,MySQL提供了多种存储引擎.什么是存储引擎?存储引擎其实就是一套对于数据如何存储,查询,更新,建立索引等接口的实现.不同存储引擎特性有所不同,我们根据需要进行选择,比如包含ETL操作的OLTP(联机交易处理)项目中我们通常选择InnoDB,而对于读操作较多几乎没有写操作的OLAP(联机分析处理)则选MyISAM的更多.因此并不是大家都用环境相似,同一版本的MySQL,能够使用的特性就是一致的.在MySQL终端中查看支持的存储引擎,

MySql中启用InnoDB数据引擎的方法

1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

MySql中启用InnoDB数据引擎简介 以及 InnoDB与 MYISAM的区别和联系

1.存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

MySQL学习笔记(1) - 存储引擎概述

和大多数数据库不同,在MySQL中存在一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎. 一.MySQL存储引擎概述 插件式存储引擎是MySQL数据库最重要的特征之一,用户可以根据应用的需要寻找如何存储和索引数据.是否使用事务等.MySQL默认支持多种存储引擎,以适用于不同领域的数据库应用需求,用户可以通过选择选择不同的存储引擎提供应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性. MySQL支持的存储引擎包括MyISAM.In

[转帖]一文看懂mysql数据库本质及存储引擎innodb+myisam

一文看懂mysql数据库本质及存储引擎innodb+myisam https://www.toutiao.com/i6740201316745740807/ 原创 波波说运维 2019-09-29 00:01:00 概述 今天主要讲下mysql数据库引擎的一些概念和mysql数据库本质,一句话总结: 文件夹-文件:一个数据库其实就是一个的文件夹,数据库里面的表就是文件夹里的一个或者多个文件(根据数据库引擎不同而不同,MyISAM是3个,InnoDB是2.5个) mysql的数据库其实就是存放在M