4.まとめ, 実行計画とは、ユーザによって発行されたクエリを実行するための手順書の事です。 Execution time:実行時間を表す, EXPLAINと、EXPLAIN ANALYZEの違いはプランナが見積もった値か、実際の実行時に発生した値かです。, 「FORMAT」オプションを付与することで、「EXPLAIN」文の出力フォーマットを変更できます。 empテーブルのデータから500件削除します。ANALYZEコマンド(SQLコマンド)で統計情報を更新すると、empテーブルに対して「Seq Scan」が選択されます。続けてempテーブルのデータに2000件追加します。統計情報を更新せずに対象SQLの実行計画を確認します。ここではデータを大量追加した直後にデータ検索要求があり、ANALYZEコマンド(SQLコマンド)による統計情報の更新が間にあわなかったことを想定しています。, 「2.2 統計情報をバックアップする」でバックアップした「Bitmap Scan」の統計情報が選択されるように、リストア機能で復元して固定します。 内側テーブルの結合キーでハッシュを作成し、ハッシュと外側テーブルの結合キーで一致する行を結合するHash Joinなどが存在します。, 【各行の説明】 6行目:ハッシュを作成し、 ・統計情報が古い場合「ANALYZE」文で最新の統計情報を取得する, 最後に デフォルトはTEXT形式となっています。, EXPLAINとSQLの間に「 (FORMAT 出力フォーマット*)」と記載することで、変更ができます。

