postgresql 查询缓慢原因分析

pg_stat_activity

最近发现系统运行缓慢,查询数据老是超时,于是排查下pg_stat_activity 系统表,看看有没有耗时的查询sql

SELECT pid, state, query, query_start, backend_type FROM pg_stat_activity 
WHERE state = 'active' AND query LIKE '%SELECT%'
--and now()-query_start > interval '1 s'
and query_start > now() - interval '5 minutes' order by query_start;

在这里插入图片描述

非空闲的:<> 表示不等于,idle表示空闲的

state <> 'idle'

非空闲的,也可以理解为活跃的状态

state = 'active'

如果有非常耗时的sql,就试着执行下Explain解释语句,分析下sql耗时原因

复杂 pg_stat_activity

SELECT
	pid,
	datname,
	usename,
	client_addr,
	application_name,
	STATE,
	backend_start,
	xact_start,
	xact_stay,
	query_start,
	query_stay,
	REPLACE ( query, chr( 10 ), ' ' ) AS query 
FROM
	(
	SELECT
		pgsa.pid AS pid,
		pgsa.datname AS datname,
		pgsa.usename AS usename,
		pgsa.client_addr client_addr,
		pgsa.application_name AS application_name,
		pgsa.STATE AS STATE,
		pgsa.backend_start AS backend_start,
		pgsa.xact_start AS xact_start,
		EXTRACT ( epoch FROM ( now( ) - pgsa.xact_start ) ) AS xact_stay,
		pgsa.query_start AS query_start,
		EXTRACT ( epoch FROM ( now( ) - pgsa.query_start ) ) AS query_stay,
		pgsa.query AS query 
	FROM
		pg_stat_activity AS pgsa 
	WHERE
		pgsa.STATE != 'idle' 
		AND pgsa.STATE != 'idle in transaction' 
		AND pgsa.STATE != 'idle in transaction (aborted)' 
	) idleconnections 
ORDER BY
	query_stay DESC

在这里插入图片描述
看一下xact_stay这个值是不是很大,很大的话就看看或者Explain下query里面的sql语句

解释语句

EXPLAIN (ANALYZE) <your_query>;

在这里插入图片描述

pg_locks

去pg_locks和pg_stat_activity两张表里关联查询是不是有锁(关联条件是pid和transcationId),排除下是不是锁的原因,如果有锁,就把锁进程kill掉试试

shared_buffers

查询数据库参数有没有问题

show shared_buffers

vacuum

收缩表,清理无用数据

vacuum full verbose table_name
vacuum full verbose analyze table_name

相关推荐

  1. postgresql 查询字段 信息

    2024-02-01 00:26:02       54 阅读
  2. PostgreSQL】数据查询-概述

    2024-02-01 00:26:02       59 阅读
  3. postgresql树状结构查询示例

    2024-02-01 00:26:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 00:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 00:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 00:26:02       87 阅读
  4. Python语言-面向对象

    2024-02-01 00:26:02       96 阅读

热门阅读

  1. 「优选算法刷题」:提莫攻击

    2024-02-01 00:26:02       47 阅读
  2. 计算机网络

    2024-02-01 00:26:02       68 阅读
  3. 龙哥风向标20231114 GPT拆解

    2024-02-01 00:26:02       46 阅读
  4. mysqldump 导出中文乱码问题

    2024-02-01 00:26:02       61 阅读
  5. ArcGIS空间分析方法计算城市气体扩散

    2024-02-01 00:26:02       49 阅读
  6. Liunx shell编程及自动化运维实现--第三章循环

    2024-02-01 00:26:02       55 阅读