pghero 3.4.0 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be29c474a85a6d881dba5ab5a3b8ae273d62553fac0eeeef6c7a08f2087a4da1
4
- data.tar.gz: a8637f122ec9946fb217bf6d7ab63b9aff2160de28c05bf054a25ce7d874c53c
3
+ metadata.gz: fe3a00850cccac8c36536d08a519790103053c9b058d61754f834c44cfb0d4eb
4
+ data.tar.gz: e7ae77f4353d7f27ca04f1a59aae6cf785f8e0dddac2f276e6a0973b4beb60e7
5
5
  SHA512:
6
- metadata.gz: ca6814ef570346653fa61963853839faeaa7c5a1c54224641cf709c303cc4b438e081b6b800eeb38c2167cba373c9734d1645ca7dcd7429b3c925b4420d83f31
7
- data.tar.gz: c43a0efe62ab9be1b894335719294ed6328201c01645293ef4ca7c93ad9b0081486720d3229139f485ae7dc87ebc236b1a5391294c8f1c7c46114d58d847bb3d
6
+ metadata.gz: 89d0bc08fd97968e725fea80a23d70835853acbe74648a052299b62a5e343820b36f0a76ecb3cb207d1443b47fc5d43154b40a7a0e39be518719f2c3ef589398
7
+ data.tar.gz: df4e987d43c13dd0d3866feefc4cfe2cf5b84c8519fb854d54e169f42ab0909b07890893498dd2e30635e36645630647db9451b2c32de737c345ac52b6ed3205
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 3.4.1 (2024-02-07)
2
+
3
+ - Added current stats to query details page
4
+ - Improved tune page for latest PgTune
5
+
1
6
  ## 3.4.0 (2023-11-28)
2
7
 
3
8
  - Added support for explaining normalized queries with Postgres 16
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2023 Andrew Kane, 2008-2014 Heroku (initial queries)
1
+ Copyright (c) 2014-2024 Andrew Kane, 2008-2014 Heroku (initial queries)
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -8,7 +8,7 @@ A performance dashboard for Postgres
8
8
 
9
9
  :tangerine: Battle-tested at [Instacart](https://www.instacart.com/opensource)
10
10
 
11
- [![Build Status](https://github.com/ankane/pghero/workflows/build/badge.svg?branch=master)](https://github.com/ankane/pghero/actions)
11
+ [![Build Status](https://github.com/ankane/pghero/actions/workflows/build.yml/badge.svg)](https://github.com/ankane/pghero/actions)
12
12
 
13
13
  ## Documentation
14
14
 
@@ -186,7 +186,7 @@ module PgHero
186
186
  @explainable_query = stats[:explainable_query]
187
187
 
188
188
  if @show_details
189
- query_hash_stats = @database.query_hash_stats(@query_hash, user: @user)
189
+ query_hash_stats = @database.query_hash_stats(@query_hash, user: @user, current: true)
190
190
 
191
191
  @chart_data = [{name: "Value", data: query_hash_stats.map { |r| [r[:captured_at].change(sec: 0), (r[:total_minutes] * 60 * 1000).round] }, library: chart_library_options}]
192
192
  @chart2_data = [{name: "Value", data: query_hash_stats.map { |r| [r[:captured_at].change(sec: 0), r[:average_time].round(1)] }, library: chart_library_options}]
@@ -172,11 +172,10 @@ module PgHero
172
172
  query_stats.select { |q| q[:calls].to_i >= slow_query_calls.to_i && q[:average_time].to_f >= slow_query_ms.to_f }
173
173
  end
174
174
 
175
- # TODO option to include current period
176
- def query_hash_stats(query_hash, user: nil)
175
+ def query_hash_stats(query_hash, user: nil, current: false)
177
176
  if historical_query_stats_enabled? && supports_query_hash?
178
177
  start_at = 24.hours.ago
179
- select_all_stats <<~SQL
178
+ stats = select_all_stats <<~SQL
180
179
  SELECT
181
180
  captured_at,
182
181
  total_time / 1000 / 60 AS total_minutes,
@@ -193,6 +192,15 @@ module PgHero
193
192
  ORDER BY
194
193
  1 ASC
195
194
  SQL
195
+ if current
196
+ captured_at = Time.current
197
+ current_stats = current_query_stats(query_hash: query_hash, user: user, origin: true)
198
+ current_stats.each do |r|
199
+ r[:captured_at] = captured_at
200
+ end
201
+ stats += current_stats
202
+ end
203
+ stats
196
204
  else
197
205
  raise NotEnabled, "Query hash stats not enabled"
198
206
  end
@@ -201,7 +209,7 @@ module PgHero
201
209
  private
202
210
 
203
211
  # http://www.craigkerstiens.com/2013/01/10/more-on-postgres-performance/
204
- def current_query_stats(limit: nil, sort: nil, database: nil, query_hash: nil)
212
+ def current_query_stats(limit: nil, sort: nil, database: nil, query_hash: nil, user: nil, origin: false)
205
213
  if query_stats_enabled?
206
214
  limit ||= 100
207
215
  sort ||= "total_minutes"
@@ -225,10 +233,12 @@ module PgHero
225
233
  calls > 0 AND
226
234
  pg_database.datname = #{database ? quote(database) : "current_database()"}
227
235
  #{query_hash ? "AND queryid = #{quote(query_hash)}" : nil}
236
+ #{user ? "AND rolname = #{quote(user)}" : nil}
228
237
  )
229
238
  SELECT
230
239
  query,
231
240
  query AS explainable_query,
241
+ #{origin ? "(SELECT regexp_matches(query, '.*/\\*(.+?)\\*/'))[1] AS origin," : nil}
232
242
  query_hash,
233
243
  query_stats.user,
234
244
  total_minutes,
@@ -3,7 +3,14 @@ module PgHero
3
3
  module Settings
4
4
  def settings
5
5
  names =
6
- if server_version_num >= 90500
6
+ if server_version_num >= 100000
7
+ %i(
8
+ max_connections shared_buffers effective_cache_size maintenance_work_mem
9
+ checkpoint_completion_target wal_buffers default_statistics_target
10
+ random_page_cost effective_io_concurrency work_mem huge_pages
11
+ min_wal_size max_wal_size
12
+ )
13
+ elsif server_version_num >= 90500
7
14
  %i(
8
15
  max_connections shared_buffers effective_cache_size work_mem
9
16
  maintenance_work_mem min_wal_size max_wal_size checkpoint_completion_target
@@ -1,3 +1,3 @@
1
1
  module PgHero
2
- VERSION = "3.4.0"
2
+ VERSION = "3.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pghero
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-28 00:00:00.000000000 Z
11
+ date: 2024-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  requirements: []
127
- rubygems_version: 3.4.10
127
+ rubygems_version: 3.5.3
128
128
  signing_key:
129
129
  specification_version: 4
130
130
  summary: A performance dashboard for Postgres