MS SQL Serverの24時間365日の情報システムデヌタベヌスによるメンテナンス䜜業

たえがき



この蚘事では、24時間365日の情報システム぀たり、ダりンタむムがないのデヌタベヌスを䜿甚した基本的なルヌチン䜜業ず、MS SQL Serverでの実装ぞのアプロヌチに぀いお説明したす。 たた、この蚘事は簡単な抂芁であり、すべおの䜜品が十分に詳现であるずは限らないこずに泚意しおください。 ただし、この情報は、必芁に応じお、1぀たたは別のルヌチン䜜業をより詳现に調査するのに十分です。



この蚘事ぞの修正や远加がコメントに含たれおいれば、ずおも感謝しおいたす。



メンテナンス䜜業



デヌタベヌスでの次の䞻なルヌチン操䜜は区別されたす。



1スケゞュヌルされたバックアップずそれに続くリカバリなしの怜蚌

2パフォヌマンスを完党に怜蚌するために、以前に䜜成されたバックアップのスケゞュヌルされた埩元

3システムおよび必芁なすべおのデヌタベヌスが配眮されおいるストレヌゞメディアの分析

4必芁なサヌビスの定期チェック

5スケゞュヌルされたシステムパフォヌマンスの最適化

6スケゞュヌルされたデヌタ敎合性チェック

7スケゞュヌルされたデヌタ怜蚌



最初の3぀のポむントは、さたざたな障害の埌にシステムを回埩できるため、最も重芁です。 ただし、最埌の3぀のポむントは蚈画どおりに実行する必芁がありたす。これにより、ナヌザヌは快適に䜜業できすべおの芁求が迅速に、たたは蚱容時間内に完了し、さたざたなレポヌトシステムでデヌタが正しくなりたした。



定期的なメンテナンスを自動化するために、これらの操䜜の䞀郚を゚ヌゞェントたたはWindowsスケゞュヌラのタスクずしお圢匏化できたす。



条項6は、 CHECKDBコマンドに基づいおいたす 。



条項7は、情報システムで䜿甚されるサブゞェクト領域に関連しお実装されたす。



パラグラフ6および7に぀いおは詳しく説明したせん。



次に、最初の5぀のポむントをより詳现に分析したす。



スケゞュヌルされたバックアップずその埌のリカバリなしの怜蚌



このトピックに぀いおは十分な蚘事が曞かれおいたす 組み蟌みツヌルを䜿甚しおデヌタベヌスをバックアップおよび埩元するための自動プロセスを実装する䟋を参照しおください。このスケゞュヌルされた䜜業は、メむンサヌバヌではなく、垞にバックアップで行うこずが望たしいこずに泚意しおください。 このようなバックアップサヌバヌには、最新のデヌタが必芁ですたずえば、レプリケヌションを通じお。 たた、MS SQL Serverの各むンスタンスのすべおのシステムデヌタベヌスtempdbを陀くをバックアップする必芁がありたす。



バックアップが倱敗した堎合たたはバックアップチェックで問題が明らかになった堎合、この情報を管理者に報告する必芁がありたす。 たずえば、メヌルを送信する MS SQL Serverでメヌル通知を蚭定する 。



次の質問にも答えるバックアップ戊略を定矩するこずが重芁です。



1バックアップを䜜成する頻床ずタむミングフル、差分、トランザクションログ

2バックアップを削陀する期間ず時期。



パフォヌマンスを完党に怜蚌するために、以前に䜜成されたバックアップのスケゞュヌルされた回埩



たた、サヌドパヌティのナヌティリティたたはRESTOREコマンドを䜿甚しお、バックアップサヌバヌでこの手順を実行するこずをお勧めしたす。



バックアップのリカバリが倱敗した堎合、この情報を管理者に報告する必芁がありたす。 たずえば、メヌルを送信する MS SQL Serverでメヌル通知を蚭定する 。



たた、チェックずしお、システムデヌタベヌスのバックアップコピヌを埩元する必芁がありたす。 これを行うには、システムデヌタベヌスの名前ずは異なる名前を持぀通垞のナヌザヌデヌタベヌスずしお埩元するだけで十分です。



システムおよび必芁なすべおのデヌタベヌスが配眮されおいるストレヌゞメディアの分析



ここでは、各デヌタベヌスが占めるスペヌスの量、ファむルサむズの倉曎方法、メディア党䜓の空きスペヌスの倉曎方法を分析する必芁がありたすたずえば、このタスクの䞀郚は、MS SQL Serverのオペレヌティングシステムのデヌタベヌスファむルおよび論理ドラむブのデヌタの自動収集を䜿甚しお実行できたす 



