分类: Mysql/postgreSQL
2009-07-11 14:09:55
MySQL数据表支持六种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB,这六种又分为两类,单独一类是BDB,称为"事务安全型"(transaction-safe),其余都属于第二类,称为“非事务安全型"(non-transaction-safe)。下面详细介绍这些表:
事务安全型
BDB 全称是"Brekeley DB",它是Mysql具有事务能力的表的类型,由Sleepycat Software ()开发。它提供了事务控制能力功能,它确保一组命令全部执行成功,或者当任何一个命令出现错误时所有命令的结果都被回退,可以想像在电子银行中事务控制能力是非常重要的。
非事务安全型
HEAP
HEAP表是MySQL表中访问最快的表,主要是由于这类表使用保存期在内存中的散列索引,但必须注意的是,如果MySQL或者服务器崩溃,表中数据全部丢失。
ISAM
ISAM表是MyISAM类型出现之前,MySQL表使用的默认类型,建议改用MyISAM。
MEREG
MEREG是一种值得关注的新式表,它是由一组MyISAM表组成,之所合并主要出于性能上考虑,因为它能够提高搜索速度,提高修复效率,节省磁盘空间。
MyISAM
MyISAM是MySQL表默认的类型,它是基于ISAM类型,但它增加了许多有用的扩展,下面是MyISAM一些优点:
1.比ISAM表更小,所占资源更少
2.可以在不同平台间二进制移植
表的类型在创建表时指定。在下面这个例子中我们创建了一个HEAP类型的表:
CODE
InnoBDB
这是最近加入的新表,具有以下特性:
事务处理机制
崩溃后能立即恢复
支持外键功能,级联删除
支持并发能力
在硬盘上的存储方式:InnoBDB frm
数据表的可移植性
通用方法:把数据表的内容导出到一个文本文件中,然后拷贝到硬盘上,导入数据库里面。就文件层次的操作来说,某些数据表是可以单独拷贝的看表
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes
MyISAM表类型是一种比较成熟稳定的表类型,但是MyISAM对一些功能不支持。
|
MyISAM |
InnoDB |
事务 |
不支持 |
支持 |
数据行锁定 |
不支持,只有表锁定 |
支持 |
外键约束 |
不支持 |
支持 |
表空间大小 |
相对小 |
相对大,最大是2倍 |
全文索引 |
支持 |
不支持 |
GIS数据 |
支持 |
不支持 |
COUNT问题 |
无 |
执行COUNT(*)查询时,速度慢 |
一般情况下我觉得选择MyISAM就行,如果需要事务,或者需要很多用户同时修改某个数据表里的数据时,可以考虑InnoDB数据表。