【问题标题】:Difference in speed between two MySQL servers两个 MySQL 服务器之间的速度差异
【发布时间】:2015-07-08 10:01:52
【问题描述】:

我有两台 MySQL 服务器。一个是其他服务器的主控(实际上主控也是另一个服务器的从属)。两者都在类似的远程服务器上运行(相同数量的 RAM)。一切工作正常,除了从服务器运行相同的大型查询所需的时间是主服务器的 2-3 倍。谁能想到这个问题的原因。

【问题讨论】:

  • 你检查过配置文件吗?
  • Slave 的配置文件有query_cache_type = 1, query_cache_limit = 1M, query_cache_size = 32M, key_buffer_size = 24M,master 的配置文件有innodb_file_per_table=1, open_files_limit=21350, local-infile=0。其他一切都几乎相同。
  • 您对 3 台服务器中的任何一台服务器是否有 binlog/replicate-do/ignore-... 限制? Slave 是否忙于进行大量其他读取,而 Master 则没有?
  • 请向我们展示“大查询”,以及SHOW CREATE TABLEEXPLAIN SELECT ... -- 其中可能有有用的线索。
  • @RickJames,是的,还有其他用于设置日志的参数,在从属服务器中有 replicate-do-db。我在这里问了一个问题:link 以优化我正在谈论的大型查询。您可以在那里找到<query>SHOW CREATE TABLEEXPLAIN <query>

标签: mysql performance master-slave


【解决方案1】:

如果有写入(来自 Master)到 ab 等,那么 SELECT 在 Slave 上的运行速度会变慢。慢多少取决于要预测的事情太多了。

要“证明”这一点,请(在从站中)STOP SLAVE SQL_THREAD;,运行查询; START SLAVE SQL_THREAD;。这将关闭 SELECT 的写入。

但是“修复”它呢?

如果“写入”是 INSERT,它们可以“批处理”吗?也就是说,INSERT 同一语句中有多个行。这可能无法“解决”问题,但可以缓解问题。

【讨论】:

  • 这对我有用:主服务器中的表使用 MyISAM 引擎,而从服务器中的表使用 Innodb 引擎。当我将它更改为 MyISAM 时,它的运行速度与主服务器一样快。我不知道为什么会这样,但是我发现很多帖子说 MyISAM 在运行选择查询时比 Innodb 运行得更快 例如:link
  • SELECT COUNT(*) FROM tbl;(没有 WHERE 子句)是唯一在 MyISAM 中可靠地运行得更快的东西。在您的情况下,可能是 MyISAM 的 table 锁暂停了复制的写入,以便 SELECT 全速运行。但这可能意味着复制经常“落后”。
猜你喜欢
  • 2016-03-08
  • 2010-09-20
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多