- 浏览: 243378 次
最新评论
pg_cancel_backend()和pg_terminate_backend()
两个函数的官方解释:
pg_cancel_backend() 取消后台操作,回滚未提交事物
pg_terminate_backend() 中断session,回滚未提交事物
pg_cancel_backend()举例:
session A:
postgres=# create table t1 (a int);
CREATE TABLE
postgres=# begin;
postgres=# insert into t1 select generate_series(1,100000000);
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
----------+------+-----------------------------------------------------
postgres | 1923 | insert into t2 select generate_series(1,100000000);
tina | 1922 | select datname,pid, query from pg_stat_activity;
(2 rows)
tina=# select pg_cancel_backend(1923);
pg_cancel_backend
-------------------
t
(1 row)
session A:
STATEMENT: insert into t2 select generate_series(1,100000000);
ERROR: canceling statement due to user request
postgres=# commit;
ROLLBACK
postgres=# select * from t2;
a
---
(0 rows)
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
----------+------+--------------------------------------------------
postgres | 1923 | commit;
tina | 1922 | select datname,pid, query from pg_stat_activity;
pg_terminate_backend() 举例:
session A:
postgres=# create table t2 (a int);
CREATE TABLE
postgres=# begin;
BEGIN
postgres=# insert into t2 select generate_series(1,100000000);
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
---------+------+-------------
postgres | 1874 | insert into t2 select generate_series(1,100000000);
tina | 1914 | select * from pg_stat_activity;
(2 rows)
postgres=# select pg_terminate_backend(1874);
pg_terminate_backend
----------------------
t (1 row)
session A:
FATAL: terminating connection due to administrator command
STATEMENT: insert into t2 select generate_series(1,100000000);
FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=# commit;
WARNING: there is no transaction in progress
WARNING: there is no transaction in progress
COMMIT
postgres=# select * from t2;
a
---
(0 rows)
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
---------+------+-------------
tina | 1914 | select * from pg_stat_activity;
(1 rows)
在pg_cancel_backend()下,session还在,事物回退;
在pg_terminate_backend()操作后,session消失,事物回退。
如果在某些时候pg_terminate_backend()不能杀死session,那么可以在os层面,直接kill -9 pid
两个函数的官方解释:
pg_cancel_backend() 取消后台操作,回滚未提交事物
pg_terminate_backend() 中断session,回滚未提交事物
pg_cancel_backend()举例:
session A:
postgres=# create table t1 (a int);
CREATE TABLE
postgres=# begin;
postgres=# insert into t1 select generate_series(1,100000000);
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
----------+------+-----------------------------------------------------
postgres | 1923 | insert into t2 select generate_series(1,100000000);
tina | 1922 | select datname,pid, query from pg_stat_activity;
(2 rows)
tina=# select pg_cancel_backend(1923);
pg_cancel_backend
-------------------
t
(1 row)
session A:
STATEMENT: insert into t2 select generate_series(1,100000000);
ERROR: canceling statement due to user request
postgres=# commit;
ROLLBACK
postgres=# select * from t2;
a
---
(0 rows)
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
----------+------+--------------------------------------------------
postgres | 1923 | commit;
tina | 1922 | select datname,pid, query from pg_stat_activity;
pg_terminate_backend() 举例:
session A:
postgres=# create table t2 (a int);
CREATE TABLE
postgres=# begin;
BEGIN
postgres=# insert into t2 select generate_series(1,100000000);
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
---------+------+-------------
postgres | 1874 | insert into t2 select generate_series(1,100000000);
tina | 1914 | select * from pg_stat_activity;
(2 rows)
postgres=# select pg_terminate_backend(1874);
pg_terminate_backend
----------------------
t (1 row)
session A:
FATAL: terminating connection due to administrator command
STATEMENT: insert into t2 select generate_series(1,100000000);
FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=# commit;
WARNING: there is no transaction in progress
WARNING: there is no transaction in progress
COMMIT
postgres=# select * from t2;
a
---
(0 rows)
session B:
tina=# select datname,pid, query from pg_stat_activity;
datname | pid | query
---------+------+-------------
tina | 1914 | select * from pg_stat_activity;
(1 rows)
在pg_cancel_backend()下,session还在,事物回退;
在pg_terminate_backend()操作后,session消失,事物回退。
如果在某些时候pg_terminate_backend()不能杀死session,那么可以在os层面,直接kill -9 pid
发表评论
-
pg 锁
2016-01-14 16:26 0pg 锁 ... -
postgresql 的三类日志
2016-01-14 15:59 18525一、PostgreSQL有3种日志: 1)pg_log(数据 ... -
pg存储过程--创建分区表
2016-01-13 15:46 01)将普通表改成按时间字段分区表 调用select fun_c ... -
pg常用自制shell脚本-tina
2016-01-13 15:30 49351)小型监控: 1.在pg库主机上部署,每5分钟执行一次,插入 ... -
postgresql 时间类型和相关函数
2016-01-13 10:41 5457今天来好好学习一下postgresql涉及时间的字段类型和一些 ... -
pg 表空间
2016-01-07 16:28 3123一、说明 在数据库运维工作中,经常会有数据目录使用率较高 ... -
pg 定期vacuum和reindex
2016-01-07 14:56 8613定期vacuum和reindex: 一 ... -
pg 序列
2016-01-06 16:58 1621一、简介 一个序列对象通常用于为行或者表生成唯一的标识符。 ... -
pg 简单备份和恢复
2016-01-06 15:53 3767pg的备份和恢复 pg_dump ... -
ERROR: invalid page header in block 27073 of relation base/21078/45300926
2016-01-06 15:12 2143突然断网,检查后通知我们UPS断电,db所在主机重启 1、连上 ... -
canceling statement due to conflict with recovery
2016-01-05 17:12 1679报错: canceling statement due to ... -
postgresql dblink 使用
2015-12-31 14:33 2041dblink的使用 pg的跨库查询工具 select dbli ... -
root用户不能使用psql或者pg_dump等pg命令
2015-12-24 14:40 7025root用户不能使用psql或者pg_dump等pg命令 [ ... -
postgresql新建库2个常见报错
2015-12-22 16:43 6257今天使用pg建库发现两个报错: ERROR: new c ... -
安装postgresql 9.1.1
2015-12-22 16:25 641安装postgresql 9.1.1 ---版本自选,步骤相同 ... -
pgbadger监控安装和使用
2015-12-21 10:01 2033pgbadger监控安装和使用 https://github ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
postgresql存储过程实例:已审核证书存入临时表
2015-12-14 16:44 652存储过程实例: 需求: 思路:建立存储过程 代码逻辑: 1 ... -
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
2015-12-11 09:48 678pg 函数sfa_tmp_sleep()执行越来越慢 ... -
pgpool 主从流复制模式下的安装使用
2015-12-11 09:50 4125pgpool-II 是一个位于 PostgreSQL 服务器和 ...
相关推荐
haproxy_backend_bytes_in_total haproxy_backend_bytes_out_total haproxy_backend_client_aborts_total haproxy_backend_compressor_bytes_bypassed_total haproxy_backend_compressor_bytes_in_total haproxy_...
lager_nif_file_backend lager's lager_file_backend uses erlang file module to operates files. 替换lager_file_backend,qps可以提升50%,瓶颈在gen_event
MageHost_Cm_Cache_Backend MageHost扩展版的Colin Mollenhour的Cm_Cache_Backend_File和Cm_Cache_Backend_Redis安装安装 cd到您的Magento根目录test -d .modman || modman init modman clone --copy --force ...
资源分类:Python库 所属语言:Python 资源全名:anyconfig_json5_backend-0.2.0-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Dynamic_form,_survey_questionnaire_backend_system._research_sys
《使用dow_cdkey_backend创建CDKey后台服务的详尽指南》 在IT行业中,创建一个用于生成和管理CDKey的后台服务对于游戏发行、软件授权等场景至关重要。本篇文章将详细阐述如何利用名为"dow_cdkey_backend"的项目来...
通过以上分析,我们可以看到`django_minio_backend`是连接Django Web框架和MinIO对象存储服务的重要桥梁,它为Python开发者提供了一种高效、安全的方式来处理和存储Web应用中的大量非结构化数据。
天才宝宝游泳中心后台Koa框架_TCBB_backend_v1.zip 天才宝宝游泳中心后台Koa框架_TCBB_backend_v1.zip 天才宝宝游泳中心后台Koa框架_TCBB_backend_v1.zip 天才宝宝游泳中心后台Koa框架_TCBB_backend_v1.zip 天才宝宝...
可万能扩充栏目的企业整站源码,对于开发企业OA还是有一定参考价值。 本系统采用.net 2.0技术,必须用.net 2.0环境运行本系统,用.net 1.1环境运行时会出错。 ...2.可以万能式扩充栏目,灵活性很强 ...
“cars_and_bids_backend-main”可能是指项目的主要代码仓库或者主应用目录,包含了服务的源代码、配置文件和其他必要的资源。通过深入研究这些源代码,我们可以更详细地了解服务的具体实现和架构。不过,由于具体...
【标题】"Spirit-master_spirit_django_backendsystem_" 指向的是一款基于 Django 框架构建的后台管理系统插件,名为 "Spirit"。这个插件专门设计用于提升和扩展 Django 应用程序的后台管理功能,提供了一个用户友好...
本文将深入探讨如何利用Arduino UNO创建一个菜单后台系统,即"MenuBackend_1-4.zip_Menu_arduino_backend_uno"项目,来实现设备控制和数据交互。 一、Arduino UNO介绍 Arduino UNO是基于Atmel ATmega328P微处理器的...
Noisia PostgreSQL有害的工作负载生成器。支持的工作负载: idle transactions -在其生命周期内不执行任何交易。 rollbacks -事务执行... terminate backends -使用pg_terminate_backend() , pg_cancel_backend()终止
资源分类:Python库 所属语言:Python 资源全名:django_minio_backend-3.0.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
《PyPI官网下载 | alignak_module_backend-0.4.0.tar.gz——探索Python库的构建与分发》 PyPI(Python Package Index),作为Python社区的重要组成部分,是Python开发者发布和分享自己编写的模块、库和工具的平台。...
django+haystack配置中文搜索的文件,简单,放在应用目录下即可!
Api-symfony-flex-backend.zip,带有symfony flex的rest api这是什么,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化...
要使用`jupyterlab_dotscience_backend`,首先确保已安装JupyterLab和Python 3环境。然后,可以通过以下命令在终端中安装这个库: ```bash pip install jupyterlab_dotscience_backend-0.2.6-py3-none-any.whl ``` ...
为了充分利用`django_budget_backend`,开发者需要熟悉Django框架的基本用法,了解如何创建和配置应用,以及如何使用模型、视图、模板等核心概念。同时,阅读库的文档和源代码是十分必要的,这有助于理解库的具体...