【问题标题】:Speed up Mysql queries with Hash Table in OPENSIPS在 OPENSIPS 中使用哈希表加速 Mysql 查询
【发布时间】:2019-10-13 04:04:02
【问题描述】:

亲爱的,

我有一个 Opensips 服务器,它可以对 mysql 服务器进行查询。我需要最大限度地优化这些查询。

一种方法可能是:使用带有 engine=memory 和 index=hash 的 mysql 表,但是¿如何在 opensips 服务器的 init 中加载这些类型的表?

另一种方式:¿Opensips 服务器中是否有一个功能可以缓存先前查询的数据以便以后恢复它们?

亲切的问候, 腾讯分分彩

【问题讨论】:

  • 如果您正在处理一个包含国际前缀号码的表格,我假设不超过几百个条目。为什么不在程序初始化时加载哈希表?
  • 感谢您的回复。抱歉,我不知道该怎么做。
  • 显示您正在运行的查询和表结构。另外,你有什么索引?
  • 如果不存在则创建表 PrefixPerCountry ( Country CHAR(255), C_Prefix CHAR(255) NOT NULL, Prefix CHAR(255) NOT NULL, PRIMARY KEY (C_Prefix) ) ENGINE=MEMORY;
  • 使用 HASH 在 PrefixPerCountry (C_Prefix) 上创建唯一索引 idx_I_Prefixes;

标签: javascript mysql scripting query-optimization opensips


【解决方案1】:

从 2.2 版开始,OpenSIPS 提供了sql_cacher 模块。您可以使用它来缓存 MySQL 表,并通过 $sql_cached_value 变量直接在内存中查找您选择的键。

缓存表会根据模块的reload_interval设置定期刷新。

如果您认为 sql_cacher 对于您的需求来说过于复杂,那么您仍然可以为您的 SIP 代理保持高流量吞吐量,同时还可以通过使用 async(avp_db_query()) 构造使所有这些查询异步来阻止 MySQL 查询。

【讨论】:

  • 感谢 Liviu 的回复。我将查看您在 opensips 中链接得很好的文档,并为此目的尝试代码。问候,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多