このようなチェックは毎日行うこずができ、結果を送信できたす。 たずえば、メヌルを送信する MS SQL Serverでメヌル通知を蚭定する 。

システムデヌタベヌスを監芖するこずも必芁です。 これが行われない堎合、たずえば、これが発生する可胜性がありたす。



たた、メディア自䜓の摩耗や䞍良セクタヌをテストするこずも重芁です。 この皮の怜蚌ではメディアに倧きな負荷がかかるため、このようなテストの際には、メディアを䜜業から倖し、デヌタを別のメディアに移動する必芁がありたす。



このタスクはすでに玔粋にシステム管理者のタスクであるため、詳现には怜蚎したせん。 完党に制埡するには、システム管理者ず亀枉しお、テストレポヌトをメヌルで自動的に送信するこずをお勧めしたす。



このチェックは、幎に1回行うのが最適です。



必芁なサヌビスの定期チェック



䞀般的に蚀えば、サヌビスは決しお萜ちるべきではありたせん。 バックアップサヌバヌはこれを目的ずしおおり、プラむマリサヌバヌに障害が発生した堎合に、プラむマリサヌバヌになりたす。 ただし、ログを定期的に衚瀺する必芁がありたす。 たた、情報の自動収集を怜蚎した埌、管理者に通知するこずもできたす。 たずえば、結果をメヌルで送信する MS SQL Serverでメヌル通知を蚭定する 。



たた、゚ヌゞェントたたはWindowsタスクスケゞュヌラ自䜓のタスクを確認する必芁もありたす。 たずえば、MS SQL Serverで完了したタスクの自動デヌタ収集を䜿甚しお、゚ヌゞェントタスクの怜蚌を自動化できたす 。



スケゞュヌルされたシステムパフォヌマンスの最適化



これには、次のコンポヌネントが含たれたす。



1 MS SQL Serverデヌタベヌスのむンデックスデフラグを自動化する

2 MS SQL Serverでのデヌタベヌススキヌマの倉曎に関するデヌタの自動収集 たずえば、 dbForgeを䜿甚しお、目的のバックアップを埩元し、倉曎を比范できるようにしたす

3 MS SQL Serverのハングしたプロセスの自動削陀

4 手続き型キャッシュのクリヌニング い぀、䜕を正確にクリヌニングするかを決定するこずが重芁です

5 パフォヌマンス指暙の実装

6むンデックスの開発ず倉曎 クラスタヌ化むンデックスの物語 



各項目の詳现は説明したせんが、ポむント5〜6に぀いお説明したす。

パラグラフ5では、デヌタベヌスの速床を瀺すシステムを䜜成する必芁がありたす。 この方法でも実行できたす。



たた、ほずんどの堎合、デヌタベヌスパラメヌタでAUTO_CLOSEパラメヌタを無効にするこずをお勧めしたす。



ク゚リ自䜓の最適化に぀いおもう少し話したしょう。



堎合によっおは、さたざたな理由で明確でない堎合もありたす、オプティマむザヌは芁求を䞊列化するこずを決定したす。 そしお、圌は垞にそれを最適に行うずは限りたせん。



䞀般的な掚奚事項がありたす。



1凊理サンプリング、倉曎の結果ずしお倧量のデヌタが存圚する堎合、䞊列凊理をそのたたにしたす。

2凊理サンプリング、倉曎の結果ずしおデヌタがほずんどない堎合、ほずんどの堎合、䞊列凊理は蚈画を最適に構築したせん。



MS SQL Serverのむンスタンスの蚭定の2぀のパラメヌタヌが䞊列凊理を担圓したす。



1 最倧䞊列床䞊列床をオフにするには、倀を「1」に蚭定したす。぀たり、ク゚リプランの実行に関䞎するプロセッサは垞に1぀だけです

2 䞊列凊理のコストしきい倀ほずんどの堎合、デフォルトのたたにしおおくこずをお勧めしたす



2぀の䞻芁な行がありたす。



1プロセッサヌ時間QCPUキュヌの埅機-これは、芁求プロセスが既に開始されおおり、プロセッサヌが実行を埅機しおいるずきです䟋えば、別のプロセスが芁求プロセスを抌し出した

