Oracle统计API并发访问量

最近遇到统计Oracle数据库请求记录表中所有API的最高并发量,这个就涉及从日志表中提取API访问记录,并计算每个API在每个时间点的并发请求数,然后找出每个API的最高并发量。

SQL实现

使用Oracle的窗口函数COUNT(*) OVER来计算每个时间点的并发请求数,随后找出每个API的最高并发量。

sql 复制代码
WITH concurrent_requests AS (
    SELECT
        api_name,
        access_time,
        COUNT(*) OVER (PARTITION BY api_name, access_time) AS concurrent_requests
    FROM
        api_logs
    WHERE
        access_time BETWEEN TO_TIMESTAMP('2023-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
                       AND TO_TIMESTAMP('2023-07-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
)
SELECT
    api_name,
    MAX(concurrent_requests) AS max_concurrent_requests
FROM
    concurrent_requests
GROUP BY
    api_name
ORDER BY
    max_concurrent_requests DESC;

说明

  • WITH concurrent_requests AS (...): 这个CTE计算每个API在每个时间点的并发请求数。
  • COUNT(*) OVER (PARTITION BY api_name, access_time): 使用分析函数按API名称和时间戳分区,计算每个时间点的并发请求数。
  • WHERE access_time BETWEEN ...AND...: 过滤条件只选取7月份的数据。这里使用TO_TIMESTAMP函数来指定时间范围。
  • MAX(concurrent_requests): 找出每个API在7月份的最高并发量。
  • GROUP BY api_name: 将结果按API名称分组,以统计每个API的最高并发量。
  • ORDER BY max_concurrent_requests DESC: 按并发量从高到低排序。
相关推荐
@insist12311 分钟前
数据库系统工程师-Armstrong 公理系统:函数依赖推理与候选码求解核心方法论(重点)
数据库·软考·软件设计师·软件水平考试
寂柒42 分钟前
Linux——基础IO
linux
山峰哥1 小时前
查询优化案例:从慢查询到闪电般的查询速度
数据库·sql·性能优化·编辑器·深度优先
杨云龙UP1 小时前
Oracle ASM磁盘组空间分配与冗余理解
linux·运维·数据库·sql·oracle
朽棘不雕1 小时前
Linux权限
linux
互成1 小时前
加密系统哪款最好用?2026年五款加密系统深度对比测评
运维·网络·安全
minji...1 小时前
Linux 库制作与原理(三)深入动静态链接原理
linux·运维·服务器·c++
CDN3601 小时前
游戏服稳定运行:360CDN SDK 游戏盾实测体验
运维·游戏·网络安全
微学AI2 小时前
一款数据库SQL防火墙:可以拦截99.99%,可以阻止恶意SQL
数据库·sql
bukeyiwanshui2 小时前
Linux实践
linux·运维·服务器