查看: 425|回复: 2

MYSQL参数DELAY_KEY_WRITE

 关闭 [复制链接]

签到天数: 2589 天

连续签到: 3 天

[LV.Master]至尊海神IIIIII

发表于 2010-5-15 18:18 | 显示全部楼层 |阅读模式
MYSQL参数DELAY_KEY_WRITE 这个参数是指,在表关闭之前,将对表的update操作指跟新数据到磁盘,而不更新索引到磁盘,把对索引的更改记录在内存。这样MyISAM表可以使索引更新更快。在关闭表的时候一起更新索引到磁盘。


    这个参数只对MyISAM引擎表有作用。你可以在create table的时候,指定DELAY_KEY_WRITE。或者ALTER TABLE table_name DELAY_KEY_WRITE= 1,当表已经存在的时候。

    如果你的某个表有很多update操作,这个参数的优势会很好的体现出来。因为这个参数能延迟更新索引到表关闭。当我们需要经常跟新一个大表的时候,可以考虑使用这个参数。


    那么,表关闭会在什么时候发生?你可以理解成当flash table的时候,表将关闭。那么有2种情况将会发生 flush table:
    当cache 满了一个新的thread试图打开一个表的时候,那个表没有在cache;
    当cache里的表数比table_cache多时thread不在使用表;
    这个2种情况将会flush table。


    当然,你也可以直接设置启动参数flush_time ,设置每多少时间flush table一次。


   当DELAY_KEY_WRITE使用的时候,如果出现重启或者掉电等情况,会导致在cache的索引update没来得及更新,所以必须在启动参数加上--myisam-recover,这样在你启动mysql的时候会检查你的表并同步表和索引.或者在重启服务器之前运行myisamchk。(然而,即使在这种情况下,应通过使用DELAY_KEY_WRITE保证不丢失数据,因为关键字信息总是可以从数据行产生)。


要注意的是,但如果你使用该特性,你应用--myisam-recover选项启动服务器,为所有MyISAM表添加自动检查。
<
PCOS系统下载站:http://zhuangji.wang

签到天数: 1414 天

连续签到: 0 天

[LV.10]逍遥海仙III

发表于 2010-5-15 19:15 | 显示全部楼层
学习啦,谢谢
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

chasgone 该用户已被删除
发表于 2010-5-22 18:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

本版积分规则