欢迎来到天天文库
浏览记录
ID:8967949
大小:25.72 KB
页数:7页
时间:2018-04-13
《mysql选择一种表类型》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MySQL选择一种表类型用MySQL,当前(版本3.23.5)你能从一个速度观点在4可用表的格式之间选择。静态MyISAM这种格式是最简单且最安全的格式,它也是在磁盘格式最快的。速度来自于数据能在磁盘上被找到的难易方式。当所定有一个索引和静态格式的东西时,它很简单,只是行长度乘以行数量。而且在扫描一张表时,用每次磁盘读取来读入常数个记录是很容易的。安全性来自于如果当写入一个静态MyISAM文件时,你的计算机崩溃,myisamchk能很容易指出每行在哪儿开始和结束,因此它通常能回收所有记录,除了部分被写入的那个。注意,在MySQL中,所有索引总能被重
2、建。动态MyISAM这种格式有点复杂,因为每一行必须有一个头说明它有多长。当一个记录在更改时变长时,它也可以在多于一个位置上结束。你能使用OPTIMIZEtable或myisamchk整理一张表。如果你在同一个表中有象某些VARCHAR或BLOB列那样存取/改变的静态数据,将动态列移入另外一个表以避免碎片可能是一个好主意。压缩MyISAM这是一个只读类型,用可选的myisampack工具生成。内存(HEAP堆)这种表格式对小型/中型查找表十分有用。对拷贝/创建一个常用的查找表(用联结)到一个(也许临时)HEAP表有可能加快多个表联结。假定我们想要做
3、下列联结,用同样数据可能要几倍时间。SELECTtab1.a,tab3.aFROMtab1,tab2,tab3WHEREtab1.a=tab2.aandtab2.a=tab3.aandtab2.c!=0;为了加速它,我们可用tab2和tab3的联结创建一张临时表,因为用相同列(tab1.a)查找。这里是创建该表和结果选择的命令。CREATETEMPORARYTABLEtestTYPE=HEAPSELECTtab2.aasa2,tab3.aasa3FROMtab2,tab3WHEREtab2.a=tab3.aandc=0;SELECTtab1.a,t
4、est.a3fromtab1,testwheretab1.a=test.a1;SELECTtab1.b,test.a3fromtab1,testwheretab1.a=test.a1andsomething;10.6.1静态(定长)表的特点·这是缺省格式。它用在表不包含VARCHAR、BLOB或TEXT列时候。·所有的CHAR、NUMERIC和DECIMAL列充填到列宽度。·非常快。·容易缓冲。·容易在崩溃后重建,因为记录位于固定的位置。·不必被重新组织(用myisamchk),除非一个巨量的记录被删除并且你想要归还空闲磁盘空间给操作系统。·通常比
5、动态表需要更多的磁盘空间。10.6.2动态表的特点·如果表包含任何VARCHAR、BLOB或TEXT列,使用该格式。·所有字符串列是动态的(除了那些长度不到4的列)。·每个记录前置一个位图,对字符串列指出哪个列是空的(''),或对数字列哪个是零(这不同于包含NULL值的列)。如果字符串列在删除尾部空白后有零长度,或数字列有零值,它在位图中标记并且不保存到磁盘上。非空字符串存储为一个长度字节加字符串内容。·通常比定长表占更多的磁盘空间。·每个记录仅使用所需的空间。如果一个记录变得更大,它按需要被切开多段,这导致记录碎片。·如果你与超过行长度的信息更新
6、行,行将被分段。在这种情况中,你可能必须时时运行myisamchk-r以使性能更好。使用myisamchk-eitbl_name做一些统计。·在崩溃后不容易重建,因为一个记录可以是分很多段并且一个连接(碎片)可以丢失。·对动态尺寸记录的期望行长度是:·3·+(numberofcolumns+7)/8·+(numberofcharcolumns)·+packedsizeofnumericcolumns·+lengthofstrings·+(numberofNULLcolumns+7)/8对每个连接有6个字节的惩罚。无论何时更改引起记录的增大,一个动态
7、记录被链接。每个新链接将至少是20个字节,因此下一增大将可能在同一链连中。如果不是,将有另外一个链接。你可以用myisamchk-ed检查有多少链接。所有的链接可以用myisamchk-r删除。10.6.3压缩表的特点·一张用myisampack实用程序制作的只读表。所有具有MySQL扩展电子邮件支持的客户可以为其内部使用保留一个myisampack拷贝。·解压缩代码存在于所有MySQL分发,以便甚至没有myisampack的客户能读取用myisampack压缩的表。·占据很小的磁盘空间,使磁盘使用量减到最小。·每个记录被单独压缩(很小的存取开销)
8、。对一个记录的头是定长的(1-3字节),取决于表中最大的记录。每列以不同方式被压缩。一些压缩类型是:o通常对每列有一张不同
此文档下载收益归作者所有