Created
February 1, 2017 14:34
-
-
Save kmoppel/71a89b3b32cb32a4c38c7233551e4973 to your computer and use it in GitHub Desktop.
pgwatch2 - limit stat_statements.tag_query to 64K chars
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- execute in pgwatch2 database | |
delete from pgwatch2.metric where m_name = 'stat_statements'; | |
insert into pgwatch2.metric(m_name, m_pg_version_from,m_sql) | |
values ( | |
'stat_statements', | |
9.2, | |
$sql$ | |
with q_data as ( | |
select | |
(extract(epoch from now()) * 1e9)::int8 as epoch_ns, | |
queryid::text as tag_queryid, | |
max(ltrim(regexp_replace(query, E'[ \\t\\n\\r]+' , ' ', 'g')))::varchar(65535) as tag_query, | |
sum(s.calls)::int8 as calls, | |
sum(s.total_time)::double precision as total_time, | |
sum(shared_blks_hit)::int8 as shared_blks_hit, | |
sum(shared_blks_read)::int8 as shared_blks_read, | |
sum(shared_blks_written)::int8 as shared_blks_written, | |
sum(temp_blks_read)::int8 as temp_blks_read, | |
sum(temp_blks_written)::int8 as temp_blks_written, | |
sum(blk_read_time)::double precision as blk_read_time, | |
sum(blk_write_time)::double precision as blk_write_time | |
from | |
public.get_stat_statements() s | |
where | |
calls > 5 | |
and total_time > 0 | |
and dbid = (select oid from pg_database where datname = current_database()) | |
and not upper(s.query) like any (array['DEALLOCATE%', 'SET %', 'RESET %', 'BEGIN%', 'BEGIN;', | |
'COMMIT%', 'END%', 'ROLLBACK%', 'SHOW%']) | |
group by | |
queryid | |
) | |
select * from ( | |
select | |
* | |
from | |
q_data | |
where | |
total_time > 0 | |
order by | |
total_time desc | |
limit 100 | |
) a | |
union | |
select * from ( | |
select | |
* | |
from | |
q_data | |
order by | |
calls desc | |
limit 100 | |
) a | |
union | |
select * from ( | |
select | |
* | |
from | |
q_data | |
where | |
shared_blks_read > 0 | |
order by | |
shared_blks_read desc | |
limit 100 | |
) a | |
union | |
select * from ( | |
select | |
* | |
from | |
q_data | |
where | |
shared_blks_written > 0 | |
order by | |
shared_blks_written desc | |
limit 100 | |
) a | |
union | |
select * from ( | |
select | |
* | |
from | |
q_data | |
where | |
temp_blks_read > 0 | |
order by | |
temp_blks_read desc | |
limit 100 | |
) a | |
union | |
select * from ( | |
select | |
* | |
from | |
q_data | |
where | |
temp_blks_written > 0 | |
order by | |
temp_blks_written desc | |
limit 100 | |
) a; | |
$sql$ | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment