Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Takhisa Hirokawa
119 views
PHPerのためのpostgresqlチューニングmini
2021/11/10開催 PHPerのための「PHP カンファレンス 2021を振り返る」PHP TechCafe で発表したPostgresqlチューニングのLTに関する資料です。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 17
2
/ 17
3
/ 17
4
/ 17
5
/ 17
6
/ 17
7
/ 17
8
/ 17
9
/ 17
10
/ 17
11
/ 17
12
/ 17
13
/ 17
14
/ 17
15
/ 17
16
/ 17
17
/ 17
More Related Content
PDF
レビューで保守性のためにした コメントをふりかえってみた
by
Takhisa Hirokawa
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
Kink: プロトタイプベースの俺々 JVM 言語
by
Taku Miyakawa
PDF
JavaのテストGroovyでいいのではないかという話
by
disc99_
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
PPTX
プログラミング勉強会 その0
by
Hirokazu Fukami
PDF
TDD のこころ @ OSH2014
by
Takuto Wada
PDF
Read Groovy Compile process(Groovy Benkyoukai 2013)
by
Uehara Junji
レビューで保守性のためにした コメントをふりかえってみた
by
Takhisa Hirokawa
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
by
Taku Miyakawa
JavaのテストGroovyでいいのではないかという話
by
disc99_
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
プログラミング勉強会 その0
by
Hirokazu Fukami
TDD のこころ @ OSH2014
by
Takuto Wada
Read Groovy Compile process(Groovy Benkyoukai 2013)
by
Uehara Junji
What's hot
PDF
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
by
Yuuki Takezawa
PDF
The History of Groovy #GroovyBase
by
kyon mm
PDF
RSpec Performance Turning
by
Go Sueyoshi (a.k.a sue445)
PDF
Groovy base gradle_20130309
by
Nobuhiro Sue
PDF
20120706-readablecode
by
Masanori Kado
PDF
TDD のこころ
by
Takuto Wada
PDF
Rdkitの紹介
by
Takayuki Serizawa
PDF
Mishimasyk6 iwatobipen
by
Takayuki Serizawa
PDF
Mishimasyk 3 20140705
by
Takayuki Serizawa
PPTX
20170527 inside .NET Core on Linux
by
Takayoshi Tanaka
PDF
Kotlinの紹介
by
豊明 尾古
PDF
Laravelのパッケージのテストに便利なパッケージ
by
Yuta Nagamiya
PDF
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
by
Uehara Junji
PDF
Rubyistのためのkotlin紹介
by
豊明 尾古
PDF
ROS2.0時代に備えたc++11/14
by
Takashi Ogura
PDF
Example of exiting legacy system
by
TakamchiTanaka
PDF
Gws 20130315 gradle_handson
by
Nobuhiro Sue
PDF
技術書へのいざない
by
Go Sueyoshi (a.k.a sue445)
PDF
Test Retrospective #kyon_kao_wedding in Tokyo
by
kyon mm
PDF
言語処理するのに Python でいいの? #PyDataTokyo
by
Shuyo Nakatani
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
by
Yuuki Takezawa
The History of Groovy #GroovyBase
by
kyon mm
RSpec Performance Turning
by
Go Sueyoshi (a.k.a sue445)
Groovy base gradle_20130309
by
Nobuhiro Sue
20120706-readablecode
by
Masanori Kado
TDD のこころ
by
Takuto Wada
Rdkitの紹介
by
Takayuki Serizawa
Mishimasyk6 iwatobipen
by
Takayuki Serizawa
Mishimasyk 3 20140705
by
Takayuki Serizawa
20170527 inside .NET Core on Linux
by
Takayoshi Tanaka
Kotlinの紹介
by
豊明 尾古
Laravelのパッケージのテストに便利なパッケージ
by
Yuta Nagamiya
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
by
Uehara Junji
Rubyistのためのkotlin紹介
by
豊明 尾古
ROS2.0時代に備えたc++11/14
by
Takashi Ogura
Example of exiting legacy system
by
TakamchiTanaka
Gws 20130315 gradle_handson
by
Nobuhiro Sue
技術書へのいざない
by
Go Sueyoshi (a.k.a sue445)
Test Retrospective #kyon_kao_wedding in Tokyo
by
kyon mm
言語処理するのに Python でいいの? #PyDataTokyo
by
Shuyo Nakatani
PHPerのためのpostgresqlチューニングmini
1.
PHPerのためのPostgresqlチューニングmini 2021/11/10 株式会社ラクスさま主催 エンジニアの勉強法ハックLT- vol.6 hiro(@etBeEP5e7dwmw7P)
2.
廣川 高久 hiro(@etBeEP5e7dwmw7P) 技術スタック Laravel,vue.js,postgresql 楽しみにしてること 12月からNetflixで始まる COWBOY
BEBOP 最近取り組んでいること ・月1回 LT発表 ・テストコード(コードカバレッジ、laravel dusk導入) ・Go
3.
アジェンダ 1. トーク[PHPerが知るべきMysqlチューニング] の紹介 2.
Postgresqlのチューニング事例 a. パーティション指定 b. 不要データ削除 c. 実行計画の調整 d. INDEXはリリースを考慮してCONCURRENTLY 3. まとめ
4.
みなさん、 PHPerカンファ2021で刺さったテーマは何でしたか?
5.
僕はこちらのトークテーマがぶっ刺さりました 1. スロークエリを改善する理由 2. 現場で起きていること 3.
スロークエリの見える化 4. SQLの分析改善手法 5. スロークエリ予防 6. SQLから見える本質
6.
今回は、僕の経験した Postgresqlチューニングの改善事例を紹介したいと思います
7.
Case1.パーティションテーブルの指定 SELECT * FROM
products WHERE name LIKE '%hoge%'; パーティショニングとは、論理的には一つの大きなテーブルであるものを、物理的により小さな 部品に分割することを指します。 Postgresqlドキュメント 5.11. テーブルのパーティショニングより products products_1 products_3 products_4 products_2 アプリケーションからは、パーティションを意識 せず参照できる 内部的には各パーティションテーブルを READ対象にしてい て、速度低下を招いていた
8.
Case1.パーティションテーブルの指定 SELECT * FROM
products_3 WHERE name LIKE '%hoge%'; products products_1 products_3 products_4 products_2 アプリケーションからも、パーティションを指定 するように変更 一例: 2.4s => 0.8ms へ短縮
9.
下はアプリケーション(Laravel)の実装イメージ
10.
バッチ処理などシステム側で生成するレコードは自動削除するバッチを作っていたが、 一部テーブルは解約者の利用したデータが残っていた Case2.不要データの削除 ビジネスサイドに確認をとった上で、解約者のデータを削除 4.9億 => 3.6億へ削減 =>コスト削減・読み取り処理の効率化
11.
Case3.実行計画の調整 EXPLAIN ANALYZE SELECT
...; => Merge JOIN SET enable_merge_join = false; SET enable_seqscan_join = false; 遅いSQLの実行計画を確認したところ、Merge JOINを用いた結合条件がボトルネックになって いることがわかった。 遅いSELECT文の実行前後にクエリプランの強制処理を実行 タイムアウトしてしまう検索が80s程度に改善!
12.
Case3.実行計画の調整 SET enable_merge_join =
false; SET enable_seqscan_join = false; SET — 実行時パラメータを変更する SETコマンドは実行時設定パラメータを変更します。 ...略 SETは現行セッションで使用される値にのみ影響することに注意してください。 リファレンス(SQLコマンド SET) 実行計画に関連する設定値一覧について リファレンス(19.7 問い合わせ計画)
13.
Case4.INDEXはリリースを考慮してCONCURRENTLY CREATE INDEX CONCURRENTLY
xxxxx 通常のインデックス作成処理では、完了するまで対象テーブルへの書き込みはロックされます リファレンス CREATE INDEXの説明より 既存テーブルにINDEXを追加する時は、ロック取得してしまうとデッドロックリスクがある。 ロックを取得しないCONCURRENTLYオプションを付与 https://www.postgresql.jp/document/12/html/sql-createindex.html
14.
まだまだありますが、 今日はここまで。。。 x LIMIT句のあるSQLは SQLを分割 WHEREの条件指定をJOIN句 の結合条件へもってくる アプリケーション側の 処理を SQLで(逆もあり) サブクエリは可能なら JOINに変更 ORDER BY id
+ 0 でINDEXを使わせ ない
15.
みなさんのスロークエリ改善事例があれば、 お話ししてもらえるとありがたいです!
16.
本日もありがとうございました 12/1(水)コードレビューLT会 でお会いしましょう!
17.
資料 画像 : いらすとや Postgresql
リファレンス(日本語) SlidesCodeHighlighter
Download