2.実行計画の取得方法 各種インターンシップやイベントもこちらからご確認ください。, pg_hint_planでヒント句を設定して実行計画を制御するチューニング方法について解説します。, PostgreSQLでは、プランナ(オプティマイザ)が入力されたSQL文をもとに統計情報を参照して、最も速くてコストの低いと予想される方法を選択し、実行計画を作成します。しかし、必ずしもプランナ(オプティマイザ)が最適な実行計画を作成するとは限りません。例えば、大量の更新クエリ―などで統計情報の最新化が間に合わない場合や、刻々と統計情報が変化する場合に、プランナ(オプティマイザ)が作成する実行計画が不安定になることがあります。基幹系の業務システムでは、性能の向上よりも性能の安定化の方が重要であり、実行計画の変化を避けたい場合もあります。 (※実際に取得した結果の行数ではありません。) 今回のブログでは、PostgreSQLの実行計画について紹介致しました。 困った点表題のとおりなのですが、何かの条件を期に急激にパフォーマンスが劣化(100倍ほど遅くなる)ことがあります。前後でデータ数には変化がなく、関連レコードにupdateを走らせたあとに発生しやすい(気がする)といったくらいです。 環境以下環境でAPIサーバーを作成していま dvdrental=# EXPLAIN select * from address inner join city ON address.city_id=city.city_id ORDER BY city.city_id ASC; 【各行の説明】 rows:実行結果として、実際に戻ってきた行数を表す 統計情報の取得が行われるようになっているため、「ANALYZE」文での取得はほとんど必要ありません。, 実行計画の取得方法、統計情報の取得方法について説明しましたので、 行の長さ:上記同様プランナによって見積もられた、ノードの実行によって返却される行の平均の長さを表す. 5行目:address(外側)テーブルのデータを取り出しています 3行目:結合をしています INSERT文や、DELETE文などを行う際は注意が必要です。). 1行目:取得結果をソートしています, このように、複数のノードから一つの実行計画が作られているため、 PostgreSQLでは「EXPLAIN」文を使用します。 一つ目は「SQLを書くときに複数のSQLで迷った場合」です。 ユーザの思惑や、仕様上の特性などについては考慮してくれません。 3.実行計画の構造 ●実行したSQL 2.1.EXPLAIN文 7行目:city(内側)テーブルのデータを取り出しています EXPLAIN select * from address inner join city ON address.city_id=city.city_id ORDER BY city.city_id ASC; (c) 2020 Casley Consulting, Inc. All Rights Reserved. 後半の「..」の後にある「4.00」:総コスト 複雑な実行計画も、時間をかければ読むことは可能です。, 取得した実行計画の各ノードには、始動コストと総コスト、行数と行の長さが記載されています。, 始動コスト:一件目のデータを返すのにかかる想定のコストを表す このように、実行計画を見る機会はあまり多くないにせよ、 見なくてはいけないときがあるということがわかりましたでしょうか。 次の章では実行計画の取得方法について説明していきます。 2.実行計画の取得方法. 2.2.オプション(ANALYZE,FORMAT) 見なくてはいけないときがあるということがわかりましたでしょうか。. pg_dbms_stats独自の統計情報を、PostgreSQL本来の統計情報に戻す場合は、ロック解除機能を使います。 それに対し、1行目のSortは、一度すべてのデータを確認してから一件目の処理を行うため、 バックアップした統計情報(Bitmap Scan)をバックアップIDを指定してリストアするには、dbms_stats.restore_stats()関数を指定します。パラメーターにはbackup_historyテーブルのid「1」を指定します。, このように、統計情報を固定化することで、実行計画の変化を避けて安定したレスポンスを実現できます。, pg_dbms_stats独自の統計情報を、PostgreSQL本来の統計情報に戻す場合は、ロック解除機能を使います。, 固定を解除するには、dbms_stats.unlock_database_stats()関数を指定します。, VACUUM ANALYZEコマンド(SQLコマンド)を実施したあと、対象SQLの実行計画を確認します。, FUJITSU Software Enterprise Postgresでは、バージョン 9.5から、pg_dbms_statsを同梱しています。製品のインストール時にpg_dbms_statsをプリインストールしているので、追加モジュールを取得する必要はありません。, pg_dbms_statsを使うことで、間接的に実行計画を制御できますが、以下のような注意点があります。, 性能チューニングの1つの手段として、pg_dbms_statsの機能・用途を理解して、ご利用のシステムや業務要件に適した方法を選択してください。, PostgreSQLに興味をお持ちのお客様はこちらのコンテンツもお勧めです。ぜひご覧ください。, Enterprise Postgresの特長や機能、動作環境、価格などの製品情報をご案内しています。, Enterprise Postgresの全機能を無料で90日間お試し頂ける体験版がダウンロードできます。, ミッションクリティカルな機能要件にこだわるEnterprise Postgresの最新バージョン「12」を解説します。, PostgreSQLを企業利用するために必要な技術面、コミュニティー面、サポート面を解説します。, PostgreSQLを起動して本機能を利用するデータベースに対して、CREATE EXTENSIONを実施します。なお、対象のデータベースは「mydb」とします。, postgresql.confファイルのshared_preload_librariesパラメーターに「pg_dbms_stats」を追加します。, バックアップの前に、必ず一度はANALYZEコマンド(SQLコマンド)で統計情報を取得してください。統計情報が存在しない状態でバックアップやロックを実行した場合、実行計画は制御できません。, 高精度な文書翻訳をセキュアに利用 (Zinrai Translation Service), コンタクトセンターのナレッジ検索を効率化(Contact Center Knowledge Assistant), 中長期環境ビジョン『FUJITSU Climate and Energy Vision』, エクスポート機能で作成した外部ファイルから統計情報を読み込み、統計情報を固定する。, pg_dbms_statsの仕様については、オープンソース・ソフトウェアのWebページを参照してください。, pg_dbms_statsは便利な機能ですが、注意点もあります。お使いの前には必ず“, 急なレスポンス低下が許されないシステムのため、VACUUMとANALYZEの実行は自動バキュームではなく管理者が制御する。, 対象の業務テーブルは頻繁にアクセスされ、データ量の変動が大きく、ANALYZEによる統計情報の更新が間にあわないことが多い。そこで、統計情報を固定化してレスポンスを安定化させる。, (1)empテーブルの列「empno」に「emp_pkey」というインデックス(主キー)が設定されています。, (2)empテーブルの列「age」に「emp_age_index」というインデックスが設定されています。, (1)empテーブルに対して「Bitmap Scan」が選択されたことがわかります。, (1)バックアップIDは「1」です。バックアップの取得時間順に1から採番されます。, (2)統計情報が更新されていないため、empテーブルに対する推測値のaと実測値のbは大きく異なります。, (2)empテーブルに対する推測値のaと実測値のbが一致しており、統計情報が更新され、統計情報の固定化が解除されていることがわかります。. 処理コストや処理時間を確認し、低い方、短い方のSQLを選択する ●実行したSQL 結合系ノードは、複数のテーブルを結合する役割のノードです。 そういった点から、想定外の実行計画となっていないかを確認するために見る必要があります。, このように、実行計画を見る機会はあまり多くないにせよ、 rowの値がずれている場合は、統計情報が古いということになる pg_dbms_statsには以下の機能があります。, pg_dbms_statsを使い、統計情報を固定化する方法について順を追って、見ていきましょう。検証には以下のようなシステムと業務を想定しています。, なお、今回はPostgreSQL 11.1とpg_dbms_stats 1.3.11を組み合わせた環境での検証例とします。, pg_dbms_statsを利用するには、追加モジュールを公開サイトなどから取得してインストールしたあと、以下の準備が必要です。, インデックスのあるテーブルの検索処理に対して、速く安定したレスポンスが得られていたときの統計情報をバックアップします。なお、empテーブルは作成されているものとします。, ANALYZEコマンド(SQLコマンド)で統計情報を更新し、対象SQLの実行計画を確認します。, 検証した結果、実行計画に「Bitmap Scan」が選択されたときのレスポンスが速く安定していたので、この統計情報をバックアップします。ここではデータベース単位にバックアップしたいので、dbms_stats.backup_database_stats()関数を指定し、パラメーターにはコメントとして「Bitmap Scan for emp」を指定します。, 現在保存されているバックアップ情報は、dbms_stats.backup_historyテーブルで参照できます。dbms_stats.backup_historyテーブルはpg_dbms_statsの導入時に生成されるテーブルで、バックアップIDやバックアップ時のタイムスタンプなどの履歴を管理しています。統計情報のバックアップ一覧を表示し、バックアップID(列名はid)を確認します。, dbms_stats_backup_historyテーブルで情報を一覧表示したとき、「unit」には各オブジェクトの頭文字が表示されます。, 初めに、実行計画が不安定になる状況を作ってみます。 実際のデータから導き出すという点からは、問題ないのですが、

