MySql 引擎

一、MySql引擎简介:

         MySql的存储引擎和其他数据库的存储引擎相比,最大的不同点就是Mysql的存储引擎是插件式存储引擎。插件式存储引擎是由底层物理结构实现的,负责为数据执行I/O操作,它是基于表而不是基于数据库的,所以可以为每一个表设置不同的存储引擎。

 

二、MySql引擎种类:

         MySql常用的存储引擎有:InnoDB、MyISAM、MRG_MYISAM、MEMORY(HEAP)、BDB、CVS、Archive等。下面简单介绍一下各个存储引擎:

         InnoDB:是MySql 5.5版本以后默认的存储引擎,也是目前Mysql引擎中支持高并发事务控制的引擎。其优点是支持事务、行级锁、外键等功能,缺点是写速度相对较慢。

         MyISAM:是MySql 5.5版本以前默认的存储引擎,也是MySql最早提供的存储引擎。其优点读效率很高,缺点是它不支持事务和外键。对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

         MyISAM引擎根据存储格式又可分为以下3种类型:

         (1)静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易做。

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

         (3)压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时行解压缩。

         MRG_MYISAM这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。

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

         DBD:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

          CVS:把数据以逗号分隔的格式存储在文本文件中。

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

 

三、MySql引擎操作:

       (1)看你的MySQL现在已提供什么存储引擎: mysql> show engines;

       (2)看你的MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%';

       (3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;

        (4)创建数据库表时设置存储存储引擎的基本语法是:

Create table tableName(columnName(列名1)  type(数据类型)  attri(属性设置),……..)

engine = engineName

        (5)修改存储引擎,可以用命令:Alter table tableName engine =engineName

猜你喜欢

转载自guwq2014.iteye.com/blog/2144457