enable ragel parser for comments, add additional sql diagnostic queries
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="body prose">
|
<div class="body prose">
|
||||||
<%= format_text(comment.body) %>
|
<%= format_text(comment.body, :ragel => true) %>
|
||||||
|
|
||||||
<% if comment.updated_at - comment.created_at > 5.minutes %>
|
<% if comment.updated_at - comment.created_at > 5.minutes %>
|
||||||
<p class="info">Updated by <%= link_to_user comment.updater %> <%= time_ago_in_words_tagged(comment.updated_at) %></p>
|
<p class="info">Updated by <%= link_to_user comment.updater %> <%= time_ago_in_words_tagged(comment.updated_at) %></p>
|
||||||
|
|||||||
@@ -93,6 +93,69 @@ ORDER BY
|
|||||||
n_live_tup DESC;
|
n_live_tup DESC;
|
||||||
|
|
||||||
|
|
||||||
|
-- index size/usage
|
||||||
|
SELECT
|
||||||
|
t.tablename,
|
||||||
|
indexname,
|
||||||
|
c.reltuples AS num_rows,
|
||||||
|
pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
|
||||||
|
pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
|
||||||
|
CASE WHEN indisunique THEN 'Y'
|
||||||
|
ELSE 'N'
|
||||||
|
END AS UNIQUE,
|
||||||
|
idx_scan AS number_of_scans,
|
||||||
|
idx_tup_read AS tuples_read,
|
||||||
|
idx_tup_fetch AS tuples_fetched
|
||||||
|
FROM pg_tables t
|
||||||
|
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
|
||||||
|
LEFT OUTER JOIN
|
||||||
|
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
|
||||||
|
JOIN pg_class c ON c.oid = x.indrelid
|
||||||
|
JOIN pg_class ipg ON ipg.oid = x.indexrelid
|
||||||
|
JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
|
||||||
|
AS foo
|
||||||
|
ON t.tablename = foo.ctablename
|
||||||
|
WHERE t.schemaname='public'
|
||||||
|
ORDER BY 1,2;
|
||||||
|
|
||||||
|
|
||||||
|
-- index summary
|
||||||
|
SELECT
|
||||||
|
pg_class.relname,
|
||||||
|
pg_size_pretty(pg_class.reltuples::BIGINT) AS rows_in_bytes,
|
||||||
|
pg_class.reltuples AS num_rows,
|
||||||
|
COUNT(indexname) AS number_of_indexes,
|
||||||
|
CASE WHEN x.is_unique = 1 THEN 'Y'
|
||||||
|
ELSE 'N'
|
||||||
|
END AS UNIQUE,
|
||||||
|
SUM(CASE WHEN number_of_columns = 1 THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END) AS single_column,
|
||||||
|
SUM(CASE WHEN number_of_columns IS NULL THEN 0
|
||||||
|
WHEN number_of_columns = 1 THEN 0
|
||||||
|
ELSE 1
|
||||||
|
END) AS multi_column
|
||||||
|
FROM pg_namespace
|
||||||
|
LEFT OUTER JOIN pg_class ON pg_namespace.oid = pg_class.relnamespace
|
||||||
|
LEFT OUTER JOIN
|
||||||
|
(SELECT indrelid,
|
||||||
|
MAX(CAST(indisunique AS INTEGER)) AS is_unique
|
||||||
|
FROM pg_index
|
||||||
|
GROUP BY indrelid) x
|
||||||
|
ON pg_class.oid = x.indrelid
|
||||||
|
LEFT OUTER JOIN
|
||||||
|
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns FROM pg_index x
|
||||||
|
JOIN pg_class c ON c.oid = x.indrelid
|
||||||
|
JOIN pg_class ipg ON ipg.oid = x.indexrelid )
|
||||||
|
AS foo
|
||||||
|
ON pg_class.relname = foo.ctablename
|
||||||
|
WHERE
|
||||||
|
pg_namespace.nspname='public'
|
||||||
|
AND pg_class.relkind = 'r'
|
||||||
|
GROUP BY pg_class.relname, pg_class.reltuples, x.is_unique
|
||||||
|
ORDER BY 2;
|
||||||
|
|
||||||
|
|
||||||
-- sequential scans
|
-- sequential scans
|
||||||
SELECT relname AS name,
|
SELECT relname AS name,
|
||||||
seq_scan as count
|
seq_scan as count
|
||||||
|
|||||||
Reference in New Issue
Block a user