Navicat 面向 PostgreSQL 查询超时的工具解决方案

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: Navicat 面向 PostgreSQL 查询超时的工具解决方案

Navicat 面向 PostgreSQL 查询超时的工具解决方案

早前,我们发表过一篇《PostgreSQL 与 Navicat :数据库的中坚力量》 ,从产品的发展介绍了两者的渊源与共性,获得了许多童鞋的认可。而随着PostgreSQL 在国内热度愈发高涨,应用也愈发广泛。近期,我们收到许多用户的问询,涉及一些使用时的技术问题,例如:PostgreSQL 查询延时的优化方法等。今天,小编就带大家解析如何通过 Navicat 工具便捷地跟踪、设置查询超时语句时长和设置权限来确保你的 PostgreSQL 数据库实例保持良好状况和可用性,并保障数据库系统的性能稳定。

查询超时的必要性

查询超时指在执行数据库查询操作时,如果在一定时间内无法完成查询,则会自动终止查询操作并返回错误结果。其目的是为了保护数据库系统的稳定性和性能,并避免查询操作耗尽系统资源。它是数据库系统稳定性和性能的保障措施之一。如果没有设置查询超时,当一个查询操作耗费过多的时间时,系统资源就会不足,影响其他操作和整个系统的运行。因此,设置查询超时时间具有非常重要的必要性。

**

**

应用场景

  1. 并发操作较多:在高并发的情况下,如果一些查询耗时过长,则可能会影响其他查询的执行效率,进而影响整个系统的响应速度。
  2. 大数据量查询:如果查询数据量过大,会消耗大量的系统资源,可能会导致系统崩溃,因此需要设置查询超时时间,防止查询过长时间执行。
  3. 防止恶意攻击:对于一些恶意的SQL注入攻击,我们可以设置查询超时时间来防止攻击者通过无限循环查询来耗尽系统资源。

查询分析器 | Navicat Monitor

Navicat Monitor 3 监控工具 - 查询分析器画面顶部(如下图),我们设计了一个图表,用以显示等待时间最长的查询:

它能够准确地标识出滞后的查询。这一点非常重要,因为它们可以让一切陷入瘫痪。

除了在标识出慢速查询并对其进行修复外,另一种策略就是全面限制查询执行时间。在PostgreSQL 等专业级数据库中,可以通过设置 statement_timeout 变量来限制整个数据库甚至每个用户的查询执行时间。下面,我们将学习如何在 Navicat 16 for PostgreSQL 中运用这个重要的数据库变量。

在数据库级别设置

statement_timeout 变量

为数据库设置默认语句超时是很常用的方式。这可确保连接到数据库的任何应用程序或人员的查询运行时间都不会超时。合理的默认值建议是 30 秒或 60 秒。但如果你愿意,可以设置更长的时间。以下是将值设置为 60 秒的语句:

ALTER DATABASE mydatabase SET statement_timeout = ‘60s’;

在 Navicat 16 for PostgreSQL 中,我们可以选择主菜单中的“工具”>“服务器监控”>“PostgreSQL”以查看 statement_timeout 变量。你会在“变量”选项卡找到它:

事实上,因为服务器有很多变量,你可能要使用查找工具来找出 statement_timeout 变量。你可以单击“全部高亮显示”切换按钮以更有效地找到匹配的变量。

当然,如果你想直接 show 语句,也可以在 Navicat 轻松实现:

为特定用户设置查询超时

为了更精确地控制,我们可以为特定用户设置查询超时值(总是会有人选择整个数据库…)。这能使用 ALTER ROLE 语句做到,它可以设置许多数据库变量,包括 statement_timeout。

我们尝试创建一个名为“guest”的新用户角色:

现在我们可以使用 ALTER ROLE 语句来限制查询执行时间,如下所示:

ALTER ROLE guest SET statement_timeout=‘5min’;

我们可以查询pg_roles 表来获取关于 statement_timeout 的信息(包括它是如何设置的):

rolconfig 值是一个数组,因此我们可以使用 unnest 取消嵌套,那么一行会显示一个设置:

**

**

结语

为用户标识出滞后的查询是非常重要的,因为它让你对查询时间了如指掌,让你免受数据库性能陷入瘫痪的风险。为此,Navicat Monitor 3 监控工具的查询分析器画面顶部就设计出了这个费时查询图表。

另一种方法是限制查询在超时之前可以执行多久。正如在本文中提到,可以在 PostgreSQL 的数据库、会话甚至单个角色级别设置查询超时。如果你还没有设置 statement_timeout 变量,我们建议你尽快设置。这只是优化数据库性能的其中一步,但它有助于确保你的数据库实例保持良好状况和可用。

结语

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏?关注,您的支持是我坚持写作最大的动力。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4天前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之加了索引但是查询没有使用如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
4天前
|
关系型数据库 Java 数据库连接
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
116 3
|
4天前
|
存储 DataWorks 监控
DataWorks,一个 polar db 有上万个数据库,解决方案
DataWorks,一个 polar db 有上万个数据库,解决方案
|
4天前
|
存储 SQL 关系型数据库
关系型数据库强大的查询功能
【5月更文挑战第9天】关系型数据库强大的查询功能
9 3
|
4天前
|
缓存 关系型数据库 数据库
关系型数据库高效查询和统计
【5月更文挑战第8天】关系型数据库高效查询和统计
21 7
|
3天前
|
存储 SQL 关系型数据库
关系型数据库结构化数据存储查询方式
【5月更文挑战第10天】关系型数据库结构化数据存储查询方式
17 2
|
4天前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
33 2
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
151 0
|
4天前
|
Ubuntu 关系型数据库 MySQL
使用PXD工具一键安装PolarDB-X的体验
这次体验挺有意思的,对PolarDB-X有了更深入的了解,也希望能通过这些建议帮助产品做得更好。
23 1
使用PXD工具一键安装PolarDB-X的体验
|
4天前
|
SQL 关系型数据库 数据库
SQL 42501: Postgresql查询中的权限不足错误
SQL 42501: Postgresql查询中的权限不足错误
http://www.vxiaotou.com