1

我们正在迁移一个需要良好数据库设置的现有应用程序。我们在两个服务器配置上运行了一个简单的 mysqlslap 测试 - 组合的应用程序和数据库服务器,单独的应用程序和 2 个数据库服务器(主/从):

mysqlslap --auto-generate-sql --concurrency=50 --number-of-queries=1000 --number-char-cols=50 --number-int-cols=50 -vv

  • 即使使用相同的实例大小并从 db 服务器运行,单独服务器的结果也会变慢。
  • 在另一个测试中,使用微时间和循环查询 - 服务器之间存在显着延迟。示例:测试 1 是 0.01 秒组合和 0.1 单独,0.2(组合)与 3.0(单独)相比。

我的问题:

  1. 这些是预期的结果吗?
  2. 有没有办法最小化服务器之间的延迟?
  3. 我们无法使用 sysbench 来匹配现有服务器 - 我们执行的测试是否令人满意或者是否有更好的替代方案?
4

1 回答 1

4

不是 MySQL 专家,但是,嘿,现实并不在乎 ;)
物理是一样的。

  1. 是的。你引入一个网络,有延迟。
  2. 请求,批处理。保证 45 纳秒延迟。一般来说:不要提出小请求,批量。
  3. 一般可能是小集。我的数据库服务器被数百人击中。1000个查询一般可能是一个小集合。

最后,你有延迟 - 处理它。做到这一点的主要方法是请求成批的数据,而不是逐行。然后了解“延迟”是一个线程的东西 - 由于容量更高,吞吐量仍然可以更高。这是一个权衡。

如果对您很好:所有较大的应用程序都会拆分,所以这不是您可以处理的事情。不过,有助于拥有一个真正的数据库服务器。基本上,这台机器应该足够强大,不会成为另一个瓶颈。你得到延迟,你也得到可扩展性。通常可扩展性比延迟更有价值。

再一次,这是物理学——这里对 MySQL 没有什么特别的。

于 2012-12-18T20:56:42.787 回答