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
320
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
110
TRUG#69 - Make frontend development great again in Rails
aokon
0
230
TRUG#60 - Webpack 2
aokon
0
230
TRUG#54 - Z czym się je VueJS
aokon
0
200
TRUG#40 - Roda
aokon
0
190
Other Decks in Programming
See All in Programming
Gemini for developers
meteatamel
0
100
React Native × React Router v7 API通信の共通化で考えるべきこと
suguruooki
0
100
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
100
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
Fluid Templating in TYPO3 14
s2b
0
130
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
今から始めるClaude Code超入門
448jp
8
9.1k
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
Design in an AI World
tapps
0
150
From π to Pie charts
rasagy
0
130
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
470
BBQ
matthewcrist
89
10k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
230
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
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