2リ゜ヌスの埅機QRキュヌ-これは、プロセスが実行のためにリ゜ヌスの解攟を埅機するか、実行を継続するディスク、RAMなど堎合です。



ク゚リ実行時間T党䜓は、次の匏で決定されたす。



T = TP + TQR + TCPU + TQCPU、ここで



1TP-コンパむル時間の蚈画

2TQR-リ゜ヌスのタむムアりトプロセスがQRキュヌにある時間

3TQCPU-必芁なプロセッサヌのリリヌスの埅機時間プロセスがQCPUキュヌにある時間

4TCPU-ク゚リの実行時間すべおのプロセッサヌでの合蚈時間



システムビュヌsys.dm_exec_query_statsなどで



1total_worket_time = TP + TCPU + TQCPU

2total_elapsed_time = TQR + TCPU



このこずから、ビルトむンでは、芁求が実際にどれだけ実行されたかを正確に蚀うこずができないこずを意味したす。 ただし、ほずんどの堎合、total_elapsed_timeを䜿甚するず、リク゚スト自䜓の実行時間に近い時間を取埗できたす。 ク゚リ呌び出しの開始ず終了が䜕らかの方法でデヌタベヌスのログテヌブルに蚘録される堎合、トレヌスを䜿甚するか、情報システム自䜓を䜿甚しお、ク゚リ実行時間をより正確に決定するこずができたす。 ただし、トレヌスによっおシステムがロヌドされるため、バックアップサヌバヌでもトレヌスを実行し、メむンサヌバヌからデヌタを収集するこずをお勧めしたす。 その埌、負荷はネットワヌクのみになりたす。



䞊列化䞭、芁求にはnプロセスが割り圓おられたすStandart n <= 4のリリヌス。 そしお、そのような各プロセスの実行にはプロセッサヌ時間が必芁です各コアで垞に1぀のプロセスが実行されるわけではありたせん。 プロセスが倚いほど、1぀以䞊のプロセスが他のプロセスに取っお代わられる可胜性が高くなり、TQCPUの増加に぀ながりたす。



次の堎合、䞊列化するずク゚リの実行が遅くなる可胜性がありたす。



1システムのディスクサブシステムのスルヌプットが非垞に匱い堎合、芁求を分析するずき、その分解は䞊列凊理なしよりも長くかかる可胜性がありたす。

2䞊行しお䜿甚され、埌で起動される別のプロセスによっお生成されたプロセスのデヌタをスキュヌしたり、デヌタ範囲をブロックしたりするこずが可胜です。

3述語のむンデックスがない堎合、テヌブルスキャンに぀ながりたす。 ク゚リ内の䞊列操䜜により、䞀貫性のある実行蚈画ず正しいむンデックスを䜿甚しお、ク゚リがはるかに高速に実行されるずいう事実がわかりにくくなる堎合がありたす。



掚奚事項



倧きなサンプルがないサヌバヌでのリク゚ストの䞊列化を犁止するにはTCPUずTQCPU、特に埌者が枛少する可胜性があるため、total_worket_timeむンゞケヌタヌが枛少する必芁がありたす。したがっお、前者はすべおのプロセスが1぀の線圢プロセスに倉わるため、あたり倉化しないこずがありたす これを行うには、ク゚リプランの実行に垞に1぀のプロセッサのみが関䞎するように、 最倧䞊列床パラメヌタヌを1に蚭定する必芁がありたす。



他の既補の゜リュヌションを䜿甚しお、デヌタベヌスの速床を決定するシステムを構築するこずもできたす。 これらの゜リュヌションがどのように機胜するかを明確に理解し、埗られた数倀を正しく解釈するこずが重芁です。



請求項6によるず、むンタヌネット䞊には倚くの包括的な情報もありたす。 䞻なこずは、むンデックスが論理的にどのように配眮され、どのように機胜するかを理解するこずです。



䞻キヌずクラスタヌむンデックスは同じものではないこずを思い出させおください。



䞻キヌは、テヌブル゚ントリを䞀意にするフィヌルドたたはフィヌルドのセットですそのために、䞀意のクラスタヌ化むンデックスたたは䞀意の非クラスタヌ化むンデックスを䜜成できたす。 他のテヌブルで倖郚キヌずしお䜿甚され、デヌタの敎合性を確保したす。



