站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
MyISAM
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
[[Image:Myisam.jpg|right|300px]] '''MyISAM''',是默认存储引擎。它基于更老的[[ISAM]]代码,但有很多有用的扩展。(注意[[MySQL]] 5.1不支持ISAM)。 每个MyISAM在[[磁盘]]上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。 ==MyISAM的特征== ;*MyISAM存储引擎的一些特征 #所有数据值先存储低字节。这使得数据机和[[操作系统]]分离。二进制轻便性的唯一要求是机器使用[[补码]](如最近20年的机器有的一样)和IEEE浮点格式(在主流机器中也完全是主导的)。唯一不支持二进制兼容性的机器是嵌入式系统。这些系统有时使用特殊的[[处理器]]。 #大文件(达63位文件长度)在支持大文件的文件系统和操作系统上被支持。 #当把删除和更新及插入混合的时候,动态尺寸的行更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块来自动完成。 #每个MyISAM表最大索引数是64。 这可以通过重新编译来改变。每个索引最大的列数是16个。 #最大的键长度是1000字节。这也可以通过编译来改变。对于键长度超过250字节的情况,一个超过1024字节的的键块被用上。 #BLOB和TEXT列可以被索引。 #NULL值被允许在索引的列中。这个占每个键的0-1个字节。 #所有数字键值以高字节为先被存储以允许一个更高地索引压缩。 #当记录以排好序的顺序插入(就像你使用一个AUTO_INCREMENT列之时),索引树被劈开以便高节点仅包含一个键。这改善了索引树的空间利用率。 #每表一个AUTO_INCREMEN列的内部处理。MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置。 #如果数据文件中间的表没有自由块了,在其它[[线程]]从表读的同时,你可以INSERT新行到表中。(这被认识为并发操作)。自由块的出现是作为删除行的结果,或者是用比当前内容多的数据对动态长度行更新的结果。当所有自由块被用完(填满),未来的插入又变成并发。 #你可以把数据文件和索引文件放在不同目录,用DATA DIRECTORY和INDEX DIRECTORY选项CREATE TABLE以获得更高的速度, ;*MyISAM也支持下列特征 #支持true VARCHAR类型;VARCHAR列以存储在2个字节中的长度来开始。 #有VARCHAR的表可以有固定或动态记录长度。 #VARCHAR和CHAR列可以多达64KB。 #一个被搞乱的已计算索引对可对[[UNIQUE]]来使用。这允许你在表内任何列的合并上有UNIQUE。(尽管如此,你不能在一个UNIQUE已计算索引上搜索)。 ==MyISAM静态(固定长度)表特征== *静态格式是MyISAM表的默认存储格式。当表不包含变量长度列(VARCHAR, BLOB, 或TEXT)时,使用这个格式。每一行用固定字节数存储。 *MyISAM的三种存储格式中,静态格式就最简单也是最安全的(至少对于崩溃而言)。静态格式也是最快的on-disk格式。快速来自于数据文件中的行在磁盘上被找到的容易方式:当按照索引中的行号查找一个行时,用行长度乘以行号。同样,当扫描一个表的时候,很容易用每个磁盘读操作读一定数量的记录。 *当MySQL[[服务器]]正往一个固定格式MyISAM文件写的时候,如果[[计算机]]崩溃了,安全是显然的。在这种情况下,myisamchk可以容易地决定每行从哪里开始到哪里结束,所以它通常可以收回所有记录,除了写了一部分的记录。注意,基于数据行,MyISAM表索引可以一直被重新构建。 *静态格式表的一般特征: #CHAR列对列宽度是空间填补的。 #非常快。 #容易[[缓存]]。 #崩溃后容易重建,因为记录位于固定位置。 #重新组织是不必要的,除非你删除巨量的记录并且希望为操作系统腾出磁盘空间。为此,可使用OPTIMIZE TABLE或者myisamchk -r。 #通常比动态格式表需要更多的磁盘空间。 ==MyISAM动态表特征== *如果一个MyISAM表包含任何可变长度列(VARCHAR, BLOB或TEXTDynamic),或者如果一个表被用ROW_FORMAT=DYNAMIC选项来创建,动态存储格式被使用。 *这个格式更为复杂一点,因为每行有一个表明行有多长的头。当一个记录因为更新的结果被变得更长,该记录也可以在超过一个位置处结束。 *你可以使用OPTIMIZE TABLE或myisamchk来对一个表整理碎片。如果在一个表中有你频繁访问或改变的固定长度列,表中也有一些可变长度列,仅为避免碎片而把这些可变长度列移到其它表可能是一个好主意。 *动态格式表的一般特征: #除了长度少于4的列外,所有的字符串列是动态的。 #在每个记录前面是一个位图,该位图表明哪一列包含空字符串(对于字符串列)或者0(对于数字列)。注意,这并不包括包含NULL值的列。如果一个字符列在拖曳空间移除后长度为零,或者一个数字列为零值,这都在位图中标注了且列不被保存到磁盘。 非空[[字符串]]被存为一个长度字节加字符串的内容。 #通常比固定长度表需要更少的磁盘空间。 #每个记录仅使用必需大小的空间。尽管如此,如果一个记录变大,它就按需要被分开成多片,造成记录碎片的后果。比如,你用扩展行长度的信息更新一行,该行就变得有碎片。在这种情况下,你可以时不时运行OPTIMIZE TABLE或myisamchk -r来改善性能。可使用myisamchk -ei来获取表的统计数据。 #动态格式表在崩溃后要比静态格式表更难重建,因为一个记录可能被分为多个碎片且链接(碎片)可能被丢失。 #动态尺寸记录期望的行长度用下列表达式来计算: #3 #+ (number of columns + 7) / 8 #+ (number of char columns) #+ (packed size of numeric columns) #+ (length of strings) #+ (number of NULL columns + 7) / 8 ==MyISAM已压缩表特征== *已压缩存储格式是由myisampack工具创建的只读格式。 *所有MySQL分发版里都默认包括myisampack。已压缩表可以用myisamchk来解压缩。 *已压缩表有下列特征: #已压缩表占据非常小的磁盘空间。这最小化了磁盘用量,当使用缓慢的磁盘(如CD-ROM)之时,这是很有用的。 #每个记录是被单独压缩的,所以只有非常小的访问开支。依据表中最大的记录,一个记录的头在每个表中占据1到3个字节。每个列被不同地压缩。通常每个列有一个不同的Huffman树。一些压缩类型如下: :o 后缀空间压缩。 :- 前缀空间压缩。 :- 零值的数用一个位来存储。 :- 如果在一个整型列中的值有一个小的范围,列被用最小可能的类型来存储。比如,一个BIGINT列(8字节),如果所有它的值在-128到127范围内,它可以被存储为TINYINT列(1字节) :- 如果一个列仅有一小组可能的值,列的类型被转化成ENUM。 :- 一个列可以使用先前压缩类型的任意合并。 #可以处理固定长度或动态长度记录。 ==相关条目== *[[IMAP]] *[[ModSecurity]] *[[OpenVZ]] *[[PSFTP]] ==参考来源== *http://hxzon00.blog.163.com/blog/static/1048924162010324344846/ [[category:数据库|M]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)