何时使用属性DELAY_KEY_WRITE?
有什么帮助吗?
CRETA TABLE(....) ;DELAY_KEY_WRITE =1
最佳答案
MySQL 中的另一个性能选项是 DELAY_KEY_WRITE 选项。根据 MySQL 文档,该选项使索引更新速度更快,因为在表关闭之前它们不会刷新到磁盘。
请注意,此选项仅适用于 MyISAM 表,
您可以使用以下 SQL 语句逐个表启用它:
ALTER TABLE sometable DELAY_KEY_WRITE = 1;
这也可以在 MySQL 查询浏览器的高级表选项中进行设置。
如果您必须进行大量更新,此性能选项可能会很方便,因为您可以延迟写入索引,直到表关闭。如此频繁地更新大型表,可能需要检查此选项。 好的,那么 MySQL 什么时候关闭表呢?
这应该是你的下一个问题。看起来好像表在需要时打开,然后添加到表缓存中。该缓存可以通过 FLUSH TABLES 手动刷新;但根据文档,它们是如何自动关闭的:
1.当缓存已满并且线程尝试打开不在缓存中的表时。
2.当缓存包含多于table_cache条目并且线程不再使用表时。
3.冲洗表;被调用。
“如果启用了 DELAY_KEY_WRITE,这意味着具有此选项的表的键缓冲区不会在每次索引更新时刷新,而仅在表关闭时刷新。这会大大加快键的写入速度,但如果您使用此选项功能,您应该通过使用 --myisam-recover 选项启动服务器来添加对所有 MyISAM 表的自动检查(例如,--myisam-recover=BACKUP,FORCE)。"
因此,如果您确实使用此选项,您可能需要定期刷新表缓存,并确保使用 myisam-recover 选项启动。
关于mysql - 何时使用属性 DELAY_KEY_WRITE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30838743/