当前位置:网站首页>Hologres query management and timeout processing
Hologres query management and timeout processing
2022-07-05 00:16:00 【The dawn of victory】
adopt Hologres Of Query Management can query SQL Operation information of , Set up Query Timeout for running , Better management SQL, Prevent deadlock .
Inquire about pg_stat_activity View information
select * from pg_stat_activity ;
pg_stat_activity Parameter description of view :
- datid:Hologres The database to which the backend is connected OID.
- datname:Hologres The name of the database to which the backend is connected .
- pid:Hologres Back end process ID.
- usesysid: Log in to Hologres Back end users OID.
- usename: The user name of the current connection .
- application_name: Application type of client .
- client_addr: Client's IP Address . According to the IP The address may be resolved , There is no guarantee that it must be the source IP.
- client_hostname: Host name of the client .
- client_port: Client port .
- backend_start: The time when the background process starts .
- xact_start: The time when the current transaction of the process was started .
- If there are no active transactions , Is empty .
- If the current query is the first transaction of the process , This column is equal to query_start.
- query_start: The time when the current active query started , If the current connection state is not active, The value is the start time of the previous query .
- state_change: The state of the connection (state) The last time it was changed .
- wait_event_type: The type of event the backend is waiting for , If it doesn't exist, it is NULL. The possible values are :
- LWLock: The backend is waiting for a lightweight lock .
- Lock: The backend is waiting for a heavyweight lock .
wait_eventWill identify the type of lock waiting . - BufferPin: The server process is waiting to access a data buffer , At this time, no other process is checking the buffer .
- Activity: The server process is idle . A system process used to wait for activity in its main processing loop .
- Extension: The server process is waiting for activity in an extension module .
- Client: The server process is waiting for some kind of query from the user application , And the server anticipates something that has nothing to do with its internal processing .
- PC: The server process is waiting for some activity from another process in the server .
- Timeout: The server process is waiting for a timeout to occur .
- IO: The server process is waiting for one IO complete .
- wait_event: If the backend is currently waiting , Is the name of the waiting event , Otherwise NULL.
- state: Indicates the status of the connection . Common states are as follows :
- active: active .
- idle: Free .
- idle in transaction: Idle state in long transactions .
- idle in transaction(Aborted): Idle state in failed transactions .
- \N: The state is empty , Represents a non user connected process , Generally, it belongs to the maintenance process in the background of the system , You can ignore .
- backend_xid:Hologres The top-level transaction identifier of the back end .
- backend_xmin: Current backend xmin Range .
- query: Recent queries executed by the backend . If state by
active, The currently executing query will be displayed . In all other states , Display the last executed query . - backend_type: Current backend type . Possible types are autovacuum launcher、autovacuum worker、logical replication launcher、logical replication worker、parallel worker、background writer、client backend、checkpointer、startup、walreceiver、walsender as well as walwriter. In addition, it also includes the back-end execution components , for example PQE etc. .
HoloWeb Active visualization Query management
Can pass HoloWeb Visual view active Query, And manage .
see SQL Operation information
Superuser You can view all users SQL Operation information ,RAM Users can only view their own SQL Operation information .
1. You can view the user's in the current instance through the following statement SQL Operation information .
SELECT datname::text,usename,query,pid::text,state FROM pg_stat_activity;
2. You can execute the following statement to view the currently running SQL Information .
SELECT datname::text,usename,query,pid::text,state
FROM pg_stat_activity
WHERE state != 'idle' ;
3. You can execute the following statement to view the current instance that is running and takes a long time SQL Information .
SELECT current_timestamp - query_start as runtime, datname::text, usename, query, pid::text
FROM pg_stat_activity
WHERE state != 'idle'
order by 1 desc;
4. End Query
If there is currently something that does not meet expectations Query, The following commands can be used to terminate according to the actual situation .
Cancel Query.
select pg_cancel_backend(<pid>);
Batch cancel Query.
SELECT pg_cancel_backend(pid)
,query
,datname::text
,usename
,application_name
,client_addr
,client_port
,backend_start
,state
FROM pg_stat_activity
WHERE length(query) > 0
AND pid != pg_backend_pid()
AND backend_type = 'client backend'
AND application_name != 'hologres'
AND usename != 'holo_admin'
AND query not like '%pg_cancel_backend%';
Modify active Query Timeout time
-- session Level modification ( To modify the timeout SQL Statements are executed together to take effect )
set statement_timeout = <time>;
-- db Level modification
alter database dbname set statement_timeout=<time>;
time The value range of timeout is 0~2147483647ms, The default unit is ms( When time You need to use single quotation marks when adding units , Otherwise, an error will be reported ). The current default timeout is 8 Hours .
Examples are as follows :
Set the timeout to 10min, The specific time zone unit ,10min You need to add single quotation marks as a whole .
set statement_timeout = '10min' ;
select * from tablename;
Set the timeout to 5000ms.
set statement_timeout = 5000 ;
select * from tablename;
Set up db The timeout is 10min.
alter database dbname set statement_timeout='10min';
Query whether the settings are effective :
show statement_timeout;
Modify idle Query Timeout time
Parameters idle_in_transaction_session_timeout Describes the transaction entry idle Timeout behavior after status , If the parameter value is not set , By default, the transaction timeout will not be released , Transactions are prone to occur without releasing , Causes the query to be locked .
When Query When execution generates deadlock , You need to set the timeout . For example, the following code , unexecuted commit, Opened a transaction , But didn't submit , It will cause transaction leakage , And then cause database level deadlock , Affect the normal use of the service .
begin;
select * from t;
When this deadlock scenario occurs , Can be set by idle_in_transaction_session_timeout Timeout to solve . When an idle connection with transactions exceeds idle_in_transaction_session_timeout The set time has not been committed or rolled back , The system will automatically rollback the transaction according to the timeout , And close the connection .
--session Modify idle transaction timeout
set idle_in_transaction_session_timeout=<time>;
--DB Level modify idle transaction timeout
alter database db_name set idle_in_transaction_session_timeout=<time>;
time The value range of timeout is 0~2147483647ms, The default unit is ms( When time You need to use single quotation marks when adding units , Otherwise, an error will be reported ). stay Hologres V0.10 Up to , The default value is 0, That is, it will not be cleaned automatically ; stay Hologres V1.1 edition , The default value is 10 minute , exceed 10 The transaction will be rolled back in minutes .
It is not recommended to set the timeout too short , If it is too short, it is easy to rollback the transaction in use .
Set the timeout to 300000ms.
--session Modify idle transaction timeout
set idle_in_transaction_session_timeout=300000;
--DB Level modify idle transaction timeout
alter database db_name set idle_in_transaction_session_timeout=300000;
Query whether the settings are effective :
show idle_in_transaction_session_timeout;
reference :https://help.aliyun.com/document_detail/263548.html
边栏推荐
- P3304 [sdoi2013] diameter (diameter of tree)
- 他做国外LEAD,用了一年时间,把所有房贷都还清了
- PMP certificate renewal process
- Is the account opening link of Huatai Securities with low commission safe?
- Robot reinforcement learning synergies between pushing and grassing with self supervised DRL (2018)
- 挖财学院开户安全的吗?开户怎么开?
- Using the uniapp rich text editor
- Verilog tutorial (11) initial block in Verilog
- (脚本)一键部署redis任意版本 —— 筑梦之路
- lambda expressions
猜你喜欢
Date time type and format in MySQL

