お客様事例
DB開発事例
Database
某レジシステム内部DBのパフォーマンスチューニング対応
プロジェクトの背景
某小売店にてレジシステムの入れ替え時にDB移行を行ったことによりパフォーマンストラブルが発生していた。ある程度調査は実施されておりデータベースのパフォーマンスが出ていないことがシステム全体のパフォーマンスダウンに直結しているように見えるということで、そのチューニングの依頼をいただいた。
プロジェクトの体制
-
<体制1>
- DBA2名/インフラ基盤(主にAWS環境構築)2名/AP開発3名
- 期間:約1年
-
<体制2>
- 開発チーム内DBA(最大10名 全体30名)/チューニング担当2名/AWS担当2名
- 期間:約2年半
- 開発環境:SQLServer関連ツール/SQLServerDB/C#
プロジェクトの課題
- データベースがデフォルトで作成されていた為、パフォーマンス要件に耐えうる状況ではない
- 本番環境と検証環境のスペックの差が大きく、検証環境と呼べるようなテスト環境が存在しない
- インデックスが適正に設定されていない為、読取ページ数が膨大でメモリを大量に使用している
- SQLコーディングルールが存在せず、自由に記述していたことがパフォーマンストラブルの原因である
課題に対するaxiswareの取り組み
- データベースにおけるパラメータ、インデックス、SQL、物理ファイルチューニングを実施
- AWSにおいて本番環境と同様に検証環境を構築、そこでパフォーマンス検証を実施
- インデックスが設定されていないトランザクションテーブルをリスト化し、APチームと連携した上でインデックスを事後的に構築
- データベース設計/SQLコーディングについて研修資料を作成し、開発メンバーたちへ教育を実施
達成した成果
- 1時間以上待機してもリプライのなかったレポートが数秒で出力可能になった。SQLチューニングを実施し、TEMPDBのDBファイル数を増やしIO分散させることで、パフォーマンスが格段に良くなった
- パラメータ/インデックス/SQL、すべてのチューニング作業について、AWS上で検証した結果パフォーマンスアップできたエビデンスを元にリリースしたことで、リリースミスをゼロにした
- トランザクションテーブルのほとんどにインデックスを設定できたために読取ページ数も格段に減り、CPU/メモリの使用料も安定したため、DB全体が安定化した
- 開発者のコーディングスキルが向上した為、システム品質維持が可能になった