PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 数据库 >> MySQL >> 

Mysql 表属性详解

Mysql 表属性详解

来源:互联网  作者:佚名  发布时间:2008-08-16
存储引擎 MySQL支持许多不同的存储引擎,有时候也称作表格类型

存储引擎
MySQL支持许多不同的存储引擎,有时候也称作表格类型。数据库每个表可以有不同的存储引擎

,而且可以轻松地对它们进行转换。
CREATE TABLE tablename TYPE=typename
可能的表格类型包括:
1 MyISAM--这是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法)的缩写,它是存储记录和文件的标准方法。与其它存储引擎相比较,MyISAM具有和修复表格的大多数工具。MyISAM表格可以被压缩,而且它们支持全文搜
索。它们不是事务安全的(关于事务的概念,稍后会讲),而且也不支持外键。
2 ISAM--如上所描述的。ISAM表格的使用已经被废弃了。
3 MEMORY(也就是以前的HEAP)--该类的表存储在内存中,表的索引是哈希分布的。这使
得MEMORY表格非常快,但是如果发生崩溃,数据将丢失。这些特性使得MEMORY表非常适合保
存临时数据或者派生的数据。应该在CREATE TABLE语句中指定MAX_ROWS,否则这些表可
能会吞噬所有的内存。同样,它们也不能具有BLOB、TEXT或AUTO INCREMENT列。
4 MERGE--这些表允许你为了查询的目的,把MyISAM表的集合作为一个单个表。因此,你


可在某些操作中避开最大文件大小限制。
5 BDB--这种类型的表是事务安全的,也就是说,它们可以提供COMMIT秋ROLLBACK功能
,但使用起来比MyISAM表速度慢,但是可以提供使用事务的所有优点。这些表格都是基于
Berkeley DB的。
6 InnoDB--这种类型的表是事务安全的。它与BDB类型具有相同的特性。它们还支持外键。
InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,
建议使用它。
  在大多数Web应用程序中,通常都会使用MyISAM或InnoDB表格或者二者的结合。
  当对一个表格使用大量的SELECT或INSERT语句(或者二者的结合)时,应该使用MyISAM
表格,因为在执行这两种命令时,MyISAM是最快的。对于许多Web应用程序(例如分类)来说
,MyISAM是最佳选择。如果需要全文搜索功能,也应该使用MyISAM。当事务非常重要(例如存
储财务数据的表格),或在INSERT和SELECT语句是交错执行的情况下(例如在线论坛系统),
应该使用InnlDB.对于临时表格或要是实现视图,可以使用MEMORY表格。如果需要处理大量的MyISAM表格,可以使用MERGE表格。
  使用ALTER TABLE语句,可以在创建表格后修改表格的类型,如下所示:
  ALTER TABLE tablename TYPE=typename;

事务
事务是确保数据库一致的机制,尤其是在发生错误或服务器崩溃情况下确保一致的机制。
事务是一个或一系列的查询,这些查询可以保证能够在数据库中作为一个整体全部执行或者全部
不执行。这样,数据库才能在无论任务是否完成的情况下保持一致状态。

ISAM 原来的表处理器
MyISAM 全新二进制可移植的表处理器
HEAP 用于该表的数据仅仅存储在内存中
MyISAM
在MySQL 3.23中,MyISAM是缺省表格类型,它是基于ISAM代码并且有很多有用的扩展。索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中。你能用myisamchk实用程序检查/修复MyISAM表。见13.4 对崩溃恢复使用myisamchk。下列几点在MyISAM中是全新的:
不用删除行,可以在表中INSERT一个新行,在其他线程从表中正在读取的同时。
在支持大文件的文件系统/操作系统上支持大文件(63位)。
所有的数据首先存储低字节,这使数据独立于机器和OS,唯一的要求是机器使用补2有符号整数(就像最近20年时间内的每台机器)和IEEE浮点格式(也在主流机器上完全主导地位)。不能支持二进制兼容性的机器的唯一领域是嵌入式系统(因为他们有时有古怪的处理器)。
所有的数字键先存储高字节以获得更高的索引压缩。
AUTO_INCREMENT列的内部处理。MyISAM将自动地在INSERT/UPDATE时更新它。 AUTO_INCREMENT值可以用myisamchk重新设置,这将使得AUTO_INCREMENT列更快速并且原来的数将不象老的ISAM那样被重新使用。注意,当一个AUTO_INCREMENT定义在一个多部键值(multi-part-key)的结尾时,老式的行为仍然是存在。


BLOB和TEXT列可以被索引。
被索引的列允许NULL值。每个键占0-1个字节。
现在最大的键长度缺省是500个字节。在键大于250个字节的情况下,一个大于缺省的1024个字节的关键字块大小被用于此键。
每个表的键的最大数目放大到32作为缺省。这不必重新编译myisamchk就可以放大到64。
在有一个标志MyISAM显示桌子是否正确被关上的文件。这将不久被用于自动的修理在MySQL服务器。
现在myisamchk将标记表为“检查的”。myisamchk --fast将仅仅检查那些没有这个标记的表。
myisamchk -a存储键值组成部分的统计(不只是像ISAM对整个键)。
现在在删除与更新和插入混用时,动态尺寸的行将有更少碎片,这通过自动合并相邻的删除块并且如果下一块被删除,通过扩大块来做到。
myisampack能紧缩BLOB和VARCHAR列。
MyISAM也支持下列东西,MySQL在不久的将来将能使用。
Tags: 数据表   表类型   mysql   属性   sql    
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号