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: 按并发量从高到低排序。
相关推荐
志栋智能6 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡6 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB7 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906947 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
欧米欧7 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery7 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo8 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺8 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw8 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos