Mysql存储引擎(二)------Mysql常用存储引擎

前言

一、 回顾:

上一篇博文中对数据库的存储引擎有了一个基本的认识,在接下来的这篇博文中我们分别对mysql的常用存储引擎来进行一个基本的了解,然后在接下来的博文中再 进行一个相对细致的讲解。此文,需要讲解以下几个问题:

1、 Mysql都有哪些存储引擎?
2、 这些存储引擎分别有什么含义和功能?
3、Mysql中存储引擎的基本操作?


二、分述:

1、 Mysql都有哪些存储引擎?

在上一篇博文中有说到如何查看当前Mysql数据库支持哪些类型的存储引擎,如图1显示当前数据库支持的存储引擎格式:
Mysql存储引擎(二)------Mysql常用存储引擎

图1:

如上图第一列显示的即为数据库具有的存储引擎类型。下文分别对这些常用的存储引擎进一步解释。

2、 这些存储引擎分别有什么含义和功能?


①、MyISAM引擎: 

这种存储引擎是Mysql数据库最早提供的。这种存储引擎又可以细分为:静态MyISAM,动态MyISAM和压缩MyISAM三种。
静态MyISAM:
如果数据表中的各数据长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中的每一条记录所占用的控件都是一样的,所以这种表存 取和更新的效率非常高。当表中的数据受损时回复工作页非常容易做。

动态MyISAM:
如果数据表中出现varchar,xxxText或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储控件比较小,但是由于每 一条记录的存储空间不一致,所以多次修改数据之后,数据库表中的数据就可能离散的存储在内存中,进而导致执行效率下降,同时内存中也可能村子许 多碎片,因此,这种类型的表需要经常用"optimize table"命令或优化工具来进行碎片整理。

压缩MyISAM:

以上说到的两种类型的表都可以使用myisamchk工具压缩。这种类型的表进一步减少了占用的内存,但是这种压缩之后不能再修改。另外,因为是压 缩数据,所以这种表在读取的时候需要先执行解压缩操作。

但是,不管何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。

②、MyISAM Merge引擎:


这中存储引擎是MyISAM的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。长应用于日志和数据仓库。

③、InnoDB引擎:

InnoDB存储引擎可以看作是MyISAM进一步更新产品,它提供了事务,行级锁和外键约束等功能。

④、memory(heap)引擎:


这种类型的表只存在于内存中。它使用的是散列索引,所以数据的存取速度非常快,因为是存在语内存中,所以这种类型常用于临时表中。

⑤、archive引擎:

这种类型的只支持select和Insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

⑥、PERFORMANCE_SCHEMA引擎:

MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。并且库里表的存储引
擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.5默认是关闭的,需
要手动开启,在配置文件里添加:

查看是否开启:
     Mysql存储引擎(二)------Mysql常用存储引擎
图2:

从图2中可以清晰的看出默认是关闭的。


3、Mysql中存储引擎的基本操作?

①、 查看数据库可以支持的存储引擎:


Mysql存储引擎(二)------Mysql常用存储引擎
图3:

②、 查看表结构等信息的若干命令:

在数据库的开发过程中可以使用如下命令查看表的定义结构:
1、desc [ribe] tableName;//查看数据表的结构;
Mysql存储引擎(二)------Mysql常用存储引擎
图4
2、show create table tableName;//显示表的创建语句
Mysql存储引擎(二)------Mysql常用存储引擎
图5:
从上图可以看出该表默认的存储引擎为InnoDB;

3、show table status like 'tablename'\G//显示表的当前状态,如图5

Mysql存储引擎(二)------Mysql常用存储引擎
图5

如图5也可以看出当前表的存储引擎信息。

③、 设置或修改表的存储引擎;

1、创建数据库表的时候设置存储引擎的基本语法:

create table tableName(
columnName(列名1) type(数据类型) attri(属性设置),
columnName(列名2) type(数据类型) attri(属性设置),
)engine=engineName;

在此举一个例子,假如需要创建一个表user_engine表其中包含用户名(userName),id(编号),密码(password).并且设置表类型为merge。则可以使 用如下的语句完成。

Mysql存储引擎(二)------Mysql常用存储引擎
图6

2、修改指定表的存储引擎的发育法:

Alter table TableName engin = enginName;
Mysql存储引擎(二)------Mysql常用存储引擎
图7
如上图所示,其中标注①为修改表的存储引擎语句。标注②为查看修改后的内容。

本文参照文章:http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html