rails-pg-extras 2.1.0 → 3.0.6
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/.circleci/config.yml +2 -1
- data/README.md +43 -2
- data/lib/rails-pg-extras/diagnose_data.rb +12 -0
- data/lib/rails-pg-extras/diagnose_print.rb +12 -0
- data/lib/rails-pg-extras/tasks/all.rake +5 -0
- data/lib/rails-pg-extras/version.rb +1 -1
- data/lib/rails-pg-extras.rb +14 -0
- data/rails-pg-extras-diagnose.png +0 -0
- data/rails-pg-extras-web.png +0 -0
- metadata +7 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e964bd79450c28fff1d34129197b25e09b5dad8a3a6a355a1370ba7de725a2e
|
|
4
|
+
data.tar.gz: bf67d3b1929cd8495fce8cc9b4f867e8367564b26c118d9147af7dfb32e58115
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d82267114ee40e3ed8d39b2d12427f101a98a9c98f0505ca6ae84a60637e98e676193ba9e21727f1989bb32b95e41ac8414ab6dd6b7084d0f3bba381a4889901
|
|
7
|
+
data.tar.gz: 32a5bdee701af1f3407a092016a36360000d459ac447e770507c6ec723de072574f52270862f22c8d129bcb055402631121b83c55b54058347e05b098080ee84
|
data/.circleci/config.yml
CHANGED
|
@@ -31,7 +31,8 @@ jobs:
|
|
|
31
31
|
- checkout
|
|
32
32
|
- run: gem update --system
|
|
33
33
|
- run: gem install bundler
|
|
34
|
-
- run: bundle
|
|
34
|
+
- run: bundle config set --local path 'vendor/bundle'
|
|
35
|
+
- run: bundle install
|
|
35
36
|
- run: sudo apt-get update --allow-releaseinfo-change
|
|
36
37
|
- run: sudo apt install postgresql-client
|
|
37
38
|
- run: dockerize -wait tcp://postgres11:5432 -timeout 1m
|
data/README.md
CHANGED
|
@@ -32,7 +32,7 @@ In your Gemfile
|
|
|
32
32
|
gem "rails-pg-extras"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
`calls` and `outliers` queries require [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html) extension.
|
|
36
36
|
|
|
37
37
|
You can check if it is enabled in your database by running:
|
|
38
38
|
|
|
@@ -45,6 +45,12 @@ You should see the similar line in the output:
|
|
|
45
45
|
| pg_stat_statements | 1.7 | 1.7 | track execution statistics of all SQL statements executed |
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
`ssl_used` requires `sslinfo` extension, and `buffercache_usage`/`buffercache_usage` queries need `pg_buffercache`. You can enable them all by running:
|
|
49
|
+
|
|
50
|
+
```ruby
|
|
51
|
+
RailsPGExtras.add_extensions
|
|
52
|
+
```
|
|
53
|
+
|
|
48
54
|
## Usage
|
|
49
55
|
|
|
50
56
|
Each command can be used as a rake task, or a directly from the Ruby code.
|
|
@@ -91,6 +97,18 @@ RailsPGExtras.long_running_queries(args: { threshold: "200 milliseconds" })
|
|
|
91
97
|
|
|
92
98
|
```
|
|
93
99
|
|
|
100
|
+
## Diagnose report
|
|
101
|
+
|
|
102
|
+
The simplest way to start using pg-extras is to execute a `diagnose` method. It runs a set of checks and prints out a report highlighting areas that may require additional investigation:
|
|
103
|
+
|
|
104
|
+
```ruby
|
|
105
|
+
RailsPGExtras.diagnose
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+

