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 w...
Search
Adam Okoń
January 18, 2017
Programming
0
280
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
84
TRUG#69 - Make frontend development great again in Rails
aokon
0
200
TRUG#60 - Webpack 2
aokon
0
190
TRUG#54 - Z czym się je VueJS
aokon
0
180
TRUG#40 - Roda
aokon
0
130
Other Decks in Programming
See All in Programming
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
460
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
150
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
0
470
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
1k
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
0
230
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
50
32k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
250
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
350
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
140
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
620
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
880
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Cult of Friendly URLs
andyhume
79
6.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Being A Developer After 40
akosma
90
590k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Git: the NoSQL Database
bkeepers
PRO
430
65k
A Tale of Four Properties
chriscoyier
160
23k
Making Projects Easy
brettharned
116
6.3k
Designing Experiences People Love
moore
142
24k
How GitHub (no longer) Works
holman
314
140k
How to train your dragon (web standard)
notwaldorf
94
6.1k
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