Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PostgreSQL - dlaczego moje zapytania są takie wolne?
Search
Adam Okoń
January 18, 2017
Programming
0
200
PostgreSQL - dlaczego moje zapytania są takie wolne?
Adam Okoń
January 18, 2017
Tweet
Share
More Decks by Adam Okoń
See All by Adam Okoń
Ruby on Serverless
aokon
0
39
TRUG#69 - Make frontend development great again in Rails
aokon
0
130
TRUG#60 - Webpack 2
aokon
0
120
TRUG#54 - Z czym się je VueJS
aokon
0
110
TRUG#40 - Roda
aokon
0
84
Other Decks in Programming
See All in Programming
Code Reviews
bkuhlmann
4
880
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
エンターテイメント業界で利用されるAWS
demuyan
0
200
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
290
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
3.2k
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
360
Ruby Pattern Matching
bkuhlmann
0
920
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
280
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
110
"config" ってなんだ? / What is "config"?
okashoi
0
210
puregoの活用例
aethiopicuschan
0
220
Featured
See All Featured
Pencils Down: Stop Designing & Start Developing
hursman
116
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Web development in the modern age
philhawksworth
201
10k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Why Our Code Smells
bkeepers
PRO
331
56k
We Have a Design System, Now What?
morganepeng
42
6.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
353
18k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
2k
What's new in Ruby 2.0
geeforr
336
31k
The Invisible Customer
myddelton
114
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
Transcript
PostgreSQL - Dlaczego moje zapytania są takie wolne? Adam Okoń
Elegant Code
None
None
None
Przykładowy EXPLAIN
W jaki sposób możemy poprawić wrażenia z korzystania z psql?
W jaki sposób możemy zlokalizować wolne zapytania? Jak podejść do tematu analizy i optymalizacji zapytań? Rozkład jazdy
W jaki sposób mogę poprawić wrażenia z korzystania z psql?
Pimp my psql przy pomocy .psqlrc https:/ /github.com/thoughtbot/dotfiles/blob/ master/psqlrc
pgcli https:/ /github.com/dbcli/pgcli
W jaki sposób zlokalizować wolne zapytania?
None
pg_stat_statements Wymagane: postgresql-contrib
Przykładowa konfiguracja w pliku postgresql.conf
None
SELECT (total_time / 1000 / 60) as total_minutes, (total_time/calls) as
average_time, query FROM pg_stat_statements ORDER BY 1 DESC LIMIT 100; http:/ /www.craigkerstiens.com/2013/01/10/more-on-postgres- performance/
Jak podejść do tematu analizy i optymalizacji?
Przykładowy EXPLAIN
Czy możemy wyciągnąć więcej informacji na temat zapytania przy pomocy
EXPLAIN?
None
Dla nieprzekonanych EXPLAIN z poziomu ActiveRecord https:/ /github.com/bradurani/pg-eyeballs
Analiza zapytania - counting
Analiza zapytania - filtrowanie
Analiza zapytania - sortowanie
Optymalizacja zapytania przez dodanie indeksów
Indeksy warunkowe SELECT * FROM events WHERE user_id = 1
AND active = TRUE; CREATE INDEX index_events_on_created_at ON events USING btree (user_id) WHERE active = TRUE;
https:/ /coderwall.com/p/9hxejg/advanced-rails- indexing-where-clause-postgresql Jak dodać indeks warunkowy w migracji ActiveRecord
Co możemy zrobić kiedy mamy duży zbiór danych i chcemy
dodać indeks na bazie produkcyjnej?
Jak dodać indeks współbieżnie w migracji ActiveRecord https:/ /robots.thoughtbot.com/how-to-create- postgres-indexes-concurrently-in
Zrozumieć wykorzystanie indeksów SELECT relname, 100 * idx_scan / (seq_scan
+ idx_scan) percent_of_times_index_used, n_live_tup rows_in_table FROM pg_stat_user_tables WHERE seq_scan + idx_scan > 0 ORDER BY n_live_tup DESC; http:/ /www.craigkerstiens.com/2012/10/01/understanding-postgres- performance/
Przydatne linki https:/ /www.postgresql.org/docs/current/static/using-explain.html https:/ /robots.thoughtbot.com/reading-an-explain-analyze-query-plan http:/ /www.craigkerstiens.com/2012/10/01/understanding- postgres-performance/ https:/
/devcenter.heroku.com/articles/postgresql-indexes http:/ /blog.redpanthers.co/optimising-postgresql-database-query- using-indexes/ http:/ /tatiyants.com/pev/#/plans/new https:/ /www.amazon.com/gp/product/184951030X
Dzięki! Adam Okoń (@adamokon) https:/ /github.com/aokon