首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqltuner -写键缓冲区命中率

问mysqltuner -写键缓冲区命中率
EN

Database Administration用户
提问于 2017-08-01 12:03:40
回答 2查看 8K关注 0票数 2

我在粘贴MySQL调谐器结果关于MyISAM度量的部分。

代码语言:javascript
复制
[OK] Currently running supported MySQL version 5.5.57-0ubuntu0.14.04.1-log
[OK] Operating on 64-bit architecture

-------- Performance Metrics -----------------------------------------------------
[--] Up for: 25d 1h 40m 20s (6M q [3.149 qps], 170K conn, TX: 15G, RX: 1G)
[--] Reads / Writes: 90% / 10%

-------- MyISAM Metrics ----------------------------------------------------------
[!!] Key buffer used: 20.1% (80M used / 402M cache)
[OK] Key buffer size / total MyISAM indexes: 384.0M/31.6M
[OK] Read Key buffer hit rate: 99.9% (7M cached / 4K reads)
[!!] Write Key buffer hit rate: 1.2% (2M cached / 25K writes)

我正在寻找提高或优化写键缓冲区命中率的方法。或者为什么会这么糟?

我不知道哪个服务器变量可能在这个结果中起作用,所以请让我知道我应该粘贴哪些变量,或者您是否需要任何特定的细节。

谢谢你帮忙!

更新2017-08-11 13:56 CET

我根据@RolandoMySQLDBA的建议做了更多的测试,看起来我真的不应该担心这个度量。在我降低了key_buffer_size之后,写缓冲键的命中率直接提高了。然而,我无法测量阅读速度的任何改善。我认为这是因为没有足够的内存来缓存,所以几乎所有的写都完成了。我仍然不太明白写缓冲区键命中率的好与坏之处,但它似乎与基于数据库中的数据和索引的密钥缓冲区的最佳大小有关。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-08-01 17:20:15

您还在使用MyISAM吗?哎哟!!

撇开玩笑不说,你需要两个状态变量:

您希望钥匙_写入/钥匙_写_请求比率尽可能接近1 (100%)。我写了一组很好的查询,您可以运行来查看这样的比率。你可以在我的Jun 17, 2013回复MyISAM密钥缓冲器中找到它。

也许,只要运行FLUSH TABLES;就可以清除任何挥之不去的索引变化。如果您的系统不执行繁重的写操作,这可能就是您所需要的。

我建议将您所拥有的一切转换为InnoDB,这样您的数据库才能在崩溃时存活下来。毕竟,您不希望对索引进行任何更改。

快速查看InnoDB管道(来自Percona CTO Vadim Tkachenko的图片)

看到左边的InnoDB缓冲池了吗?它有一个Insert节负责索引更改。InnoDB将自动为您刷新索引更改。MyISAM不存在这种机制。因此,请尽快转换为InnoDB。

更新2017-08-07 15:25美国东部时间

如果必须继续使用MyISAM,则应该考虑使用专用的MyISAM密钥缓存。您可以为特定的一组MyISAM表创建密钥缓冲区。在您的示例中,您将为一个带有全文索引的表创建一个专用的密钥缓存。您必须判断缓存的大小或大小。

假设您的全文本索引表是mydb.myfull。

然后,您可以运行这个以找到适当的大小舍入到最近的MB。

代码语言:javascript
复制
SELECT index_length,((FLOOR(index_length / 1048576) + 1) * 1048576) index_length_rounded
FROM information_schema.tables WHERE table_schema='mydb' and table_name='myfull';

无论index_length_rounded的数字是多少,都是您使用的大小。

请查一下我关于如何创建专用MyISAM密钥缓存的文章。

我不会太担心这一点,因为插入和更新似乎是如此罕见。

票数 1
EN

Database Administration用户

发布于 2017-08-16 14:25:47

好的,命中率很低。但让我们把事情看清楚..。25K在25天内写是如此的微不足道(< 1/分钟),所以是你最不担心的。每分钟5K将是令人关切的问题。

如果您有性能问题,找出最慢的查询并研究它--它的索引、格式等等。

“密钥缓冲区”适用于只有1的MyISAM表。没有列出InnoDB统计信息。

有关进一步讨论,请参见http://mysql.rjweb.org/doc.php/mysql_分析

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/182357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档