暂无图片
如何查询某个时间段的消耗io高 或者消耗cpu高的sql ?
我来答
分享
暂无图片 匿名用户
如何查询某个时间段的消耗io高 或者消耗cpu高的sql ?

如何查询某个时间段的消耗io高 或者消耗cpu高的sql ?

比如2月5号,上午9点到上午11点这个时间段

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
lianR

要查询某个时间段的消耗IO高或者消耗CPU高的SQL,需要访问数据库的性能和监控日志。这些日志通常包含了SQL语句的执行时间、消耗的资源等信息。但是,具体的查询方法会因数据库类型和配置的不同而不同。

以MySQL为例,可以使用慢查询日志来找出在特定时间段内运行缓慢的SQL语句。首先,需要确保慢查询日志已经开启。然后,可以使用以下SQL语句来查询特定时间段的慢查询:

```sql
SELECT  *  FROM  mysql.slow_log
WHERE  start_time  BETWEEN  '2022-02-05  09:00:00'  AND  '2022-02-05  11:00:00'
ORDER  BY  query_time  DESC;
```

这个SQL语句会返回在2022年2月5日上午9点到11点之间的所有慢查询,按照查询时间从长到短排序。

对于消耗CPU高的SQL,你可能需要使用更专业的性能分析工具,如Performance  Schema、Sys  Schema或者第三方的性能监控工具。

注意,以上方法需要根据具体数据库类型和配置进行调整。

暂无图片 评论
暂无图片 有用 6
清风生

可以设置log_min_duration_statement参数将慢sql记录在日志中,然后结合pg_stat_statements来分析

暂无图片 评论
暂无图片 有用 1
浮光墨影

在PostgreSQL中,要查询某个时间段的消耗I/O高或消耗CPU高的SQL,您可以使用以下方法:

1. 使用pg_stat_statements扩展: pg_stat_statements 是一个PostgreSQL扩展,它可以记录所有执行的SQL语句的统计信息,包括执行次数、消耗的CPU时间、消耗的I/O时间等。要查询消耗I/O或CPU较高的SQL语句,您可以首先启用这个扩展,然后使用它提供的函数来查询。启用 pg_stat_statements 扩展的步骤如下:

-- 创建pg_stat_statements表(如果尚未创建)
CREATE EXTENSION pg_stat_statements;
-- 然后,您可以查询某个时间段的统计信息
-- 假设您想查询2月5号上午9点到上午11点的统计信息
SELECT
max(total_exec_time) AS max_exec_time,
max(total_io_time) AS max_io_time,
max(total_elapsed_time) AS max_elapsed_time,
max(total_rows) AS max_rows,
max(total_examined_rows) AS max_examined_rows,
statement
FROM
pg_stat_statements
WHERE
statement IS NOT NULL
AND total_exec_time > 0
AND total_io_time > 0
AND total_elapsed_time > 0
AND query_start >= now() - INTERVAL '2 hours'
AND query_start <= now()
GROUP BY
statement
ORDER BY
max_exec_time DESC,
max_io_time DESC,
max_elapsed_time DESC;

2. 使用 Performance Schema : PostgreSQL 10及以上版本引入了Performance Schema,它可以提供更深入的性能监控信息。如果使用的是PostgreSQL 10或更高版本,可以查询Performance Schema中的表来获取更详细的I/O和CPU使用情况。

暂无图片 评论
暂无图片 有用 2
P
pgdba
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