How to do the project of computer remote company in foreign Internet?

OpenHarmony资源管理详解

IELTS examination process, what to pay attention to and how to review?

电力运维云平台:开启电力系统“无人值班、少人值守”新模式

青海省国家湿地公园功能区划数数据、全国湿地沼泽分布数据、全国省市县自然保护区
![P3304 [SDOI2013]直径(树的直径)](/img/5c/984675bf4517481f80f54657c6c7ad.png)
P3304 [SDOI2013]直径(树的直径)

Skills in analyzing the trend chart of London Silver

ORB(Oriented FAST and Rotated BRIEF)

Detailed explanation of openharmony resource management
随机推荐
他做国外LEAD,用了一年时间,把所有房贷都还清了
Go pit - no required module provides Package: go. Mod file not found in current directory or any parent
Specification for fs4061a boost 8.4v charging IC chip and fs4061b boost 12.6V charging IC chip datasheet
The input of uniapp is invalid except for numbers
业务实现-日志写到同一个行数据里面
If you open an account of Huatai Securities by stock speculation, is it safe to open an account online?
JS convert pseudo array to array
lambda expressions
Power operation and maintenance cloud platform: open the new mode of "unattended and few people on duty" of power system
Skills in analyzing the trend chart of London Silver
abc 258 G - Triangle(bitset)
Is it safe to open an account in the College of Finance and economics? How to open an account?
Hologres Query管理及超时处理
【北京大学】Tensorflow2.0-1-开篇
挖财学院开户安全的吗?开户怎么开?
[IELTS reading] Wang Xiwei reading P3 (heading)
如何在外地外网电脑远程公司项目?
GDB常用命令
Netcore3.1 JSON web token Middleware
Nine Qi single chip microcomputer ny8b062d single key control four LED States