Calendar
数据载入中,请稍候......
Placard
数据载入中,请稍候......
Category
数据载入中,请稍候......
Latest Entries
数据载入中,请稍候......
Latest Comments
数据载入中,请稍候......
Last Messages
数据载入中,请稍候......
User Login
数据载入中,请稍候......
Links
Information
数据载入中,请稍候......
Search
Other


Welcome to my blog!
  MySQL的表类型和存储引擎
 

1. MySQL的表类型由存储引擎(Storage Engines)决定,类型包括MyISAM、innoDB、BDB等。创建表时指定表类型的方法:
CREATE TABLE `message` (
  `id` int(11) NOT NULL auto_increment,
  `sender` varchar(255) default NULL,
  `receiver` varchar(255) default NULL,
  `content` text,
  `is_read` char(1) default 'N',
  `send_time` datetime default NULL,
  `del_flag` tinyint(4) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MYISAM;

也可以创建后更改:ALTER TABLE `message` ENGINE = INNODB;

查看表类型(存储引擎):
SHOW TABLE STATUS FROM test;
结果为数据库test中所有表的信息,其中第二项type即是表的类型。

SHOW CREATE TABLE `message`;
结果为表message创建时的信息,其中有TYPE或ENGINE一项,指定了表的类型(存储引擎)。
注意:show tables不能得到表类型的信息。

老版本的MySQL使用TYPE而不是ENGINE(例如,TYPE = MYISAM)。MySQL 5.1为向下兼容而支持这个语法,但TYPE现在被轻视,而ENGINE是首先的用法。 一般地,ENGINE选项是不必要的;除非默认已经被改变了,MyISAM是默认存储引擎。


2. 常用的存储引擎:

MySQL数据表主要支持六种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB,这六种又分为两类,单独一类是BDB,称为"事务安全型"(transaction-safe),其余都属于第二类,称为“非事务安全型"(non-transaction-safe)。

事务安全型
    BDB 全称是"Brekeley DB",它是Mysql具有事务能力的表的类型,由Sleepycat Software (
http://www.sleepycat.com)开发。它提供了事务控制能力功能,它确保一组命令全部执行成功,或者当任何一个命令出现错误时所有命令的结果都被回退,可以想像在电子银行中事务控制能力是非常重要的。
可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

 非事务安全型

·MyISAM:默认的MySQL插件式存储引擎,它是基于ISAM类型,但它增加了许多有用的扩展,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
优点:
1.比ISAM表更小,所占资源更少
2.可以在不同平台间二进制移植表的类型在创建表时指定。

·HEAP:是MySQL表中访问最快的表,主要是由于这类表使用保存期在内存中的散列索引,但必须注意的是,如果MySQL或者服务器崩溃,表中数据全部丢失。

·ISAM:是MyISAM类型出现之前,MySQL表使用的默认类型,建议改用MyISAM。

·InnoDB:最近加入的新表,用于事务处理应用程序,具有众多特性,包括ACID事务支持。
特性:
事务处理机制
崩溃后能立即恢复
支持外键功能,级联删除
支持并发能力
在硬盘上的存储方式:InnoBDB frm
数据表的可移植性
通用方法:把数据表的内容导出到一个文本文件中,然后拷贝到硬盘上,导入数据库里面。就文件层次的操作来说,某些数据表是可以单独拷贝的看表
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes

·Merge:是一种值得关注的新式表,它是由一组MyISAM表组成,之所合并主要出于性能上考虑,因为它能够提高搜索速度,提高修复效率,节省磁盘空间。允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

·Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

·Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

· Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

· Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

·Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助

[ 阅读全文 | 回复(0) | 引用通告 | 编辑

  Post  by  badboy 发表于 2007-6-9 23:21:00
发表评论:
数据载入中,请稍候......
数据载入中,请稍候......