dbSheet Logo|dbSheet Logo
サーバー・ネットワーク・PCなど環境側の設定による性能改善方法

Q. SQL ServerのシステムDB(dbsdb)が肥大化し、ディスク容量が逼迫しています。対応方法はありますか?

製品の種類
:サーバー版

【1】考えられる要因


dbSheetの日々の運用により、サーバーログとシステムDBのトランザクションログが蓄積されることが要因です。
以下の対処方法を行わずに運用を継続すると、ログ情報によってディスクが逼迫します。

【2】対処方法


システムDB(dbsdb)の肥大化には、以下の4ステップで対応します。

  • ステップ1:システムDBが使用しているディスク容量の確認
  • ステップ2:システムDBのトランザクションログファイルの縮小
  • ステップ3:サーバーログテーブルから不要なログデータの削除
  • ステップ4:サーバーログテーブルのあるデータファイルの縮小

≪ご検討いただきたいこと≫
システムDBの肥大化が解消した後は、以下の内容をご検討ください。  
なお、定期的なシステムDBのディスク容量の確認と対処をお願いいたします。

①システムDBの復旧方法
 現在の復旧モデルが「完全」の場合、「単純」に変更する。
 システムDBの復旧方法として、トランザクションログを使用しない場合は「単純」にできます。
 詳細はステップ2をご参照ください。

②サーバーログの保存期間
 保存期限を適切な一定期間としてください。
 保存期間が長い分、ディスク使用量は大きくなります。
 詳細はステップ3をご参照ください。

ステップ1:システムDBが使用しているディスク容量の確認

サーバーログとトランザクションログのディスク予約済み領域サイズ(ディスク使用量)を確認します。
上位のテーブルによるディスク使用量の確認で、サーバーログテーブル(T_USER_LOG_V6)のレコード数やディスク使用量などを確認します。

・ 蓄積されるログの種類
 ①データ更新時のログ:トランザクションログ(.ldf)に蓄積
 ②プロジェクト実行時のログ:サーバーログテーブル(T_USER_LOG_V6)に蓄積

・ 確認項目(SQL Server Management Studio を使用)
 ①システムDBのディスク使用量
 ②トランザクションログ(.ldf)の使用量
 ③サーバーログテーブル(T_USER_LOG_V6)の使用量

・確認手順
 ①SQL Server Management Studio を起動します。
 ②左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリック
 ③[レポート] → [標準レポート] → [ディスク使用量]を選択

 ※このレポートにより、システムDBのディスク使用量が確認できます。

●システムDBおよびトランザクションログ(.ldf)のディスク使用量の確認

① SQL Server Management Studioを起動します。
② 左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリックして、 [レポート] → [標準レポート] → [ディスク使用量]を選択します。

※本レポートにより、システムDBのディスク使用量が分かります。

《ディスク使用量の画面例》

※ この例では、システムDB(dbsdb)のディスク使用量が 12.48GB あります。

●トランザクションログが肥大化した場合に発生する現象
1. ディスク容量の逼迫
・他の処理やバックアップに必要な領域の圧迫
・SQL Serverが書き込み不能による、アプリケーションの停止

2. パフォーマンス低下
・ データベースのレスポンス低下

3. 復旧不能リスク
・障害時にポイントインタイムリカバリが困難になる可能性

※ポイントインタイムリカバリ
 「特定の時点にデータベースの状態を戻すための復元手法」

・サーバーログ テーブル(T_USER_LOG_V6)のディスク使用量の確認
 同様に、SQL Server Management Studio を使用して確認します。

 ①左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリック
 ②[レポート] → [標準レポート] → [上位テーブルによる使用量]を選択

 ※本レポートにより、テーブル(T_USER_LOG_V6)のディスク使用量が確認できます。

《上位テーブルのディスク使用量の画面例》

 例:T_USER_LOG_V6 のディスクの使用量は、項目名「予約済み」のサイズです。

ステップ2:システムDBのトランザクションログファイルの縮小

 サーバーログデータの削除時にもトランザクションログが出力されます。
 ディスク容量が逼迫している場合は、先にこのステップを実施してください。

 詳細は下記FAQを参照ください。
 システムDB(dbsdb)のトランザクションログ領域を縮小する手順を教えてください。 | dbSheet

ステップ3:サーバーログテーブルからの不要なログデータの削除

 サーバーログテーブル(T_USER_LOG_V6)に蓄積されたログの保管期間を一定に保ち、保管期間を過ぎたログを削除することで、ディスク使用量が極端に増えることを防げます。
 ログを削除しても、データファイルの縮小はされませんが、削除した領域は再利用されます。

 詳細は下記FAQをご参照ください。
サーバーログビューア(ServerLogViewer)のログデータ削除は、動作改善に効果がありますか? | dbSheet

ステップ4:サーバーログテーブルのあるデータファイルの縮小

 サーバーログテーブル(T_USER_LOG_V6)に蓄積されたログをある程度長い期間を指定して
 削除した場合、データファイルの縮小がより可能となります。

●データファイルの縮小
 以下のクエリでデータの再配置と末尾の再利用可能領域の解放を行います。

USE [dbsdb] 
GO 
DBCC SHRINKFILE (N'dbsdb',0,NOTRUNCATE) 
GO 
DBCC SHRINKFILE (N'dbsdb',0,TRUNCATEONLY) 
GO 

FAQの改善にご協力ください。

このページは役に立ちましたか?