3章では取得した実行計画の構造について説明します。, 実行計画で処理を行う単位をノードと呼び、ツリー構造となっています。(図3-1 ノードのツリー構造 参照), 最下層ノードはテーブルスキャンノードで、 統計情報を取得したいテーブルの前に、「ANALYZE」と記載することで取得できます。, ただし、PostgreSQLでは、autovacuum機能による自動VACUUM時に、 ご一読いただき、ありがとうございました。, Planning time:解析されたクエリから実行計画を生成し、最適化するのに要した時間. 5行目:addressテーブルのデータを取り出しています, 次に結合系のノードについてです。 7行目:cityテーブルのデータを取り出しています 3.1.2.結合系ノード 総コスト:処理完了までにかかる想定のコストを表す このように、統計情報を固定化することで、実行計画の変化を避けて安定したレスポンスを実現できます。 2.4 統計情報の固定化を解除する. 2.3.ANALYZE文 一行目の「cost=」の後にある「0.00」:始動コスト、 3.1.1.テーブルスキャンノード 3.2.処理コストの確認方法 ・「レスポンスが遅いと感じた時」には、実行計画を決定するための統計情報が古い可能性があるため、 3.1.ノードのツリー構造について ・実行計画の取得には「EXPLAIN」文を使用する dvdrental=# EXPLAIN ANALYZE select * from actor; Planning time、Execution timeの部分が、ANALYZEオプションによって追加で表示された内容です。, actual time:処理時間を表す コロナ禍により様々なものが変わろうとしています。人の働き方やビジネスプロセス、ビジネスモデル、そして多様なステークホルダーにどのような共通価値を提供するか。, 今、ニューノーマルの時代に向けて、想像力を働かせ、ビジネス全体を“Reimagine(再構想)”することが重要です。 業種業界を問わず、この危機を乗り切ることができるよう、富士通はソリューションを提供していきます。, 富士通は強みであるAIやIoT、5G、セキュリティなどのテクノロジーと、強固な顧客基盤に支えられた業種業務ノウハウを活かして、お客様、社会が求める価値を実現するデジタルトランスフォーメーション(DX)を追求していきます。, 「働く」ということだけでなく、「仕事」と「生活」をトータルにシフトし、Well-beingを実現します。, 富士通が描く5G WORLD。ニューラルな5Gネットワークの創る4つのREALで、富士通は社会を変えていきます。, ICTインフラ全体の最適化で、デジタルトランスフォーメーション(DX)を支えるインフラを実現, オンプレミスからパブリッククラウドまで、お客様のビジネス価値最大化に向けた最適なICT環境をワンストップで提供します。, 世界に広がる富士通グループ約300社での対策と運用で得たノウハウで、情報を「守る」だけでなく「利活用」する環境を実現。お客様のデジタルトランスフォーメーション(DX)を加速します。, データ活用によりお客様とのデジタル接点を高度化。システム化に向けたコンサルティングからデータ分析、基幹システム連携、運用保守まで一気通貫で支援します。, 様々な業種・業態のお客様との取り組みのなかで得たノウハウに基づき、お客様のデジタルトランスフォーメーションをご支援します。, 昨今の人々の働き方や考え方、価値感の急激な変化に対応し、持続的な社会の実現を目指します。生活者の視点から社会に求められることを汲み取り、今まで接点がなかったモノ・コトをつなげ、生活者へ新たな価値を提供し、「Society5.0」の世界を実現します。, 最新テクノロジーとデリバリーモデルにより、ハイブリッドIT環境の全体最適化を実現するソリューション群。, お客様のビジネスに最適な、ハイブリッドIT環境の構築や運用サービスの提供により、ITシステムにおける運用負荷軽減、TCO削減、納期短縮を実現します。, 当社独自の高い技術力や幅広い業種ナレッジ、経験豊富なAI専門人材を強みに、お客様のビジネスに合わせたAI活用をご提案します。, FUJITSU Quantum-inspired Computing Digital Annealer(デジタルアニーラ), 社会の様々な分野で存在する組合せ最適化問題を瞬時に解く新しいアーキテクチャのコンピュータです。, 競技のレベルアップから新しい観戦スタイルまで、3つのソリューション「スポーツのセンシング / AI」「スポーツデジタルマーケティング」「スタジアム / アリーナソリューション」で、スポーツ業界の発展に貢献します。, 富士通のビジネスやテクノロジー、社員インタビューなどをご紹介しています。 4行目:ハッシュと外側テーブルの結合キー(city_id) ・「複数のSQLで迷った時」には、「EXPLAIN ANALYZE」で 次はプランナが実行計画を作成するうえで、参照する統計情報の取得方法について説明します。, 「ANALYZE」文とは、データの並び順や物理的な配置などの統計情報を取得するためのSQLです。

