プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • データベース
  • 【システム開発】チューニングの基礎知識
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【システム開発】チューニングの基礎知識

04.30

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

アプリのチューニングをする上での優先度は下記になります。

  1. テーブル構造
  2. SQL
  3. メモリ
  4. ディスクI/O
  5. OS

上に行くほど、チューニング効果は高いと言われています。

テーブル構造のチューニング

最も効果が高いチューニング手法と言われています。

多くの場合は、ポイントは「テーブルに入っているデータの件数増加」になります。テーブルのデータ件数が多いと、それだけ「検索処理」や「集計処理」に時間がかかってしまいます。

対策

  • テーブルを分割して件数を減らせないか検討する。
  • 集計結果を別テーブルに格納しておく。

対策することでの影響

テーフル構造の変更を行うと、どうしてもアプリ内のSQLの見直しを行わなければなりません。その後のテストも必要になるので、テーブル構造の見直し自体があまり現実的な手法ではないかもしれません。

SQLのチューニング

SQLチューニングも、それなりに効果が高いチューニング手法になります。

テーブル構造のチューニングに比べると、コストもかからず効果も高いので、かなり一般的に取り入れられている手法になります。

前提条件

まずは、SQLの内部処理の仕組みを理解しましょう。

内部処理に仕組みについては、下記の記事で詳しく解説しています。

【SQL】内部処理の仕組み(Oracle)

SQLチューニングの手順

SQLの内部処理の理解が終わったら、具体的にSQLチューニングを実施していきます。

手順は下記の流れになります。

  1. ボトルネックとなっているSQLの特定
  2. アプリで問題となっているSQLが発行されている機能の特定
  3. SQLチューニングの実施

ボトルネックとなっているSQLの特定

まずは、「どのSQLがボトルネックとなっているか」特定します。特に性能的に問題のないSQLに実施しても意味はないですからね。

おそらく、実際に開発をされた方であれば、この特定はすぐにできるでしょう。

アプリで問題となっているSQLが発行されている機能の特定

次に、そのSQLがアプリ内のどの機能から呼ばれているか確認します。

SQLチューニングの実施

最後に、「SQLのチューニング」を実施します。

主にやることは下記です。

  • インデックス(索引)の作成
  • SQLの修正
  • ヒント句の利用
  • バインド変数の利用

インデックス(索引)の作成

インデックスを作成するポイントについては下記の記事でも解説しています。

【データベース設計】インデックス(索引)の基本

SQLの修正

ヒント句の利用

ヒント句に関しては、下記の記事で詳しく解説しています。

【SQL】ヒント句について

バインド変数の利用

メモリ、ディスクI/O、OSのチューニング

ミドルウェアやハードウェアレベルで、チューニングできる部分がないか検討します。

DBのチューニングに比べると、コストはかかりませんが、効果が薄かったりインフラのスキルが必要だったりしますので、現場ではあまり活用はされていない印象です。

下記の記事でもハードウェアの性能検討については少し触れています。

【データベース設計】ハードウェアのサイジング(容量と性能)を決める。(物理設計)

まとめ

アプリのパフォーマンスが悪かったりして、チューニングをしたいと考えておられる場合は、できるだけ、効果が高く、短納期の「SQLチューニング」を優先的に選択されることをお勧めします。

もし、スキルがあったり、運用保守をしていてお時間があられるという方の場合は、OS、メモリ、ディスクI/O等のハードウェアのチューニングも検討されてもよいかもしれません。

「テーブル構造のチューニング」は正直、あまり現実的な選択肢ではないです。

スポンサーリンク
  • 2018 04.30
  • miyabisan2
  • コメントを書く
  • SQL, システム開発, データベース
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 04.08

    【データベース設計】テーブルを作る際の基本ルール(物理設計)

  2. 2021 10.03

    【データベース】「ORDER BY句」の仕組みについて(インデックスの有効活用)

  3. 2018 05.20

    【PL/SQL】条件分岐

  4. 2018 06.21

    【SQL】CASE式について

  5. 2018 06.22

    【SQL】「制約」の種類と使い方

  6. 2020 12.12

    【データベース】バッチ処理の排他制御

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Java】オブジェクト指向:カプセル化

【SQL】内部処理の仕組み(Oracle)

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー