首页 > 数据库 >postgresql中执行select查询语句卡住问题的处理

postgresql中执行select查询语句卡住问题的处理

时间:2023-11-23 10:34:26浏览次数:42  
标签:语句 postgresql 卡住 查询 pg select

 1、问题描述

 

研发环境搭建的分布式的数据库Tbase。Tbase本质上是基于postgresql-xl创建的分布式数据库。

昨天,研发的同事反馈,这个数据库中,对某个表执行select查询的时候,都是卡住的。

客户端一直没有影响。

 

2、问题分析

 

我这边通过pg的客户端进行连接,发现除了这个表,其他的表都是可以正常的进行查询和返回数据的。

所以怀疑,仅仅是这个表被锁住了。

 

3、问题解决

 

  3.1 查看数据库中有哪些锁等待

 

有哪些阻塞的进程,等待的事件和具体的执行的sql语句

SELECT
    pg_blocking_pids ( pid ),
    pid,
    now( ) - xact_start,
    wait_event,
    wait_event_type,
    substr( query, 1, 100 ) 
FROM
    pg_stat_activity 
WHERE
    STATE <> 'idle' 
ORDER BY
    3 DESC;

 

通过查询结果,可以知道,有一条alter 修改这个表的名字的ddl语句

一直卡在那里,导致后面的select都是卡住的

 经过和研发确认,确实是执行了表名的修改的动作。

 

3.2 杀掉阻塞进程

 

找到了阻塞的进程,直接干掉

SELECT
    pg_terminate_backend ( 5927 );

括号里的5927是阻塞进程的ID。

 

这个进程被杀掉之后,查询的语句执行成功。

后面和研发沟通具体的修改表名的方法,以最小的影响业务的正常进行。

标签:语句,postgresql,卡住,查询,pg,select
From: https://www.cnblogs.com/chuanzhang053/p/17850993.html

相关文章

  • golang select
    golangselect是多channel并行的利器不要拿switch和select比,根本不是一个东西好嘛,差不少,只是名字稍微有点像前置操作golang对select做了一些优化select结构体为空当select里面为空的时候会直接panic只有一个case当只有一个case时候(包括只有一个case时候),......
  • select函数的用法和原理
    Linux上的select函数select函数用于检测在一组socket中是否有事件就绪。事件分为以下三类:读就绪事件在socket内核中,接收缓冲区中的字节数大于或等于低水位标记SO_RCVLOWAT,此时调用recv或read函数可以无阻塞地读该文件描述符,并且返回值大于0。TCP连接的对端......
  • Maybatis-Plus 数据库查询 lambdaQuery和mapper中EQ、NE、GT、LT、GE、LE、select、li
    Maybatis-PluslambdaQuery和mapper中EQ、NE、GT、LT、GE、LE的用法及详解实体当前实体如下,后续代码示例都用该实体;@Data@TableName("user_info")@ApiModel(value="UserInfo对象",description="")publicclassUserInfoimplementsSerializable{privatesta......
  • 报错:Invalid bound statement (not found): com.ljxx.pts.dao.SitePriceMapper.select
    如果你是Mybatis的话请注意yml或者properties文件里面的组件扫描#指定mapper.xml的位置mybatis.mapperLocations=classpath*:mapper/**/*Mapper.xmlmybatis.configuration.map-underscore-to-camel-case=true注意:由于上面指定的是Mapper.xml,故xml文件不要携程Dao.xml......
  • 实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 Postgr
     C++是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用C++连接SQLServer、MySQL、Oracle、ACCESS、SQLite和PostgreSQL、MongoDB数据库。连接SQLServer数据库要使用C++连接SQLServer数据库,可以使用Micro......
  • mysql c++ create table,insert,select
    CREATETABLE`t1`(`id`bigintunsignedNOTNULLAUTO_INCREMENTprimarykey,`author`varchar(40)NOTNULLDEFAULT'',`comment`varchar(40)NOTNULLDEFAULT'',`content`varchar(40)NOTNULLDEFAULT'',`header`......
  • SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST
    SQLDELETE语句SQLDELETE语句用于删除表中的现有记录。DELETE语法DELETEFROM表名WHERE条件;注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所有记录!演示数据库以下是示例中使用的Cus......
  • Postgresql(PG)表的操作:
      PG表的支持数据类型:数值数据类型字符串数据类型日期/时间数据类型  #创建库postgres=#createdatabasemydb;CREATEDATABASEpostgres=#\cmydbYouarenowconnectedtodatabase"mydb"asuser"postgres".mydb=#\dDidnotfindanyrelations.#创建表mydb=......
  • 【云贝教育】PostgreSQL PGCA题库解析-1
    psql元命令\du和\dg都可以列出角色或用户,请问这两个命令是否等价?A.等价B.不等价C.不好说D.不确定参考答案:A解析:要确认某个封装命令是否等价,只需要看后台调用的SQL即可。一、开启SQL跟踪功能1.1修改参数,开启sql跟踪修改前#log_statement='none'#none,ddl,......
  • PostgreSQL - Transaction Isolation Level
     zzh@ZZHPC:~$dockerrun--namepostgres16-p5432:5432-ePOSTGRES_USER=root-ePOSTGRES_PASSWORD=aaa-dpostgres:alpine8e36b7bdc47572723a416c319b83f20b2eac7ef25adb3ac1a875e909f45ebdb6zzh@ZZHPC:~$dockerexec-itpostgres16createdb--username=root-......