mysql - 何时使用属性 DELAY_KEY_WRITE?

标签 mysql

何时使用属性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/

相关文章:

javascript - 过多的短 PHP 文件

mysql - 防止 mysql 查询给出多行相同的 id

mysql - 从 ActiveRecord::Relation 获取 SQL 数组

php - 我想在回显表单元格中放置一个按钮

mysql - 如何删除其外键为 NULL 的行?

php - 在 mysql 中为用户获取每场比赛的前 3 名结果

javascript - 如何从 mysql ajax 搜索表单的特定结果生成链接

python - 将二进制数据插入 longblob 列时出现 pymysql 编码错误

mysql - 在mysql中获取维基百科数据库?

php - 如何将id保存在数据库中,但在页面上显示用户名