From aef31d8d9b220a868d0ca453e900a0d1973b9977 Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Fri, 9 Dec 2016 14:59:33 -0800 Subject: [PATCH] enable ragel parser for comments, add additional sql diagnostic queries --- .../comments/partials/show/_comment.html.erb | 2 +- db/scripts.sql | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/app/views/comments/partials/show/_comment.html.erb b/app/views/comments/partials/show/_comment.html.erb index 942f0c82a..395804bdd 100644 --- a/app/views/comments/partials/show/_comment.html.erb +++ b/app/views/comments/partials/show/_comment.html.erb @@ -14,7 +14,7 @@
- <%= format_text(comment.body) %> + <%= format_text(comment.body, :ragel => true) %> <% if comment.updated_at - comment.created_at > 5.minutes %>

Updated by <%= link_to_user comment.updater %> <%= time_ago_in_words_tagged(comment.updated_at) %>

diff --git a/db/scripts.sql b/db/scripts.sql index 1465c4010..809e0cf72 100644 --- a/db/scripts.sql +++ b/db/scripts.sql @@ -93,6 +93,69 @@ ORDER BY 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 SELECT relname AS name, seq_scan as count