PG-320: Removing the query state code from the view.
The query status monitoring code was used to track the current query state, for example, parsing, executing and finishing. After careful review, we have figured out that it does not make sense while a lot of time same query is running. Therefore it is also consuming resources. This commit will remove that feature. The upgrade SQL from 1.0 - 2.0 is also updated.pull/312/head
parent
fddc0967e3
commit
db5a6aa30e
|
@ -3,3 +3,274 @@
|
||||||
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
||||||
|
|
||||||
|
DROP FUNCTION pg_stat_monitor_internal CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_11_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_13_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_14_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_view CASCADE;
|
||||||
|
|
||||||
|
-- pg_stat_monitor internal function, must not call outside from this file.
|
||||||
|
CREATE FUNCTION pg_stat_monitor_internal(
|
||||||
|
IN showtext boolean,
|
||||||
|
OUT bucket int8, -- 0
|
||||||
|
OUT userid oid,
|
||||||
|
OUT dbid oid,
|
||||||
|
OUT client_ip int8,
|
||||||
|
|
||||||
|
OUT queryid text, -- 4
|
||||||
|
OUT planid text,
|
||||||
|
OUT query text,
|
||||||
|
OUT query_plan text,
|
||||||
|
OUT top_queryid text,
|
||||||
|
OUT top_query text,
|
||||||
|
OUT application_name text,
|
||||||
|
|
||||||
|
OUT relations text, -- 11
|
||||||
|
OUT cmd_type int,
|
||||||
|
OUT elevel int,
|
||||||
|
OUT sqlcode TEXT,
|
||||||
|
OUT message text,
|
||||||
|
OUT bucket_start_time text,
|
||||||
|
|
||||||
|
OUT calls int8, -- 16
|
||||||
|
|
||||||
|
OUT total_exec_time float8,
|
||||||
|
OUT min_exec_time float8,
|
||||||
|
OUT max_exec_time float8,
|
||||||
|
OUT mean_exec_time float8,
|
||||||
|
OUT stddev_exec_time float8,
|
||||||
|
|
||||||
|
OUT rows_retrieved int8,
|
||||||
|
|
||||||
|
OUT plans_calls int8, -- 23
|
||||||
|
|
||||||
|
OUT total_plan_time float8,
|
||||||
|
OUT min_plan_time float8,
|
||||||
|
OUT max_plan_time float8,
|
||||||
|
OUT mean_plan_time float8,
|
||||||
|
OUT stddev_plan_time float8,
|
||||||
|
|
||||||
|
OUT shared_blks_hit int8, -- 29
|
||||||
|
OUT shared_blks_read int8,
|
||||||
|
OUT shared_blks_dirtied int8,
|
||||||
|
OUT shared_blks_written int8,
|
||||||
|
OUT local_blks_hit int8,
|
||||||
|
OUT local_blks_read int8,
|
||||||
|
OUT local_blks_dirtied int8,
|
||||||
|
OUT local_blks_written int8,
|
||||||
|
OUT temp_blks_read int8,
|
||||||
|
OUT temp_blks_written int8,
|
||||||
|
OUT blk_read_time float8,
|
||||||
|
OUT blk_write_time float8,
|
||||||
|
OUT resp_calls text, -- 41
|
||||||
|
OUT cpu_user_time float8,
|
||||||
|
OUT cpu_sys_time float8,
|
||||||
|
OUT wal_records int8,
|
||||||
|
OUT wal_fpi int8,
|
||||||
|
OUT wal_bytes numeric,
|
||||||
|
OUT comments TEXT,
|
||||||
|
OUT toplevel BOOLEAN
|
||||||
|
)
|
||||||
|
RETURNS SETOF record
|
||||||
|
AS 'MODULE_PATHNAME', 'pg_stat_monitor'
|
||||||
|
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
|
||||||
|
|
||||||
|
-- Register a view on the function for ease of use.
|
||||||
|
CREATE FUNCTION pgsm_create_11_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_13_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
-- PostgreSQL-13 Specific Coulumns
|
||||||
|
plans_calls
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_14_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
|
||||||
|
-- PostgreSQL-14 Specific Columns
|
||||||
|
plans_calls,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
DECLARE ver integer;
|
||||||
|
BEGIN
|
||||||
|
SELECT current_setting('server_version_num') INTO ver;
|
||||||
|
IF (ver >= 14000) THEN
|
||||||
|
return pgsm_create_14_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 13000) THEN
|
||||||
|
return pgsm_create_13_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 11000) THEN
|
||||||
|
return pgsm_create_11_view();
|
||||||
|
END IF;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
SELECT pgsm_create_view();
|
||||||
|
|
||||||
|
GRANT SELECT ON pg_stat_monitor TO PUBLIC;
|
||||||
|
|
||||||
|
|
|
@ -26,19 +26,6 @@ $$ LANGUAGE SQL;
|
||||||
|
|
||||||
-- Some generic utility function used internally.
|
-- Some generic utility function used internally.
|
||||||
|
|
||||||
CREATE FUNCTION get_state(state_code int8) RETURNS TEXT AS
|
|
||||||
$$
|
|
||||||
SELECT
|
|
||||||
CASE
|
|
||||||
WHEN state_code = 0 THEN 'PARSING'
|
|
||||||
WHEN state_code = 1 THEN 'PLANNING'
|
|
||||||
WHEN state_code = 2 THEN 'ACTIVE'
|
|
||||||
WHEN state_code = 3 THEN 'FINISHED'
|
|
||||||
WHEN state_code = 4 THEN 'FINISHED WITH ERROR'
|
|
||||||
END
|
|
||||||
$$
|
|
||||||
LANGUAGE SQL PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
|
CREATE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
|
||||||
$$
|
$$
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -129,7 +116,6 @@ CREATE FUNCTION pg_stat_monitor_internal(
|
||||||
OUT planid text,
|
OUT planid text,
|
||||||
OUT query text,
|
OUT query text,
|
||||||
OUT query_plan text,
|
OUT query_plan text,
|
||||||
OUT state_code int8,
|
|
||||||
OUT top_queryid text,
|
OUT top_queryid text,
|
||||||
OUT top_query text,
|
OUT top_query text,
|
||||||
OUT application_name text,
|
OUT application_name text,
|
||||||
|
@ -233,9 +219,7 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
cpu_sys_time,
|
cpu_sys_time,
|
||||||
wal_records,
|
wal_records,
|
||||||
wal_fpi,
|
wal_fpi,
|
||||||
wal_bytes,
|
wal_bytes
|
||||||
state_code,
|
|
||||||
get_state(state_code) as state
|
|
||||||
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
ORDER BY bucket_start_time;
|
ORDER BY bucket_start_time;
|
||||||
RETURN 0;
|
RETURN 0;
|
||||||
|
@ -292,9 +276,6 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
wal_records,
|
wal_records,
|
||||||
wal_fpi,
|
wal_fpi,
|
||||||
wal_bytes,
|
wal_bytes,
|
||||||
state_code,
|
|
||||||
get_state(state_code) as state,
|
|
||||||
|
|
||||||
-- PostgreSQL-13 Specific Coulumns
|
-- PostgreSQL-13 Specific Coulumns
|
||||||
plans_calls
|
plans_calls
|
||||||
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
@ -352,8 +333,6 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
wal_records,
|
wal_records,
|
||||||
wal_fpi,
|
wal_fpi,
|
||||||
wal_bytes,
|
wal_bytes,
|
||||||
state_code,
|
|
||||||
get_state(state_code) as state,
|
|
||||||
|
|
||||||
-- PostgreSQL-14 Specific Columns
|
-- PostgreSQL-14 Specific Columns
|
||||||
plans_calls,
|
plans_calls,
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
PG_MODULE_MAGIC;
|
PG_MODULE_MAGIC;
|
||||||
|
|
||||||
#define BUILD_VERSION "1.1.1"
|
#define BUILD_VERSION "1.1.1"
|
||||||
#define PG_STAT_STATEMENTS_COLS 53 /* maximum of above */
|
#define PG_STAT_STATEMENTS_COLS 52 /* maximum of above */
|
||||||
#define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query"
|
#define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query"
|
||||||
|
|
||||||
#define roundf(x,d) ((floor(((x)*pow(10,d))+.5))/pow(10,d))
|
#define roundf(x,d) ((floor(((x)*pow(10,d))+.5))/pow(10,d))
|
||||||
|
@ -463,22 +463,6 @@ pgss_post_parse_analyze(ParseState *pstate, Query *query)
|
||||||
*/
|
*/
|
||||||
if (query->queryId == UINT64CONST(0))
|
if (query->queryId == UINT64CONST(0))
|
||||||
query->queryId = UINT64CONST(1);
|
query->queryId = UINT64CONST(1);
|
||||||
|
|
||||||
if (jstate.clocations_count > 0)
|
|
||||||
pgss_store(query->queryId, /* query id */
|
|
||||||
pstate->p_sourcetext, /* query */
|
|
||||||
query->stmt_location, /* query location */
|
|
||||||
query->stmt_len, /* query length */
|
|
||||||
NULL, /* PlanInfo */
|
|
||||||
query->commandType, /* CmdType */
|
|
||||||
NULL, /* SysInfo */
|
|
||||||
NULL, /* ErrorInfo */
|
|
||||||
0, /* totaltime */
|
|
||||||
0, /* rows */
|
|
||||||
NULL, /* bufusage */
|
|
||||||
NULL, /* walusage */
|
|
||||||
&jstate, /* JumbleState */
|
|
||||||
PGSS_PARSE); /* pgssStoreKind */
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -521,20 +505,6 @@ pgss_ExecutorStart(QueryDesc *queryDesc, int eflags)
|
||||||
#endif
|
#endif
|
||||||
MemoryContextSwitchTo(oldcxt);
|
MemoryContextSwitchTo(oldcxt);
|
||||||
}
|
}
|
||||||
pgss_store(queryDesc->plannedstmt->queryId, /* query id */
|
|
||||||
queryDesc->sourceText, /* query text */
|
|
||||||
queryDesc->plannedstmt->stmt_location, /* query location */
|
|
||||||
queryDesc->plannedstmt->stmt_len, /* query length */
|
|
||||||
NULL, /* PlanInfo */
|
|
||||||
queryDesc->operation, /* CmdType */
|
|
||||||
NULL, /* SysInfo */
|
|
||||||
NULL, /* ErrorInfo */
|
|
||||||
0, /* totaltime */
|
|
||||||
0, /* rows */
|
|
||||||
NULL, /* bufusage */
|
|
||||||
NULL, /* walusage */
|
|
||||||
NULL, /* JumbleState */
|
|
||||||
PGSS_EXEC); /* pgssStoreKind */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1657,7 +1627,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
|
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
|
||||||
elog(ERROR, "pg_stat_monitor: return type must be a row type");
|
elog(ERROR, "pg_stat_monitor: return type must be a row type");
|
||||||
|
|
||||||
if (tupdesc->natts != 51)
|
if (tupdesc->natts != 50)
|
||||||
elog(ERROR, "pg_stat_monitor: incorrect number of output arguments, required %d", tupdesc->natts);
|
elog(ERROR, "pg_stat_monitor: incorrect number of output arguments, required %d", tupdesc->natts);
|
||||||
|
|
||||||
tupstore = tuplestore_begin_heap(true, false, work_mem);
|
tupstore = tuplestore_begin_heap(true, false, work_mem);
|
||||||
|
@ -1802,11 +1772,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
values[i++] = CStringGetTextDatum("<insufficient privilege>");
|
values[i++] = CStringGetTextDatum("<insufficient privilege>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parentid at column number 8 */
|
||||||
/* state at column number 8 */
|
|
||||||
values[i++] = Int64GetDatumFast(tmp.state);
|
|
||||||
|
|
||||||
/* parentid at column number 9 */
|
|
||||||
if (tmp.info.parentid != UINT64CONST(0))
|
if (tmp.info.parentid != UINT64CONST(0))
|
||||||
{
|
{
|
||||||
snprintf(parentid_txt, 32, "%08lX", tmp.info.parentid);
|
snprintf(parentid_txt, 32, "%08lX", tmp.info.parentid);
|
||||||
|
@ -1819,7 +1785,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
nulls[i++] = true;
|
nulls[i++] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* application_name at column number 9 */
|
/* application_name at column number 10 */
|
||||||
if (strlen(tmp.info.application_name) > 0)
|
if (strlen(tmp.info.application_name) > 0)
|
||||||
values[i++] = CStringGetTextDatum(tmp.info.application_name);
|
values[i++] = CStringGetTextDatum(tmp.info.application_name);
|
||||||
else
|
else
|
||||||
|
|
|
@ -12,12 +12,11 @@ SELECT 1 AS num;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | application_name
|
query | application_name
|
||||||
-------------------------------------------------------------------------------+-----------------------------
|
--------------------------------+-----------------------------
|
||||||
SELECT 1 AS num | pg_regress/application_name
|
SELECT 1 AS num | pg_regress/application_name
|
||||||
SELECT pg_stat_monitor_reset() | pg_regress/application_name
|
SELECT pg_stat_monitor_reset() | pg_regress/application_name
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C" | pg_regress/application_name
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -20,15 +20,14 @@ SELECT 1 AS num;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
||||||
query | application_name
|
query | application_name
|
||||||
-------------------------------------------------------------------------------------------------+------------------------------------
|
--------------------------------+------------------------------------
|
||||||
SELECT 1 AS num | naeem
|
SELECT 1 AS num | naeem
|
||||||
SELECT 1 AS num | psql
|
SELECT 1 AS num | psql
|
||||||
SELECT pg_stat_monitor_reset() | pg_regress/application_name_unique
|
SELECT pg_stat_monitor_reset() | pg_regress/application_name_unique
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C" | psql
|
Set application_name = 'naeem' | naeem
|
||||||
Set application_name = 'naeem' | naeem
|
Set application_name = 'psql' | psql
|
||||||
Set application_name = 'psql' | psql
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -12,12 +12,11 @@ SELECT 1 AS num;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query
|
query
|
||||||
--------------------------------------------------------------
|
--------------------------------
|
||||||
SELECT 1 AS num
|
SELECT 1 AS num
|
||||||
SELECT pg_stat_monitor_reset()
|
SELECT pg_stat_monitor_reset()
|
||||||
SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -24,20 +24,19 @@ SELECT b FROM t2 FOR UPDATE;
|
||||||
TRUNCATE t1;
|
TRUNCATE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | cmd_type | cmd_type_text
|
query | cmd_type | cmd_type_text
|
||||||
----------------------------------------------------------------------------------------+----------+---------------
|
--------------------------------+----------+---------------
|
||||||
CREATE TABLE t1 (a INTEGER) | 0 |
|
CREATE TABLE t1 (a INTEGER) | 0 |
|
||||||
CREATE TABLE t2 (b INTEGER) | 0 |
|
CREATE TABLE t2 (b INTEGER) | 0 |
|
||||||
DELETE FROM t1 | 4 | DELETE
|
DELETE FROM t1 | 4 | DELETE
|
||||||
DROP TABLE t1 | 0 |
|
DROP TABLE t1 | 0 |
|
||||||
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
||||||
SELECT a FROM t1 | 1 | SELECT
|
SELECT a FROM t1 | 1 | SELECT
|
||||||
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
||||||
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
||||||
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1 | SELECT
|
TRUNCATE t1 | 0 |
|
||||||
TRUNCATE t1 | 0 |
|
UPDATE t1 SET a = 2 | 2 | UPDATE
|
||||||
UPDATE t1 SET a = 2 | 2 | UPDATE
|
(10 rows)
|
||||||
(11 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -41,8 +41,7 @@ SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
---------------------------------------------------------------------------------+-------
|
---------------------------------------------------------------------------------+-------
|
||||||
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 4
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 4
|
||||||
SELECT pg_stat_monitor_reset() | 1
|
SELECT pg_stat_monitor_reset() | 1
|
||||||
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
@ -76,7 +75,7 @@ SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
n := n + 1; +|
|
n := n + 1; +|
|
||||||
end loop; +|
|
end loop; +|
|
||||||
end $$ |
|
end $$ |
|
||||||
(4 rows)
|
(3 rows)
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
Set pg_stat_monitor.pgsm_track='all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INTEGER);
|
||||||
|
CREATE TABLE t2 (b INTEGER);
|
||||||
|
CREATE TABLE t3 (c INTEGER);
|
||||||
|
CREATE TABLE t4 (d INTEGER);
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
query | calls
|
||||||
|
---------------------------------------------------------------------------------+-------
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 4
|
||||||
|
SELECT pg_stat_monitor_reset() | 1
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
do $$
|
||||||
|
declare
|
||||||
|
n integer:= 1;
|
||||||
|
begin
|
||||||
|
loop
|
||||||
|
PERFORM a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
exit when n = 1000;
|
||||||
|
n := n + 1;
|
||||||
|
end loop;
|
||||||
|
end $$;
|
||||||
|
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
query | calls
|
||||||
|
---------------------------------------------------------------------------------------------------+-------
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 1000
|
||||||
|
SELECT pg_stat_monitor_reset() | 1
|
||||||
|
do $$ +| 1
|
||||||
|
declare +|
|
||||||
|
n integer:= 1; +|
|
||||||
|
begin +|
|
||||||
|
loop +|
|
||||||
|
PERFORM a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;+|
|
||||||
|
exit when n = 1000; +|
|
||||||
|
n := n + 1; +|
|
||||||
|
end loop; +|
|
||||||
|
end $$ |
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -28,13 +28,13 @@ SELECT * FROM t3,t4 WHERE t3.c = t4.d;
|
||||||
|
|
||||||
\c contrib_regression
|
\c contrib_regression
|
||||||
SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
datname | query
|
datname | query
|
||||||
--------------------+-----------------------------------------------------------------------
|
--------------------+---------------------------------------
|
||||||
db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b
|
db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b
|
||||||
db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d
|
db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d
|
||||||
contrib_regression | SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
contrib_regression | SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
||||||
contrib_regression | SELECT pg_stat_monitor_reset()
|
contrib_regression | SELECT pg_stat_monitor_reset()
|
||||||
(4 rows)
|
(3 rows)
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
|
\c db1
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t2 (b int);
|
||||||
|
\c db2
|
||||||
|
CREATE TABLE t3 (c int);
|
||||||
|
CREATE TABLE t4 (d int);
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
SELECT * FROM t1,t2 WHERE t1.a = t2.b;
|
||||||
|
a | b
|
||||||
|
---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c db2
|
||||||
|
SELECT * FROM t3,t4 WHERE t3.c = t4.d;
|
||||||
|
c | d
|
||||||
|
---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
datname | query
|
||||||
|
--------------------+---------------------------------------
|
||||||
|
db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b
|
||||||
|
db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d
|
||||||
|
contrib_regression | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
\c db2
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
\c contrib_regression
|
||||||
|
DROP DATABASE db1;
|
||||||
|
DROP DATABASE db2;
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -21,22 +21,21 @@ RAISE WARNING 'warning message';
|
||||||
END $$;
|
END $$;
|
||||||
WARNING: warning message
|
WARNING: warning message
|
||||||
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
|
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
|
||||||
query | elevel | sqlcode | message
|
query | elevel | sqlcode | message
|
||||||
-----------------------------------------------------------------------------------------------+--------+---------+-----------------------------------
|
----------------------------------+--------+---------+-----------------------------------
|
||||||
ELECET * FROM unknown; | 21 | 42601 | syntax error at or near "ELECET"
|
ELECET * FROM unknown; | 20 | 42601 | syntax error at or near "ELECET"
|
||||||
SELECT * FROM unknown; | 21 | 42P01 | relation "unknown" does not exist
|
SELECT * FROM unknown; | 20 | 42P01 | relation "unknown" does not exist
|
||||||
SELECT 1/0; | 21 | 22012 | division by zero
|
SELECT 1/0; | 20 | 22012 | division by zero
|
||||||
SELECT pg_stat_monitor_reset() | 0 | |
|
SELECT pg_stat_monitor_reset() | 0 | |
|
||||||
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel | 0 | |
|
do $$ +| 0 | |
|
||||||
do $$ +| 0 | |
|
BEGIN +| | |
|
||||||
BEGIN +| | |
|
RAISE WARNING 'warning message';+| | |
|
||||||
RAISE WARNING 'warning message'; +| | |
|
END $$ | | |
|
||||||
END $$ | | |
|
do $$ +| 19 | 01000 | warning message
|
||||||
do $$ +| 19 | 01000 | warning message
|
BEGIN +| | |
|
||||||
BEGIN +| | |
|
RAISE WARNING 'warning message';+| | |
|
||||||
RAISE WARNING 'warning message'; +| | |
|
END $$; | | |
|
||||||
END $$; | | |
|
(6 rows)
|
||||||
(7 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -17,14 +17,13 @@ ERROR: duplicate key value violates unique constraint "company_pkey"
|
||||||
DETAIL: Key (id)=(1) already exists.
|
DETAIL: Key (id)=(1) already exists.
|
||||||
Drop Table if exists Company;
|
Drop Table if exists Company;
|
||||||
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
|
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
|
||||||
query | elevel | sqlcode | message
|
query | elevel | sqlcode | message
|
||||||
-----------------------------------------------------------------------------------------------+--------+---------+---------------------------------------------------------------
|
-------------------------------------------------------+--------+---------+---------------------------------------------------------------
|
||||||
Drop Table if exists Company | 0 | |
|
Drop Table if exists Company | 0 | |
|
||||||
INSERT INTO Company(ID, Name) VALUES (1, 'Percona') | 0 | |
|
INSERT INTO Company(ID, Name) VALUES (1, 'Percona') | 0 | |
|
||||||
INSERT INTO Company(ID, Name) VALUES (1, 'Percona'); | 21 | 23505 | duplicate key value violates unique constraint "company_pkey"
|
INSERT INTO Company(ID, Name) VALUES (1, 'Percona'); | 20 | 23505 | duplicate key value violates unique constraint "company_pkey"
|
||||||
SELECT pg_stat_monitor_reset() | 0 | |
|
SELECT pg_stat_monitor_reset() | 0 | |
|
||||||
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel | 0 | |
|
(4 rows)
|
||||||
(5 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -45,14 +45,13 @@ INFO: Sleep 5 seconds
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT substr(query, 0,50) as query, calls, resp_calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT substr(query, 0,50) as query, calls, resp_calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | calls | resp_calls
|
query | calls | resp_calls
|
||||||
---------------------------------------------------+-------+-----------------------
|
--------------------------------------+-------+-----------------------
|
||||||
SELECT pg_sleep(i) | 5 | {0,0,0,0,0,0,3,2,0,0}
|
SELECT pg_sleep(i) | 5 | {0,0,0,0,0,0,3,2,0,0}
|
||||||
SELECT pg_stat_monitor_reset() | 1 | {1,0,0,0,0,0,0,0,0,0}
|
SELECT pg_stat_monitor_reset() | 1 | {1,0,0,0,0,0,0,0,0,0}
|
||||||
SELECT substr(query, 0,50) as query, calls, resp_ | 1 | {1,0,0,0,0,0,0,0,0,0}
|
Set pg_stat_monitor.pgsm_track='all' | 1 | {1,0,0,0,0,0,0,0,0,0}
|
||||||
Set pg_stat_monitor.pgsm_track='all' | 1 | {1,0,0,0,0,0,0,0,0,0}
|
select run_pg_sleep(5) | 1 | {0,0,0,0,0,0,0,0,1,0}
|
||||||
select run_pg_sleep(5) | 1 | {0,0,0,0,0,0,0,0,1,0}
|
(4 rows)
|
||||||
(5 rows)
|
|
||||||
|
|
||||||
select * from generate_histogram();
|
select * from generate_histogram();
|
||||||
range | freq | bar
|
range | freq | bar
|
||||||
|
|
|
@ -37,15 +37,14 @@ SELECT * FROM foo1, foo2, foo3, foo4;
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
||||||
query | relations
|
query | relations
|
||||||
-------------------------------------------------------------------------+---------------------------------------------------
|
--------------------------------------+---------------------------------------------------
|
||||||
SELECT * FROM foo1 | {public.foo1}
|
SELECT * FROM foo1 | {public.foo1}
|
||||||
SELECT * FROM foo1, foo2 | {public.foo1,public.foo2}
|
SELECT * FROM foo1, foo2 | {public.foo1,public.foo2}
|
||||||
SELECT * FROM foo1, foo2, foo3 | {public.foo1,public.foo2,public.foo3}
|
SELECT * FROM foo1, foo2, foo3 | {public.foo1,public.foo2,public.foo3}
|
||||||
SELECT * FROM foo1, foo2, foo3, foo4 | {public.foo1,public.foo2,public.foo3,public.foo4}
|
SELECT * FROM foo1, foo2, foo3, foo4 | {public.foo1,public.foo2,public.foo3,public.foo4}
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database}
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
@ -89,15 +88,14 @@ SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4;
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
||||||
query | relations
|
query | relations
|
||||||
-------------------------------------------------------------------------+--------------------------------------------------
|
----------------------------------------------------------+-------------------------------------------
|
||||||
SELECT * FROM sch1.foo1 | {sch1.foo1}
|
SELECT * FROM sch1.foo1 | {sch1.foo1}
|
||||||
SELECT * FROM sch1.foo1, sch2.foo2 | {sch1.foo1,sch2.foo2}
|
SELECT * FROM sch1.foo1, sch2.foo2 | {sch1.foo1,sch2.foo2}
|
||||||
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3 | {sch1.foo1,sch2.foo2,sch3.foo3}
|
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3 | {sch1.foo1,sch2.foo2,sch3.foo3}
|
||||||
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4 | {sch1.foo1,sch2.foo2,sch3.foo3,sch4.foo4}
|
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4 | {sch1.foo1,sch2.foo2,sch3.foo3,sch4.foo4}
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database}
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
@ -122,13 +120,12 @@ SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2;
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query;
|
SELECT query, relations from pg_stat_monitor ORDER BY query;
|
||||||
query | relations
|
query | relations
|
||||||
-------------------------------------------------------------+--------------------------------------------------
|
------------------------------------------------+-----------------------------------------------
|
||||||
SELECT * FROM sch1.foo1, foo1 | {sch1.foo1,public.foo1}
|
SELECT * FROM sch1.foo1, foo1 | {sch1.foo1,public.foo1}
|
||||||
SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2 | {sch1.foo1,sch2.foo2,public.foo1,public.foo2}
|
SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2 | {sch1.foo1,sch2.foo2,public.foo1,public.foo2}
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query | {public.pg_stat_monitor*,pg_catalog.pg_database}
|
(3 rows)
|
||||||
(4 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
@ -168,15 +165,14 @@ SELECT * FROM v1,v2,v3,v4;
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
|
||||||
query | relations
|
query | relations
|
||||||
-------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------
|
--------------------------------+-----------------------------------------------------------------------------------------------
|
||||||
SELECT * FROM v1 | {public.v1*,public.foo1}
|
SELECT * FROM v1 | {public.v1*,public.foo1}
|
||||||
SELECT * FROM v1,v2 | {public.v1*,public.foo1,public.v2*,public.foo2}
|
SELECT * FROM v1,v2 | {public.v1*,public.foo1,public.v2*,public.foo2}
|
||||||
SELECT * FROM v1,v2,v3 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3}
|
SELECT * FROM v1,v2,v3 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3}
|
||||||
SELECT * FROM v1,v2,v3,v4 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3,public.v4*,public.foo4}
|
SELECT * FROM v1,v2,v3,v4 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3,public.v4*,public.foo4}
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database}
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -8541,15 +8541,14 @@ SELECt * FROM t2 WHERE b % 2 = 0;
|
||||||
(2500 rows)
|
(2500 rows)
|
||||||
|
|
||||||
SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | rows_retrieved
|
query | rows_retrieved
|
||||||
------------------------------------------------------------------------------+----------------
|
-----------------------------------+----------------
|
||||||
SELECT * FROM t1 | 1000
|
SELECT * FROM t1 | 1000
|
||||||
SELECT * FROM t1 LIMIT 10 | 10
|
SELECT * FROM t1 LIMIT 10 | 10
|
||||||
SELECT * FROM t2 | 5000
|
SELECT * FROM t2 | 5000
|
||||||
SELECT pg_stat_monitor_reset() | 1
|
SELECT pg_stat_monitor_reset() | 1
|
||||||
SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C" | 0
|
SELECt * FROM t2 WHERE b % 2 = 0 | 2500
|
||||||
SELECt * FROM t2 WHERE b % 2 = 0 | 2500
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -17,8 +17,7 @@ SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
--------------------------------------------------------------------------+----------------------------------------------------------
|
--------------------------------------------------------------------------+----------------------------------------------------------
|
||||||
SELECT 1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ | /* { "application", psql_app, "real_ip", 192.168.1.3) */
|
SELECT 1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ | /* { "application", psql_app, "real_ip", 192.168.1.3) */
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C" |
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -24,24 +24,23 @@ SELECT add2(1,2);
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | top_query
|
query | top_query
|
||||||
-------------------------------------------------------------------------+------------------
|
-------------------------------------------------------------+------------------
|
||||||
(select $1 + $2) | SELECT add2(1,2)
|
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS+|
|
||||||
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS +|
|
$$ +|
|
||||||
$$ +|
|
BEGIN +|
|
||||||
BEGIN +|
|
return (select $1 + $2); +|
|
||||||
return (select $1 + $2); +|
|
END; $$ language plpgsql |
|
||||||
END; $$ language plpgsql |
|
CREATE OR REPLACE function add2(int, int) RETURNS int as +|
|
||||||
CREATE OR REPLACE function add2(int, int) RETURNS int as +|
|
$$ +|
|
||||||
$$ +|
|
BEGIN +|
|
||||||
BEGIN +|
|
return add($1,$2); +|
|
||||||
return add($1,$2); +|
|
END; +|
|
||||||
END; +|
|
$$ language plpgsql |
|
||||||
$$ language plpgsql |
|
SELECT (select $1 + $2) | SELECT add2(1,2)
|
||||||
SELECT add2(1,2) |
|
SELECT add2(1,2) |
|
||||||
SELECT pg_stat_monitor_reset() |
|
SELECT pg_stat_monitor_reset() |
|
||||||
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C" |
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -26,12 +26,11 @@ SELECT * from pg_stat_monitor_settings;
|
||||||
(15 rows)
|
(15 rows)
|
||||||
|
|
||||||
select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, calls desc Limit 20;
|
select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, calls desc Limit 20;
|
||||||
datname | query | calls
|
datname | query | calls
|
||||||
----------+-----------------------------------------------------------------------------------------------------+-------
|
----------+----------------------------------------+-------
|
||||||
postgres | SELECT * from pg_stat_monitor_settings | 1
|
postgres | SELECT * from pg_stat_monitor_settings | 1
|
||||||
postgres | SELECT pg_stat_monitor_reset() | 1
|
postgres | SELECT pg_stat_monitor_reset() | 1
|
||||||
postgres | select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, c | 1
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT * from pg_stat_monitor_settings;
|
SELECT * from pg_stat_monitor_settings;
|
||||||
name | value | default_value | description | minimum | maximum | options | restart
|
name | value | default_value | description | minimum | maximum | options | restart
|
||||||
|
|
Loading…
Reference in New Issue