单独的应用程序和数据库服务器与一体机的性能

xyl*_*lar 2 database ubuntu performance lamp hardware-infrastructure

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

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

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

我的问题:

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

小智 5

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

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

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

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

再说一遍,这是物理学——这里对 MySQL 来说没什么特别的。