Chinaunix首页 | 论坛 | 博客
  • 博客访问: 246497
  • 博文数量: 14
  • 博客积分: 2015
  • 博客等级: 大尉
  • 技术积分: 902
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-27 16:02
文章分类

全部博文(14)

文章存档

2009年(5)

2008年(9)

我的朋友

分类:

2008-07-30 17:44:49

MySQL参数DELAY_KEY_WRITE的一些思考
 
    这个参数是指,在表关闭之前,将对表的update操作指跟新数据到磁盘,而不更新索引到磁盘,把对索引的更改记录在内存。在关闭表的时候一起跟新索引到磁盘。
 
    这个参数只对MyISAM引擎表有作用。你可以在create table的时候,指定DELAY_KEY_WRITE。或者ALTER TABLE table_name DELAY_KEY_WRITE = 1,当表已经存在的时候。
    如果你的某个表有很多update操作,这个参数的优势会很好的体现出来。因为这个参数能延迟更新索引到表关闭。当我们需要经常跟新一个大表的时候,可以考虑使用这个参数。
 
    那么,表关闭会在什么时候发生?你可以理解成当flash table的时候,表将关闭。那么有2种情况将会发生 flush table:
    当cache 满了一个新的thread试图打开一个表的时候,那个表没有在cache;
    当cahee里的表数比table_cache多时thread不在使用表;
    这个2种情况将会flush table。
 
    当然,你也可以直接设置启动参数flush_time ,设置每多少时间flush table一次。
 
   当DELAY_KEY_WRITE使用的时候,如果出现重启或者掉电等情况,会导致在cache的索引update没来得及更新,所以必须在启动参数加上--myisam-recover,这样在你启动mysql的时候会检查你的表并同步表和索引.
阅读(928) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~