何时使用属性DELAY_KEY_WRITE?

时间:2015-06-15 06:39:15

标签: mysql

何时使用属性DELAY_KEY_WRITE?
它有何帮助?

CRETA TABLE(....) ;DELAY_KEY_WRITE =1

1 个答案:

答案 0 :(得分:2)

MySQL中的另一个性能选项是DELAY_KEY_WRITE选项。根据MySQL文档,该选项使索引更新更快,因为在表关闭之前它们不会刷新到磁盘。

请注意,此选项仅适用于MyISAM表,

您可以使用以下SQL语句逐个表地启用它:

ALTER TABLE sometable DELAY_KEY_WRITE = 1;

这也可以在MySQL Query Browser的高级表选项中设置。

如果您需要进行大量更新,此性能选项可能很方便,因为您可以延迟编写索引,直到表关闭为止。因此,对大型表的频繁更新可能需要查看此选项。 好的,那么MySQL什么时候关闭表?

那应该是你的下一个问题。看起来好像在需要时打开表,但随后将表添加到表缓存中。可以使用FLUSH TABLES手动刷新此缓存;但是根据文档,它们是如何自动关闭的:

1.当缓存已满并且线程尝试打开不在缓存中的表时。

2.当缓存包含多个table_cache条目且一个线程不再使用表时。

3.FLUSH TABLES;被称为。

"如果启用了DELAY_KEY_WRITE,这意味着在每次索引更新时都不会刷新具有此选项的表的键缓冲区,但仅在表关闭时才刷新。这会大大加快对密钥的写入速度,但如果使用此功能,则应通过使用--myisam-recover选项启动服务器来添加所有MyISAM表的自动检查(例如, - myisam-recover = BACKUP,FORCE )"

因此,如果您使用此选项,您可能需要定期刷新表缓存,并确保使用myisam-recover选项启动。