gpt4 book ai didi

mysql - 增加键的数量是否会影响 memcached 的性能?

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:42 24 4
gpt4 key购买 nike

我的数据库中有一个表,它有大约 40000 行。这些行的 ID 在 1 到 40000 之间。现在我想获取 ID 的数据,比如 [1,2,800,5006,12006,25001,35000,35018] .

对于这种情况,我可以采用以下方法之一:

1.通过单个 memcached 键存储每一行​​。就像 key_1 会存储 row1 的数据,key_2 会存储 row2 的数据等等。所以在 memcached 中会有 40000 个键。对于上面给出的场景,我必须对 memcached 进行 8 次调用(每个 id 调用一次)。

2.我可以使用“in”运算符直接查询数据库。这只需要一次查询。

我应该遵循哪种方法? memcached 中的泛洪键会影响性能吗?

最佳答案

你有两点需要考虑:

  • 单次往返的费用
  • 应用程序生成的往返次数

使用 memcached,往返成本非常低,而且通常非常确定(在正确的网络上大约半毫秒)。对于 mysql,往返成本取决于更多因素(例如查询的复杂性、最终 I/O 的延迟等……)。您应该考虑到 mysql 的往返成本比 memcached 的成本更高。

现在往返次数如何?使用 mysql,应用程序将只生成一个(假设您一次性获取所有行)。使用 memcached,您还可以生成单次往返,因为:

  • GET 命令可用于一次性获取多个 key
  • 好的 memcached 客户端无论如何都支持流水线

如果您使用分布式部署的 memcached(多个 memcached 实例),那么您的 key 将分布在多个节点上。同样,一个好的 memcached 客户端将并行化到各个节点的往返。由此产生的成本将是最慢的往返成本之一。

多次获取示例(来自 telnet):

set didier1 0 0 1
x
STORED
set didier2 0 0 1
y
STORED
get didier1 didier2
VALUE didier1 0 1
x
VALUE didier2 0 1
y
END

您不应该对 memcached 进行 8 次调用。您应该执行一个调用来获取 8 个 key ,或者发送一批 8 个命令来获取 key 。

在您的示例中,我会说使用 memcached 的正确实现会稍微更高效,并且更具可扩展性。对数据库的压力越小,系统的可扩展性就越高。

关于mysql - 增加键的数量是否会影响 memcached 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31856807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com