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: 按并发量从高到低排序。
相关推荐
Michaelwubo几秒前
Docker dockerfile镜像编码 centos7
运维·docker·容器
你的微笑,乱了夏天4 分钟前
linux centos 7 安装 mongodb7
数据库·mongodb
远游客07136 分钟前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<6 分钟前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟8 分钟前
centos-stream9系统安装docker
linux·docker·centos
工业甲酰苯胺16 分钟前
分布式系统架构:服务容错
数据库·架构
好像是个likun31 分钟前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
超爱吃士力架36 分钟前
邀请逻辑
java·linux·后端
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain2 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu