You need to enable JavaScript to run this app.
日志服务

日志服务

复制全文
检索分析
如何提高检索分析速度?
复制全文
如何提高检索分析速度?

本文介绍提高日志检索分析速度的方法。

增加 Shard 数量

增加 Shard 数量可以增强日志服务的读写能力,但只对新写入的数据生效。Shard 表示计算资源,Shard 越多,计算越快。您可以通过分裂 Shard 的方式,适当增加 Shard 数量。具体操作,请参考分裂分区

说明

增加 Shard 数量会产生更多费用,请按需增加。关于 Shard 的计费说明,请参考计费项

缩小检索的时间范围或数据量

  • 检索的时间范围越大,检索速度越慢,建议适当地缩小检索的时间范围来提升检索速度。
  • 检索的数据量越大,检索速度越慢,建议适当地减少检索的数据量来提升检索速度。

重复执行检索操作

当检索结果不精确时,可以尝试重复执行多次检索操作。每次检索时,日志服务底层加速机制会基于现有结果进行检索,因此多次重复检索可以提升检索结果的精确性。更多信息,请参考提示“查询结果不精确”,如何解决?

优化检索语句

检索时间较长的语句具备如下特点。

  • 检索条件较多。
  • 检索扫描的数据量较大。

您可以通过如下方法优化检索分析语句。

  • 去除不必要的检索条件
    例如使用多条件检索时,如果满足条件 A 的日志一定满足条件 B,则条件 B 这个检索条件可以去掉。示例如下:

    • 检索语句(速度快)

      log_msg: "INFO| write logs sucessful"
      
    • 检索语句(速度慢)

      log_msg: "INFO| write logs sucessful" AND log_level:INFO
      
  • 合并相同 Key 范围检索条件。
    使用范围检索时,如果需要限制检索的起止范围,使用双范围操作符替换单范围操作符。示例如下:

    • 检索语句(速度快)

      log_status: [1000 TO 2000}
      
    • 检索语句(速度慢)

      log_status: >= 1000 AND log_status: < 2000
      
  • 将命中率高的筛选条件放到 SQL 语句中。
    在检索和分析结合使用的场景,可将命中率高的条件置于 SQL 部分,以此提升检索速率。例如下述示例中,满足 log_level:INFO 的日志数与总日志数的比例值超过 50%,则将此条件放到 SQL 语句进行筛选,速度更快。

    • 检索分析语句(速度快)

      * | select count(*) as cnt where log_level = 'INFO'
      
    • 检索分析语句(速度慢)

      log_level:INFO | select count(*) as cnt
      
  • 在 SQL 分析语句中指定需要获取的列,避免全列读取。
    如果需要获取所有列,请使用检索语法。示例如下:

    • 检索分析语句(速度快)

      * | select a, b, c
      
    • 检索分析语句(速度慢)

      * | select *
      
最近更新时间:2024.11.08 10:53:42
这个页面对您有帮助吗?
有用
有用
无用
无用