性能チューニングの1つの手段として、pg_hint_planの機能・用途を理解して、ご利用のシステムや業務要件に適した方法を選択してください。, PostgreSQLに興味をお持ちのお客様はこちらのコンテンツもお勧めです。ぜひご覧ください。, Enterprise Postgresの特長や機能、動作環境、価格などの製品情報をご案内しています。, Enterprise Postgresの全機能を無料で90日間お試し頂ける体験版がダウンロードできます。, ミッションクリティカルな機能要件にこだわるEnterprise Postgresの最新バージョン「12」を解説します。, PostgreSQLを企業利用するために必要な技術面、コミュニティー面、サポート面を解説します。, PostgreSQLを起動して本機能を利用するデータベースに対して、CREATE EXTENSIONを実施します。なお、対象のデータベースは「mydb」とします。, postgresql.confファイルのshared_preload_librariesパラメーターに「pg_hint_plan」を追加します。, ANALYZEコマンド(SQLコマンド)で統計情報を更新し、条件を指定してデータを検索します。, ヒント句を使って実行計画を変更してみます。empテーブルのインデックス「emp_age_index」を使った「Index Scan」が選択されるように、ヒント句を設定します。ヒント句は「/*+ ~ */」の形式で指定します。, 高精度な文書翻訳をセキュアに利用 (Zinrai Translation Service), コンタクトセンターのナレッジ検索を効率化(Contact Center Knowledge Assistant), 中長期環境ビジョン『FUJITSU Climate and Energy Vision』, インデックスとテーブルを交互にランダムアクセスします。WHERE句による絞り込みにより取り出す件数が少ない場合や目的のデータにピンポイントでアクセスしたい場合に有効な方法です。, インデックスから得られた候補行をメモリー上にビットマップ化し、テーブルの候補行のみ取得します。ビットマップ化したあと、スキップしながらテーブルにシーケンシャルアクセスします。取り出す件数が中程度の場合に有効な方法です。, インデックスにだけアクセスして、そのインデックスの結果データを返します。インデックスの情報だけが必要な場合に有効な方法です。, pg_hint_planの仕様については、オープンソース・ソフトウェアのWebページを参照してください。, pg_hint_planは便利な機能ですが、注意点もあります。ご利用の前には必ず「, コメントでの指定:アプリケーション内で、特殊なSQLブロックコメントの中にヒントを記述します。, テーブルでの指定:ヒント用のテーブルにヒントを登録します。アプリケーションに手を入れずにヒントを調整できます。, テーブルの問い合わせの(スキャン)方法の指定:SeqScan(テーブル),IndexScan(テーブル[ インデックス...]), 複数のテーブルの結合順序の指定:Leading(テーブル テーブル[ テーブル...]), テーブルの結合方法の指定:NestLoop(テーブル テーブル[ テーブル...]),HashJoin(テーブル テーブル[ テーブル...]), テーブルの結合結果の見積り件数補正:Rows(テーブル テーブル[ テーブル...] 件数補正), パラレルクエリ―実行の強制 / 禁止の指定:Parallel(テーブル ワーカ数 [強制度]), SQL文実行時のみのPostgreSQLパラメーターの変更:Set(GUCパラメーター値), SQL文中の同じオブジェクトに対して、別々のヒント句を指定したい場合は、各オブジェクトに別名を定義し、その別名に対してヒント句を指定してください。.

