pg_peek 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/pg_peek/application.js +25 -1
- data/app/assets/stylesheets/pg_peek/application.css +48 -2
- data/app/controllers/pg_peek/databases_controller.rb +12 -10
- data/app/controllers/pg_peek/endpoints_controller.rb +15 -3
- data/app/controllers/pg_peek/jobs_controller.rb +1 -1
- data/app/controllers/pg_peek/pg_stat_statements_controller.rb +17 -6
- data/app/controllers/pg_peek/tables_controller.rb +11 -1
- data/app/helpers/pg_peek/application_helper.rb +27 -11
- data/app/helpers/pg_peek/report_helper.rb +32 -8
- data/app/models/pg_peek/pg_stat_statements.rb +51 -4
- data/app/models/pg_peek/sql_format.rb +74 -0
- data/app/models/pg_peek/table.rb +4 -3
- data/app/queries/pg_peek/pg14/pg_stat_statements/outliers.sql +1 -1
- data/app/queries/pg_peek/pg14/pg_stat_statements/outliers_by_endpoint.sql +24 -0
- data/app/queries/pg_peek/pg14/pg_stat_statements/outliers_by_job.sql +1 -1
- data/app/queries/pg_peek/pg14/tables/dead_tuples.sql +7 -3
- data/app/queries/pg_peek/pg15/pg_stat_statements/outliers.sql +1 -1
- data/app/queries/pg_peek/pg15/pg_stat_statements/outliers_by_endpoint.sql +24 -0
- data/app/queries/pg_peek/pg15/pg_stat_statements/outliers_by_job.sql +1 -1
- data/app/queries/pg_peek/pg15/tables/dead_tuples.sql +7 -3
- data/app/queries/pg_peek/pg16/pg_stat_statements/outliers.sql +1 -1
- data/app/queries/pg_peek/pg16/pg_stat_statements/outliers_by_endpoint.sql +24 -0
- data/app/queries/pg_peek/pg16/pg_stat_statements/outliers_by_job.sql +1 -1
- data/app/queries/pg_peek/pg16/tables/dead_tuples.sql +7 -3
- data/app/queries/pg_peek/pg17/pg_stat_statements/outliers.sql +1 -1
- data/app/queries/pg_peek/pg17/pg_stat_statements/outliers_by_endpoint.sql +24 -0
- data/app/queries/pg_peek/pg17/pg_stat_statements/outliers_by_job.sql +1 -1
- data/app/queries/pg_peek/pg17/tables/dead_tuples.sql +7 -3
- data/app/queries/pg_peek/pg18/pg_stat_statements/outliers.sql +1 -1
- data/app/queries/pg_peek/pg18/pg_stat_statements/outliers_by_endpoint.sql +24 -0
- data/app/queries/pg_peek/pg18/pg_stat_statements/outliers_by_job.sql +1 -1
- data/app/queries/pg_peek/pg18/tables/dead_tuples.sql +7 -3
- data/app/reports/pg_peek/column.rb +6 -1
- data/app/reports/pg_peek/report.rb +1 -2
- data/app/reports/pg_peek/reports/endpoint_queries.rb +14 -0
- data/app/reports/pg_peek/reports/endpoints.rb +5 -8
- data/app/reports/pg_peek/reports/jobs.rb +7 -7
- data/app/reports/pg_peek/reports/queries.rb +2 -1
- data/app/views/layouts/pg_peek/application.html.erb +1 -0
- data/app/views/pg_peek/databases/show.html.erb +8 -60
- data/app/views/pg_peek/endpoints/index.html.erb +14 -1
- data/app/views/pg_peek/endpoints/show.html.erb +18 -0
- data/app/views/pg_peek/jobs/index.html.erb +1 -8
- data/app/views/pg_peek/jobs/show.html.erb +2 -1
- data/app/views/pg_peek/pg_stat_statements/show.html.erb +87 -0
- data/app/views/pg_peek/tables/index.html.erb +18 -0
- data/app/views/pg_peek/tables/show.html.erb +2 -2
- data/config/routes.rb +5 -2
- data/lib/generators/pg_peek/install/templates/initializer.rb +9 -0
- data/lib/pg_peek/configuration.rb +8 -1
- data/lib/pg_peek/version.rb +1 -1
- metadata +12 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<div class="toolbar">
|
|
2
|
+
<h1>tables</h1>
|
|
3
|
+
</div>
|
|
4
|
+
|
|
5
|
+
<input type="search"
|
|
6
|
+
placeholder="filter tables… (press / to focus)"
|
|
7
|
+
data-filter-input
|
|
8
|
+
data-filter-noun="table"
|
|
9
|
+
autofocus
|
|
10
|
+
autocomplete="off">
|
|
11
|
+
<p class="dim" data-filter-count></p>
|
|
12
|
+
|
|
13
|
+
<%= render "pg_peek/reports/report",
|
|
14
|
+
report: @tables,
|
|
15
|
+
link_column: :name,
|
|
16
|
+
link: ->(row) { database_table_path(@database, row["name"]) } %>
|
|
17
|
+
|
|
18
|
+
<p class="dim" data-filter-empty hidden>No tables match that filter.</p>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div class="toolbar">
|
|
2
|
-
<h1><%= @table.name %></h1>
|
|
3
|
-
<%= link_to "← tables",
|
|
2
|
+
<h1><code class="name"><%= @table.name %></code></h1>
|
|
3
|
+
<%= link_to "← tables", database_tables_path(@database) %>
|
|
4
4
|
</div>
|
|
5
5
|
|
|
6
6
|
<% seconds_elapsed = @table.seconds_since_reset %>
|
data/config/routes.rb
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
PgPeek::Engine.routes.draw do
|
|
2
2
|
resources :databases, only: [ :index, :show ] do
|
|
3
3
|
resources :queries, only: [ :index ]
|
|
4
|
-
resources :tables, only: [ :show ], param: :name
|
|
4
|
+
resources :tables, only: [ :index, :show ], param: :name
|
|
5
5
|
resources :endpoints, only: [ :index ]
|
|
6
|
+
# admin/posts#index lives at endpoints/admin/posts/index: the slashes of a
|
|
7
|
+
# namespace stay as they are, and no # needs encoding.
|
|
8
|
+
get "endpoints/*endpoint_controller/:endpoint_action", to: "endpoints#show", as: :endpoint, format: false
|
|
6
9
|
resources :indexes, only: [ :index ]
|
|
7
10
|
resource :activity, only: [ :show ], controller: "activity"
|
|
8
11
|
resources :jobs, only: [ :index, :show ], param: :job_class
|
|
9
12
|
|
|
10
|
-
resource :pg_stat_statements, only: [] do
|
|
13
|
+
resource :pg_stat_statements, only: [ :show ] do
|
|
11
14
|
delete :reset
|
|
12
15
|
end
|
|
13
16
|
end
|
|
@@ -29,6 +29,15 @@ Rails.application.config.pg_peek.tap do |config|
|
|
|
29
29
|
# Dead tuple ratio threshold (percentage) for warnings.
|
|
30
30
|
# config.dead_tuple_warning_threshold = 10
|
|
31
31
|
|
|
32
|
+
# Index scan counts start from zero when statistics are reset, so right
|
|
33
|
+
# after a reset every index looks unused. The overview waits this long
|
|
34
|
+
# before calling unused indexes out.
|
|
35
|
+
# config.unused_index_min_stats_age = 1.day
|
|
36
|
+
|
|
37
|
+
# Unused indexes smaller than this (in bytes) are left out of the overview;
|
|
38
|
+
# the indexes page still lists them all.
|
|
39
|
+
# config.unused_index_min_size = 1.megabyte
|
|
40
|
+
|
|
32
41
|
# A query running longer than this is called out on the overview.
|
|
33
42
|
# config.long_query_warning_seconds = 5
|
|
34
43
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "active_support/core_ext/integer/time"
|
|
2
|
+
|
|
1
3
|
module PgPeek
|
|
2
4
|
class Configuration
|
|
3
5
|
DEFAULT_EXCLUDED_TABLES = %w[schema_migrations ar_internal_metadata].freeze
|
|
@@ -6,10 +8,13 @@ module PgPeek
|
|
|
6
8
|
DEFAULT_CACHE_HIT_WARNING_THRESHOLD = 99 # percentage
|
|
7
9
|
DEFAULT_LONG_QUERY_WARNING_SECONDS = 5
|
|
8
10
|
DEFAULT_IDLE_IN_TRANSACTION_WARNING_SECONDS = 60
|
|
11
|
+
DEFAULT_UNUSED_INDEX_MIN_STATS_AGE = 1.day
|
|
12
|
+
DEFAULT_UNUSED_INDEX_MIN_SIZE = 1.megabyte
|
|
9
13
|
|
|
10
14
|
attr_accessor :connections, :excluded_tables, :dead_tuple_warning_threshold, :outliers_limit,
|
|
11
15
|
:cache_hit_warning_threshold, :long_query_warning_seconds,
|
|
12
|
-
:idle_in_transaction_warning_seconds, :
|
|
16
|
+
:idle_in_transaction_warning_seconds, :unused_index_min_stats_age,
|
|
17
|
+
:unused_index_min_size, :public_dashboard
|
|
13
18
|
attr_writer :username, :password
|
|
14
19
|
|
|
15
20
|
def initialize
|
|
@@ -20,6 +25,8 @@ module PgPeek
|
|
|
20
25
|
@cache_hit_warning_threshold = DEFAULT_CACHE_HIT_WARNING_THRESHOLD
|
|
21
26
|
@long_query_warning_seconds = DEFAULT_LONG_QUERY_WARNING_SECONDS
|
|
22
27
|
@idle_in_transaction_warning_seconds = DEFAULT_IDLE_IN_TRANSACTION_WARNING_SECONDS
|
|
28
|
+
@unused_index_min_stats_age = DEFAULT_UNUSED_INDEX_MIN_STATS_AGE
|
|
29
|
+
@unused_index_min_size = DEFAULT_UNUSED_INDEX_MIN_SIZE
|
|
23
30
|
@public_dashboard = false
|
|
24
31
|
end
|
|
25
32
|
|
data/lib/pg_peek/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pg_peek
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tomasz Mazur
|
|
@@ -69,6 +69,7 @@ files:
|
|
|
69
69
|
- app/models/pg_peek/database.rb
|
|
70
70
|
- app/models/pg_peek/pg_stat_statements.rb
|
|
71
71
|
- app/models/pg_peek/sql_comment.rb
|
|
72
|
+
- app/models/pg_peek/sql_format.rb
|
|
72
73
|
- app/models/pg_peek/table.rb
|
|
73
74
|
- app/queries/pg_peek/pg14/activity/sessions.sql
|
|
74
75
|
- app/queries/pg_peek/pg14/activity/summary.sql
|
|
@@ -78,6 +79,7 @@ files:
|
|
|
78
79
|
- app/queries/pg_peek/pg14/pg_stat_statements/endpoints.sql
|
|
79
80
|
- app/queries/pg_peek/pg14/pg_stat_statements/jobs.sql
|
|
80
81
|
- app/queries/pg_peek/pg14/pg_stat_statements/outliers.sql
|
|
82
|
+
- app/queries/pg_peek/pg14/pg_stat_statements/outliers_by_endpoint.sql
|
|
81
83
|
- app/queries/pg_peek/pg14/pg_stat_statements/outliers_by_job.sql
|
|
82
84
|
- app/queries/pg_peek/pg14/tables/dead_tuples.sql
|
|
83
85
|
- app/queries/pg_peek/pg14/tables/inline_stats.sql
|
|
@@ -90,6 +92,7 @@ files:
|
|
|
90
92
|
- app/queries/pg_peek/pg15/pg_stat_statements/endpoints.sql
|
|
91
93
|
- app/queries/pg_peek/pg15/pg_stat_statements/jobs.sql
|
|
92
94
|
- app/queries/pg_peek/pg15/pg_stat_statements/outliers.sql
|
|
95
|
+
- app/queries/pg_peek/pg15/pg_stat_statements/outliers_by_endpoint.sql
|
|
93
96
|
- app/queries/pg_peek/pg15/pg_stat_statements/outliers_by_job.sql
|
|
94
97
|
- app/queries/pg_peek/pg15/tables/dead_tuples.sql
|
|
95
98
|
- app/queries/pg_peek/pg15/tables/inline_stats.sql
|
|
@@ -102,6 +105,7 @@ files:
|
|
|
102
105
|
- app/queries/pg_peek/pg16/pg_stat_statements/endpoints.sql
|
|
103
106
|
- app/queries/pg_peek/pg16/pg_stat_statements/jobs.sql
|
|
104
107
|
- app/queries/pg_peek/pg16/pg_stat_statements/outliers.sql
|
|
108
|
+
- app/queries/pg_peek/pg16/pg_stat_statements/outliers_by_endpoint.sql
|
|
105
109
|
- app/queries/pg_peek/pg16/pg_stat_statements/outliers_by_job.sql
|
|
106
110
|
- app/queries/pg_peek/pg16/tables/dead_tuples.sql
|
|
107
111
|
- app/queries/pg_peek/pg16/tables/inline_stats.sql
|
|
@@ -114,6 +118,7 @@ files:
|
|
|
114
118
|
- app/queries/pg_peek/pg17/pg_stat_statements/endpoints.sql
|
|
115
119
|
- app/queries/pg_peek/pg17/pg_stat_statements/jobs.sql
|
|
116
120
|
- app/queries/pg_peek/pg17/pg_stat_statements/outliers.sql
|
|
121
|
+
- app/queries/pg_peek/pg17/pg_stat_statements/outliers_by_endpoint.sql
|
|
117
122
|
- app/queries/pg_peek/pg17/pg_stat_statements/outliers_by_job.sql
|
|
118
123
|
- app/queries/pg_peek/pg17/tables/dead_tuples.sql
|
|
119
124
|
- app/queries/pg_peek/pg17/tables/inline_stats.sql
|
|
@@ -126,6 +131,7 @@ files:
|
|
|
126
131
|
- app/queries/pg_peek/pg18/pg_stat_statements/endpoints.sql
|
|
127
132
|
- app/queries/pg_peek/pg18/pg_stat_statements/jobs.sql
|
|
128
133
|
- app/queries/pg_peek/pg18/pg_stat_statements/outliers.sql
|
|
134
|
+
- app/queries/pg_peek/pg18/pg_stat_statements/outliers_by_endpoint.sql
|
|
129
135
|
- app/queries/pg_peek/pg18/pg_stat_statements/outliers_by_job.sql
|
|
130
136
|
- app/queries/pg_peek/pg18/tables/dead_tuples.sql
|
|
131
137
|
- app/queries/pg_peek/pg18/tables/inline_stats.sql
|
|
@@ -134,6 +140,7 @@ files:
|
|
|
134
140
|
- app/reports/pg_peek/report.rb
|
|
135
141
|
- app/reports/pg_peek/reports/blocked.rb
|
|
136
142
|
- app/reports/pg_peek/reports/databases.rb
|
|
143
|
+
- app/reports/pg_peek/reports/endpoint_queries.rb
|
|
137
144
|
- app/reports/pg_peek/reports/endpoints.rb
|
|
138
145
|
- app/reports/pg_peek/reports/indexes.rb
|
|
139
146
|
- app/reports/pg_peek/reports/job_queries.rb
|
|
@@ -147,13 +154,16 @@ files:
|
|
|
147
154
|
- app/views/pg_peek/databases/index.html.erb
|
|
148
155
|
- app/views/pg_peek/databases/show.html.erb
|
|
149
156
|
- app/views/pg_peek/endpoints/index.html.erb
|
|
157
|
+
- app/views/pg_peek/endpoints/show.html.erb
|
|
150
158
|
- app/views/pg_peek/indexes/index.html.erb
|
|
151
159
|
- app/views/pg_peek/jobs/index.html.erb
|
|
152
160
|
- app/views/pg_peek/jobs/show.html.erb
|
|
153
161
|
- app/views/pg_peek/pg_stat_statements/_preload_instructions.html.erb
|
|
154
162
|
- app/views/pg_peek/pg_stat_statements/not_preloaded.html.erb
|
|
163
|
+
- app/views/pg_peek/pg_stat_statements/show.html.erb
|
|
155
164
|
- app/views/pg_peek/queries/index.html.erb
|
|
156
165
|
- app/views/pg_peek/reports/_report.html.erb
|
|
166
|
+
- app/views/pg_peek/tables/index.html.erb
|
|
157
167
|
- app/views/pg_peek/tables/show.html.erb
|
|
158
168
|
- config/routes.rb
|
|
159
169
|
- lib/generators/pg_peek/install/install_generator.rb
|
|
@@ -187,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
187
197
|
- !ruby/object:Gem::Version
|
|
188
198
|
version: '0'
|
|
189
199
|
requirements: []
|
|
190
|
-
rubygems_version:
|
|
200
|
+
rubygems_version: 4.0.21
|
|
191
201
|
specification_version: 4
|
|
192
202
|
summary: PostgreSQL query performance monitoring for Rails applications
|
|
193
203
|
test_files: []
|