|
|
109
|
+
|
|
110
|
+
Keep reading to learn about methods that `diagnose` uses under the hood.
|
|
111
|
+
|
|
94
112
|
## Available methods
|
|
95
113
|
|
|
96
114
|
### `cache_hit`
|
|
@@ -173,6 +191,20 @@ This method displays values for selected PostgreSQL settings. You can compare th
|
|
|
173
191
|
|
|
174
192
|
[More info](https://pawelurbanek.com/postgresql-fix-performance#cache-hit)
|
|
175
193
|
|
|
194
|
+
### `ssl_used`
|
|
195
|
+
|
|
196
|
+
```ruby
|
|
197
|
+
|
|
198
|
+
RailsPGExtras.ssl_used
|
|
199
|
+
|
|
200
|
+
| ssl_is_used |
|
|
201
|
+
+---------------------------------+
|
|
202
|
+
| t |
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Returns boolean indicating if an encrypted SSL is currently used. Connecting to the database via an unencrypted connection is a critical security risk.
|
|
207
|
+
|
|
176
208
|
### `index_usage`
|
|
177
209
|
|
|
178
210
|
```ruby
|
|
@@ -384,7 +416,7 @@ This command displays the total size of each table and materialized view in the
|
|
|
384
416
|
### `unused_indexes`
|
|
385
417
|
|
|
386
418
|
```ruby
|
|
387
|
-
RailsPGExtras.unused_indexes(args: {
|
|
419
|
+
RailsPGExtras.unused_indexes(args: { max_scans: 20 })
|
|
388
420
|
|
|
389
421
|
$ rake pg_extras:unused_indexes
|
|
390
422
|
|
|
@@ -543,6 +575,14 @@ RailsPGExtras.kill_all
|
|
|
543
575
|
|
|
544
576
|
This commands kills all the currently active connections to the database. It can be useful as a last resort when your database is stuck in a deadlock.
|
|
545
577
|
|
|
578
|
+
### `pg_stat_statements_reset`
|
|
579
|
+
|
|
580
|
+
```ruby
|
|
581
|
+
RailsPGExtras.pg_stat_statements_reset
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
This command discards all statistics gathered so far by pg_stat_statements.
|
|
585
|
+
|
|
546
586
|
### `buffercache_stats`
|
|
547
587
|
|
|
548
588
|
```ruby
|
|
@@ -597,3 +637,4 @@ rake test_all
|
|
|
597
637
|
- [https://github.com/heroku/heroku-pg-extras](https://github.com/heroku/heroku-pg-extras)
|
|
598
638
|
- [https://hakibenita.com/postgresql-unused-index-size](https://hakibenita.com/postgresql-unused-index-size)
|
|
599
639
|
- [https://sites.google.com/site/itmyshare/database-tips-and-examples/postgres/useful-sqls-to-check-contents-of-postgresql-shared_buffer](https://sites.google.com/site/itmyshare/database-tips-and-examples/postgres/useful-sqls-to-check-contents-of-postgresql-shared_buffer)
|
|
640
|
+
- [https://wiki.postgresql.org/wiki/Index_Maintenance](https://wiki.postgresql.org/wiki/Index_Maintenance)
|
data/lib/rails-pg-extras.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require 'terminal-table'
|
|
4
4
|
require 'ruby-pg-extras'
|
|
5
|
+
require 'rails-pg-extras/diagnose_data'
|
|
6
|
+
require 'rails-pg-extras/diagnose_print'
|
|
5
7
|
|
|
6
8
|
module RailsPGExtras
|
|
7
9
|
QUERIES = RubyPGExtras::QUERIES
|
|
@@ -44,6 +46,18 @@ module RailsPGExtras
|
|
|
44
46
|
)
|
|
45
47
|
end
|
|
46
48
|
|
|
49
|
+
def self.diagnose(in_format: :display_table)
|
|
50
|
+
data = RailsPGExtras::DiagnoseData.call
|
|
51
|
+
|
|
52
|
+
if in_format == :display_table
|
|
53
|
+
RailsPGExtras::DiagnosePrint.call(data)
|
|
54
|
+
elsif in_format == :hash
|
|
55
|
+
data
|
|
56
|
+
else
|
|
57
|
+
raise "Invalid 'in_format' argument!"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
47
61
|
def self.connection
|
|
48
62
|
ActiveRecord::Base.connection
|
|
49
63
|
end
|
|
Binary file
|
data/rails-pg-extras-web.png
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails-pg-extras
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- pawurb
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-10-
|
|
11
|
+
date: 2021-10-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ruby-pg-extras
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 3.0.6
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 3.0.6
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: activerecord
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -83,9 +83,12 @@ files:
|
|
|
83
83
|
- Rakefile
|
|
84
84
|
- docker-compose.yml.sample
|
|
85
85
|
- lib/rails-pg-extras.rb
|
|
86
|
+
- lib/rails-pg-extras/diagnose_data.rb
|
|
87
|
+
- lib/rails-pg-extras/diagnose_print.rb
|
|
86
88
|
- lib/rails-pg-extras/railtie.rb
|
|
87
89
|
- lib/rails-pg-extras/tasks/all.rake
|
|
88
90
|
- lib/rails-pg-extras/version.rb
|
|
91
|
+
- rails-pg-extras-diagnose.png
|
|
89
92
|
- rails-pg-extras-web.png
|
|
90
93
|
- rails-pg-extras.gemspec
|
|
91
94
|
- spec/smoke_spec.rb
|