.

Xp プロダクトキー 10 5, 子供 人気キャラクター 折り紙 4, ジャニーズ 薄っぺら い 46, クリープ ハイプ 夏 曲 18, 寺内タケシ 使用 ギター 8, Mp610 スマホ 印刷 7, Nucleo I2c プルアップ 13, Xiaomi 企業 モード 21, 自動車 電気回路 基礎 5, Nec 電話機 Dt400 留守電設定 4, 辞退 欠席 違い 15, Dim Destiny2 App 6, 帯 コースター 作り方 8, 犬 眉毛 書く 6, Pdf 図面 寸法 測定 Ipad 6, 源 タレ 漬け込み 16, Ff14 プレイヤー数 2020 6, Windows10 アプリ 削除 Powershell 4, 荒野行動 乗っ取り 手口 6, Mhxx G級序盤 ヘビィ 4, 自立支援 デメリット 転職 10, Jojo Golden Wind 37 4, 日本 借金 2019 13, 天気の子 ストーリー ひどい 8, Unity カメラ 慣性 8, レジン 転写シート 100均 4, レザークラフト 床革 使い方 4, Android システム ファイル 非表示 4, Web給与明細 ログイン できない 11, Autopep8 Imported But Unused 6, ディビジョン サーバー 変更 7, Windows10 ブートメニュー F12 8, 日野市 デイ キャンプ 4, Pso2 Hp盛り 8スロ 9, ヤフオク 副業 ばれる 6, 病院 お礼 手紙 宛名 18, 韓国 チキン 名前 4, Xperia フィルム 貼り方 12, Ark バジリスク ブリーディング 20, ローゲージニット メンズ ブランド 4, インスタ ログインできない サブ垢 4, アクベシアヌス ミヤマ 販売 4, 犬 アレルギー 口の周り 赤い 9, 日本橋 アニメ Dvd 11, Youtube チャット 抽出 6, パワプロ2018 チート Vita 6, Msi Afterburner Fps 表示 43, Virtualhost _default :443 9, 剣盾 交換 Npc 15, Fit Together 意味 5, 伊藤ハム ポテトサラダ 業務用 5, ダイソー 不織布 袋 19, 出席率 計算 人数 10, デスクトップ 時間割 壁紙 5, うさぎ 最期 鳴く 6, V模擬 合格目安表 都立 12, Vba String 複数行 27, 日当たり 施工量 一覧 9, ただいま電話に出ることができません コールなし 留守電 31, Apex クエスト 難しい 37, 女子学院 渋渋 併願 10, Ipad フリック キーボード位置 12, Youtube メンバー数 確認 9, ウッド フェンス 白 塗装 5, Dell 電源ケーブル 45w 5, 顔面麻痺 スピリチュアル 意味 6,