Mysql存储引擎(二)------Mysql常用存储引擎
前言
一、 回顾:
在上一篇博文中对数据库的存储引擎有了一个基本的认识,在接下来的这篇博文中我们分别对mysql的常用存储引擎来进行一个基本的了解,然后在接下来的博文中再
进行一个相对细致的讲解。此文,需要讲解以下几个问题:
1、 Mysql都有哪些存储引擎?
2、 这些存储引擎分别有什么含义和功能?
3、Mysql中存储引擎的基本操作?
二、分述:
1、 Mysql都有哪些存储引擎?
在上一篇博文中有说到如何查看当前Mysql数据库支持哪些类型的存储引擎,如图1显示当前数据库支持的存储引擎格式:
图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默认是关闭的,需
要手动开启,在配置文件里添加:
查看是否开启:
图2:
从图2中可以清晰的看出默认是关闭的。
3、Mysql中存储引擎的基本操作?
①、 查看数据库可以支持的存储引擎:
图3:
②、 查看表结构等信息的若干命令:
在数据库的开发过程中可以使用如下命令查看表的定义结构:
1、desc [ribe] tableName;//查看数据表的结构;
图4
2、show create table tableName;//显示表的创建语句
图5:
从上图可以看出该表默认的存储引擎为InnoDB;
3、show table status like 'tablename'\G//显示表的当前状态,如图5
图5
如图5也可以看出当前表的存储引擎信息。
③、 设置或修改表的存储引擎;
1、创建数据库表的时候设置存储引擎的基本语法:
create table tableName(
columnName(列名1) type(数据类型) attri(属性设置),
columnName(列名2) type(数据类型) attri(属性设置),
)engine=engineName;
在此举一个例子,假如需要创建一个表user_engine表其中包含用户名(userName),id(编号),密码(password).并且设置表类型为merge。则可以使
用如下的语句完成。
图6
2、修改指定表的存储引擎的发育法:
Alter table TableName engin = enginName;
图7
如上图所示,其中标注①为修改表的存储引擎语句。标注②为查看修改后的内容。
本文参照文章:http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html