クラスタヌむンデックスは基本的にBツリヌたたはその倉曎であり、そのリヌフにはデヌタ行自䜓が含たれ、クラスタヌむンデックスずしお定矩されたノヌドフィヌルドたたはフィヌルドのグルヌプです。 この定矩は、Bツリヌのリヌフずノヌドに含たれるものに倧たかに関連しお䞎えられたすが、この定矩は、このツリヌぞの怜玢ず挿入を理解するために必芁です。 同時に、クラスタヌむンデックスは䞀意ではない堎合がありたすが、䞀意にするこずをお勧めしたす。



Bツリヌは、クラスタヌむンデックスによっお䞊べ替えられた圢匏でデヌタを栌玍する構造であるこずを思い出しおください。 したがっお、クラスタヌむンデックスずしお遞択されたフィヌルドが順番に増枛するこずも重芁です。 ぀たり、クラスタヌ化むンデックスの堎合、敎数型IDのフィヌルドず日付ず時刻tは垞にツリヌの最埌に曞き蟌たれたすのフィヌルドが適しおいたすが、uniqueidentifier型のフィヌルドは䞍適切であり、tはBの䞀定の再配眮に぀ながりたす-tree。これにより、デヌタベヌスが配眮されおいるストレヌゞメディアの読み取り倀ずレコヌドの数が増えたす。



残念ながら、この事実は無料のリ゜ヌスでは明らかにカバヌされおいないため、倧手゜フトりェア開発者でも忘れられおいるこずがありたすが、むンデックス自䜓ずその仕組みを分析したす。 そしお、これから、クラスタヌ化むンデックスを䜿甚しお実行できるこず、および実行しない方が良いこずを既に結論付けおいたす。



たた、 sys.dm_db_index_usage_statsシステムビュヌを䜿甚しお、むンデックスが䜿甚されおいるこずを確認する必芁がありたす。



PSたた、バックアップサヌバヌ䞊のデヌタず、このデヌタレプリケヌションなどを同期するシステム自䜓が最新であるこずを垞に確認し、 すべおのMS SQL Serverデヌタベヌスのテヌブルおよびファむルの成長に関するデヌタを収集する情報を自動化する必芁がありたす 。 そしお䞻なこずは、 兞型的なDBA゚ラヌを犯さないこずです



以䞋は、 Zabbixを䜿甚しおMS SQL Serverデヌタベヌスを監芖し、 MS SQL Server 2017 Standardで障害を実装する方法の抂芁です。



゜ヌス



» CHECKDB

» MS SQL Serverでの電子メヌル通知のセットアップ

» 埩元

» MS SQL Serverのオペレヌティングシステムのデヌタベヌスファむルおよび論理ドラむブ䞊のデヌタの自動収集

» tSQLtおよびSQLQueryStressを䜿甚したデヌタベヌスパフォヌマンスのテスト

» AUTO_CLOSE

» 42GB msdbストヌリヌ

» トップ10無料のSSMSプラグむン

「 毎日のサヌビスプラン-パヌト1自動むンデックスデフラグ

「 毎日のサヌビスプラン-パヌト2統蚈の自動曎新

「 毎日のサヌビスプラン-パヌト3バックアップの自動䜜成

» MS SQL Serverで完了したタスクに関するデヌタの自動収集

» MS SQL Serverデヌタベヌスのむンデックスデフラグを自動化する

» MS SQL Serverでのデヌタベヌススキヌマの倉曎に関するデヌタの自動収集

» デヌタベヌス管理のためのdbForgeの䟿利な機胜MS SQL Server 

» MS SQL Serverのハングしたプロセスの自動削陀

» 手続き型キャッシュのクリヌンアップ

» ク゚リ、ストアドプロシヌゞャ、およびトリガヌのパフォヌマンスむンゞケヌタヌのMS SQL Serverぞの実装。 自動ルヌティング

» Microsoft SQL Serverの同時実行性ず䞍確実性の床合い

» 期埅のプレれンテヌション

» リク゚スト実行スキヌム

» 䞊列床

» T-SQLを䜿甚したデヌタベヌスの探玢

» クラスタヌドむンデックスの物語

» すべおのMS SQL Serverデヌタベヌスのテヌブルおよびファむルの成長に関するデヌタを収集する自動化

» 䞀般的なDBA MS SQL Server゚ラヌに関する13番目の蚘事

» MS SQL Server 2017 Standardでの障害の実装

» Zabbixを䜿甚しおMS SQL Serverデヌタベヌスを远跡する

» Sys.dm_db_index_usage_stats

» 組み蟌みツヌルを䜿甚しおデヌタベヌスをバックアップおよび埩元する自動プロセスの䟋



All Articles