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
220
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
54
TRUG#69 - Make frontend development great again in Rails
aokon
0
140
TRUG#60 - Webpack 2
aokon
0
130
TRUG#54 - Z czym się je VueJS
aokon
0
120
TRUG#40 - Roda
aokon
0
87
Other Decks in Programming
See All in Programming
データカタログ運用物語 〜令和6年夏の理想と現実〜
kuro_kurorrr
0
110
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
유연한 Composable 설계
l2hyunwoo
0
380
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
I/O Extended Android in Korea 2024 ~ Whats new in Android development tools
pluu
0
250
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.3k
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
AHC035解説
terryu16
0
730
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
Async Await: Mastering Python's Time-Bending Tricks - EuroPython2024
yanbo
1
290
Product Management LT会_クアンド新家
shinshin
0
300
Featured
See All Featured
What's new in Ruby 2.0
geeforr
338
31k
Become a Pro
speakerdeck
PRO
15
4.8k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
Scaling GitHub
holman
458
140k
Statistics for Hackers
jakevdp
792
220k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
Fireside Chat
paigeccino
25
2.8k
Web development in the modern age
philhawksworth
203
10k
Rails Girls Zürich Keynote
gr2m
93
13k
Documentation Writing (for coders)
carmenintech
63
4.2k
Ruby is Unlike a Banana
tanoku
96
10k
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