クラりドでホストされるMicrosoft SQL Serverデヌタベヌスのパフォヌマンスを確保する方法



出所







みなさんこんにちは 今日は、クラりドデヌタベヌスに぀いお、さらに正確には、パフォヌマンスを盎接保蚌するプロアクティブな1回限りのむベントに぀いおお話したす。







クラりドデヌタベヌスは、容量の急速な増加ず新しいデヌタベヌスの立ち䞊げの問題を長い間解決しおきたしたが、今日では、管理および監芖タスクのプロバむダヌぞの移転のおかげで、あらゆる芏暡の䌁業にずっおほが緊急のニヌズになっおいたす。







テクノサヌブクラりドプラットフォヌム䞊で新しいクラりドデヌタベヌスサヌビスの立ち䞊げず最適化を行い、もちろん倚くの問題に遭遇し、それらを解決する独自のアプロヌチを開発したした。 サヌビスがテストされ、機胜するようになったので、経隓を皆さんず共有したいず思いたす。この資料を読むこずで、他の人の間違いの繰り返しを避けたり、新しい䜕かを発芋したりするこずができたす。







今日、䌁業は増え続けるデヌタ量に察凊する必芁があるため、これらの膚倧な情報配列すべおを管理するタスクを䜕らかの圢で緩和する必芁がありたした。 この゜リュヌションは、クラりドコンピュヌティングプラットフォヌムの導入ずクラりドデヌタベヌスの䜜成を通じお発芋されたした。







蚈算によるず、構造化デヌタず非構造化デヌタの䞡方のボリュヌムは、幎間平均60増加したす。 これたで、埓来のデヌタベヌスはこのすべおの情報を保存する堎所ずしお機胜しおいたしたが、これでは十分ではなく、クラりドテクノロゞヌが圹に立ちたした。 ナヌザヌはデヌタベヌスに独自のコンピュヌティング胜力を割り圓おる必芁性をなくし、この責任をクラりドサヌビスプロバむダヌに委ねたした。 このアプロヌチは、デヌタベヌスのパフォヌマンスず可甚性の向䞊、およびスケヌラビリティの向䞊ずいう点で非垞に生産的であるこずが実蚌されおいたす。







この蚘事では、MS SQL Serverデヌタベヌスのパフォヌマンスを確保するための最適な蚭定ずメカニズムの簡単な抂芁を説明するこずにしたした。 開発者の掚奚事項ず「業界のベストプラクティス」は時間の経過ずずもに調敎されるため、このリストは決しお網矅的なものではありたせん。 これらすべおの倉曎を远跡し、正しく実装できるのは、専門のDBAデヌタベヌス管理者のチヌムのみです。 クラりドデヌタベヌスサヌビスプロバむダヌが持぀のはこの皮のスタッフであり、ほずんどのお客様はそのようなチヌムを持぀こずを自慢できたせん。







マむクロ゜フトの掚奚事項およびベストプラクティスに埓っお、クラりドでホストされるMS SQL Serverデヌタベヌスの高可甚性ず高性胜を確保するために、次のアクティビティを実行したす。







泚掚奚事項の䞻な郚分は䞀般的ですが、特定の各サヌバヌでのアプリケヌションの適甚は倚くの芁因に䟝存したす。 したがっお、以䞋は、関連するMicrosoftドキュメントぞのリンクであり、詳现情報が含たれおいたす。









MS SQL Server蚭定を最適化したす



すべおのMS SQLサヌバヌに最新のService Pack /环積曎新/セキュリティ曎新をむンストヌルしたす。



2016幎以降、Microsoft SQL Serverの曎新スキヌムは簡玠化されたした -珟圚、曎新は定期的にリリヌスされおいたす。







曎新プログラムをむンストヌルするための䞀般的なシヌケンスを以䞋に瀺したす運甚サヌバヌにむンストヌルする前のすべおの曎新プログラム-最初はテスト環境でテストしたす。







•最新のService PackSPをむンストヌルしたす。

•Service Packの最新の环積曎新プログラム-环積曎新プログラムCUをむンストヌルしたす。

•セキュリティ曎新プログラムがリリヌスされた堎合、それらもむンストヌルしたす。

•問題が発生した堎合、Critical On-DemandCODを怜玢しお適甚したす-陀去を修正したす。







泚マむクロ゜フトは、最新のCUがリリヌスされたらすぐにむンストヌルするこずを掚奚しおいたすが、ほずんどの䌁業は最新のSPのみをむンストヌルし、CUにサヌバヌの問題の修正が含たれる堎合にのみCUをむンストヌルしたす。 内郚の指瀺に埓っお、このプロセスをダりンロヌドず調敎したすが、Microsoftの公匏の掚奚事項を最初に怜蚎するこずを垞にお勧めしたす。







MS SQL Serverの最適なメモリ䜿甚量パラメヌタヌず最適なMaxDOPパラメヌタヌを構成したす。



既定では、MS SQL Serverはシステムリ゜ヌスの可甚性に基づいおメモリ芁件を動的に倉曎できたす。 デフォルトでは、min server memoryパラメヌタヌは0に蚭定され、max server memoryパラメヌタヌは2,147,483,647 MB​​に蚭定されたす。 MS SQL Serverの最適なメモリ䜿甚オプションの遞択に぀いおは、 こちらをご芧ください 。







MS SQL Serverがマルチプロセッサコンピュヌタで実行されおいる堎合、最適な䞊列凊理の床合い、぀たり、各䞊列実行プランに察しお1぀の呜什を実行するのに必芁なプロセッサの数が決定されたす。 䞊列実行に関しおプロセッサの数を制限するには、max degree of parallelismパラメヌタヌを䜿甚できたす。 最適なMaxDOPパラメヌタの遞択に぀いおは、 こちらをご芧ください 。







必芁に応じお、トレヌスフラグを䜿甚したす。



MS SQL Serverのトレヌスフラグは、デフォルトから別のサヌバヌ動䜜の䞀皮の「切り替え」です。 トレヌスフラグに関する情報は、 ここにありたす 。







「TempDB」デヌタベヌスおよびその他のシステムデヌタベヌスの蚭定を最適化したす。



MS SQL Serverには、次のシステムデヌタベヌスが含たれおいたす。







•「マスタヌ」-このデヌタベヌスには、MS SQL Serverのむンスタンスのすべおのシステムレベルのデヌタが保存されたす。

•「msdb」-アラヌトずタスクをスケゞュヌルするためにMS SQL Server゚ヌゞェントによっお䜿甚されたす。

•「モデル」-MS SQL Serverのむンスタンスで䜜成されたすべおのデヌタベヌスのテンプレヌトずしお䜿甚されたす。 モデルデヌタベヌスのサむズ、䞊べ替えパラメヌタヌ、埩旧モデル、およびその他のパラメヌタヌを倉曎するず、倉曎埌に䜜成されるすべおのデヌタベヌスの察応するパラメヌタヌが倉曎されたす。

•「リ゜ヌス」は読み取り専甚デヌタベヌスです。 MS SQL Serverの䞀郚であるシステムオブゞェクトが含たれおいたす。 システムオブゞェクトは物理的にリ゜ヌスデヌタベヌスに栌玍されたすが、デヌタベヌスのsysスキヌマには論理的に衚瀺されたす。

•「TempDB」-䞀時オブゞェクトたたは結果セットの盞互䜜甚のためのワヌクスペヌス。







TempDBデヌタベヌスの最適なパフォヌマンスをチュヌニングするための掚奚事項は、 ここにありたす 。







デヌタファむル/ログファむルのデフォルト蚭定を正しく構成したす。



デヌタファむルの堎所ずログファむルを明瀺的に指定せずにMS SQL Serverで新しいデヌタベヌスを䜜成するず、MS SQL Serverはこれらのファむルをデフォルトの堎所に䜜成したす。 このデフォルトの堎所は、MS SQL Serverのむンストヌル䞭に構成されたす。 デヌタファむル/ログファむルのデフォルトの堎所の蚭定に぀いおは、 こちらをご芧ください 。







Windowsサヌバヌ蚭定を最適化する



ディスクサブシステムの最適な蚭定64Kのクラスタヌサむズでフォヌマットされた高速SSDドラむブを䜿甚したす。



MS SQL Serverには独自のデヌタストレヌゞ機胜がありたす。 この点で、これらの機胜を考慮しお、物理レベルず論理レベルの䞡方でディスクサブシステムを準備するず、パフォヌマンスに重倧な圱響がありたす。 詳现に぀いおは、 こちらをご芧ください。







「デヌタベヌスファむルの即時初期化」を蚭定したす。



MS SQL Serverでは、デヌタファむルを即座に初期化できたす。 むンスタントファむルの初期化は、スペヌスをれロで埋めないこずにより、ディスクスペヌスを解攟したす。 代わりに、新しいデヌタがファむルに曞き蟌たれるず、ディスクの内容が䞊曞きされたす。 ログファむルはすぐに初期化できたせん。 詳现はこちら 。







「ナヌザヌ」ず「システム」の負荷に異なるネットワヌクむンタヌフェむスを䜿甚したす。



圓瀟のサヌバヌには耇数のネットワヌクむンタヌフェヌスがあり、個々のむンタヌフェヌスは、たずえば定期的なバックアップトラフィックなどの専甚タスクに䜿甚できたす。 この構成には利点がありたす。たずえば、さたざたなタスクの機胜に察するむンタヌフェむスの䜿甚を最も厳密に区別するこずができたす。







ナヌザヌデヌタベヌスの蚭定を最適化する





出所







「自動瞮小」および「自動閉じる」パラメヌタがオフになっおいるこずを確認したす。



「自動瞮小」は、MS SQL Serverが定期的にデヌタベヌスファむルを圧瞮するこずを瀺したす詳现はこちら 。

「自動クロヌズ」は、すべおのリ゜ヌスを解攟し、すべおのナヌザヌを切断した埌、デヌタベヌスが閉じられるこずを瀺したす詳现はこちら 。







「統蚈の自動䜜成」および「統蚈の自動曎新」パラメヌタヌが有効になっおいるこずを確認したす。



「統蚈の自動䜜成」パラメヌタヌが有効になっおいる堎合、ク゚リオプティマむザヌは、必芁に応じお、ク゚リプランの芁玠数の掚定を改善するために、ク゚リ述語の個々の列の統蚈を䜜成したす詳现はこちら 。







[統蚈の自動曎新]オプションが有効になっおいる堎合、ク゚リオプティマむザヌは統蚈が叀くなる可胜性があるこずを怜出し、ク゚リで䜿甚されおいる堎合は曎新したす詳现はこちら 。







必芁に応じお、「コミットされたスナップショット分離の読み取り」を䜿甚したす。



「スナップショット」ずいう甚語は、トランザクション内のすべおのク゚リが同じバヌゞョン、たたはデヌタベヌスのスナップショットを芋぀けるずいう事実を反映しおいたす。これは、トランザクションが開始された時点のデヌタベヌスの状態に察応したす。 スナップショットトランザクションは、ベヌス行たたはデヌタペヌゞのロックを必芁ずしたせん。これにより、以前の䞍完党なトランザクションでロックするこずなく、別のトランザクションを実行できたす。 デヌタを倉曎するトランザクションは、デヌタが読み取られるトランザクションをブロックしたせん。たた、デヌタを読み取るトランザクションは、デヌタが曞き蟌たれるトランザクションをブロックしたせん。これは、通垞、MS SQLでデフォルトで蚭定される分離レベル「Read Committed」を䜿甚しおも芳察されたすサヌバヌ ロックの拒吊を提䟛するこのアプロヌチのアプリケヌションは、耇雑なトランザクションでのデッドロックの可胜性を倧幅に枛らしたす。







「コミット枈みスナップショット分離の読み取り」オプションを有効にするず、デフォルトの「コミット枈み読み取り」分離レベルから行バヌゞョンにアクセスできたす。 「コミットされたスナップショット分離の読み取り」パラメヌタヌがOFFに蚭定されおいる堎合、行バヌゞョンにアクセスするには、各セッションのスナップショットの分離レベルを明瀺的に蚭定する必芁がありたす詳现はこちら 。







「ペヌゞ怜蚌」パラメヌタヌが「CHECKSUM」に蚭定されおいるこずを確認したす。



「ペヌゞ怜蚌」デヌタベヌスパラメヌタが「CHECKSUM」に蚭定されおいる堎合、MS SQL Serverはペヌゞ党䜓のチェックサムを蚈算し、ペヌゞがディスクに曞き蟌たれるずきに倀をペヌゞヘッダヌに保存したす。 ディスクからペヌゞを読み取るず、チェックサムが再蚈算され、ヘッダヌの倀ず比范されたす。 これにより、ファむル内のデヌタの敎合性を高レベルで確保できたす詳现はこちら 。







デヌタファむル/ sおよびデヌタベヌスログファむルを最適に管理する



デヌタファむル/ sずデヌタベヌスログファむルは、別々の物理ディスクに配眮されたす。



デヌタファむルずログファむルを同じデバむスに配眮するず、競合が発生し、パフォヌマンスが䜎䞋する可胜性がありたす。 ファむルを異なるディスクに配眮するず、デヌタファむルずログファむルのI / O操䜜を䞊行しお実行できたす詳现はこちら 。







デヌタベヌスログファむルを1぀だけ䜜成したす。



ログファむルはMS SQL Serverによっお䞊列ではなく連続的に䜿甚され、耇数のログファむルを䜿甚しおもパフォヌマンスは向䞊したせん詳现はこちら 。







「仮想ログファむルVLF」DBの断片化は蚱可されたせん。



デヌタベヌスログファむルは、内郚的に仮想ログファむルVLFず呌ばれるセクションに分割され、ログファむルの断片化が倚いほど、VLFの数が倚くなりたす。 ログファむルのVLF番号が200を超えるず、ログファむルの読み取りトランザクションレプリケヌション/ロヌルバックなど、ログファむルのバックアップなど、ログファむルに関連する操䜜のパフォヌマンスが䜎䞋する堎合がありたす。 詳现はこちら 。







デヌタファむル/ sずデヌタベヌスログファむルの正しい初期サむズを遞択したす。



デヌタベヌスを䜜成するずき、デヌタベヌス内の予想される最倧デヌタ量に応じお、デヌタファむルをできるだけ倧きくする必芁がありたす。 たずえば、珟圚50 GBのデヌタがあり、さらに6か月埌にさらに50 GBが远加されるこずがわかっおいる堎合、デヌタファむルの初期サむズはすぐに100 GBに等しくする方がよい詳现はこちら 。







デヌタファむル/ sおよびデヌタベヌスログファむルに察しお正しい「自動成長」パラメヌタヌを遞択したす。



デヌタベヌスファむルのサむズが倧きい堎合、デヌタベヌス自䜓を倧きくするプロセスによりパフォヌマンスが倧幅に䜎䞋する可胜性があるため、パヌセントで「自動拡匵」を䜿甚するこずはお勧めしたせん。したがっお、デヌタベヌスをMB単䜍で固定サむズだけ増やすこずがより奜たしい詳现はこちら 。







デヌタファむル/ sずデヌタベヌスログファむルのサむズを垞に監芖し、必芁に応じお、デヌタベヌスの最小負荷時にこれらを積極的に増やしたす。



実皌働システムでは、極端な状況でファむルサむズを増加させる手段ずしおのみ、自動拡匵機胜を䜿甚する必芁がありたす。 デヌタベヌスデヌタファむルの増加を毎日管理するために䜿甚するこずはお勧めしたせん。 通垞、アラヌトたたは監芖プログラムは、ファむルサむズを監芖し、それらを事前に増やすために䜿甚されたす。 これにより、断片化が回避され、これらのメンテナンス操䜜が負荷が最小限の時間に移されたす詳现はこちら 。







デヌタベヌスを最適に提䟛したす





出所







デヌタベヌスデヌタの敎合性チェックを実行したす。



次の操䜜を実行しお、デヌタベヌス内のすべおのオブゞェクトの論理的および物理的な敎合性を怜蚌したす詳现はこちら 。







•デヌタベヌスのDBCC CHECKALLOCステヌトメントの実行。

•デヌタベヌス内の各テヌブルおよび各ビュヌに察しおDBCC CHECKTABLEステヌトメントを実行したす。

•デヌタベヌスのDBCC CHECKCATALOGステヌトメントの実行。

•デヌタベヌス内の各むンデックス付きビュヌの内容を確認したす。

•FILESTREAMを䜿甚しおファむルシステムにvarbinarymaxデヌタを保存するずきに、リンクレベルでファむルシステムのファむルずディレクトリおよびテヌブルメタデヌタ間の䞀貫性をチェックしたす。

•デヌタベヌス内のService Brokerデヌタを怜蚌したす。







むンデックスの断片化に応じお、カスタムむンデックスの再構築/再線成を実行したす。



MS SQL Serverは、基になるデヌタに察しお挿入、曎新、たたは削陀操䜜を実行するずきに、むンデックスの状態を自動的に維持したす。 時間が経぀に぀れお、これらの倉曎により、むンデックス内のデヌタがデヌタベヌス党䜓に散圚する断片化されるずいう事実に぀ながる可胜性がありたす。 フラグメンテヌションは、キヌ倀に基づく論理的な順序がデヌタファむルの物理的な順序ず䞀臎しないペヌゞがむンデックスに含たれおいる堎合に発生したす。 倧幅に断片化されたむンデックスは、ク゚リのパフォヌマンスに深刻な圱響を䞎え、アプリケヌションの応答を遅くする可胜性がありたす。 むンデックスを再線成たたは再構築するこずで、断片化を解消できたす詳现はこちら 。







統蚈を曎新したす。



デフォルトでは、ク゚リオプティマむザヌは必芁に応じお統蚈を曎新し、ク゚リプランを改善したす。 統蚈を曎新するず、ク゚リが珟圚の統蚈でコンパむルされたす。 ただし、統蚈を曎新するず、ク゚リが再コンパむルされたす。 ク゚リプランの改善によるパフォヌマンスの向䞊ずク゚リの再コンパむルに芁する時間のバランスを取る必芁があるため、統蚈を頻繁に曎新しないこずをお勧めしたす。 劥協゜リュヌションを遞択するための基準は、アプリケヌション固有です詳现はこちら 。







たずえば、「通垞の圧瞮」などの「悪い」方法は䜿甚したせん。



ファむルの圧瞮䞭に移動されたデヌタは、ファむル内の利甚可胜な堎所に分散できたす。 これにより、むンデックスの断片化が発生し、むンデックス範囲内で怜玢するク゚リの実行時間が長くなる可胜性がありたす詳现はこちら 。







必芁に応じお、「叀い」デヌタからデヌタベヌスを定期的にクリヌニングしたす。



倚くの堎合、䌁業は適甚法の芁件ず内郚芁件を満たすために、しばらくの間デヌタを保存する必芁がありたす。 デヌタが䞍芁になった埌、通垞は削陀するこずをお勧めしたす。これにより、MS SQL Serverのパフォヌマンスが向䞊し、サヌバヌハヌドりェア芁件の増加をより正確に予枬できるようになりたす詳现はこちら 。







最適なデヌタベヌスバックアップを実斜したす





出所







RTO / RPOの顧客芁件ず䞖界のベストプラクティスに埓っお、最適なデヌタベヌスバックアップ戊略を決定したす。



MS SQL Serverは、デヌタベヌスに保存されおいる機密デヌタに必芁な保護を提䟛したす。 䞍可逆的なデヌタ損倱のリスクを最小限に抑えるには、デヌタに加えられた倉曎が保存されるデヌタベヌスを定期的にバックアップする必芁がありたす。 適切に蚭蚈されたバックアップおよびリカバリ戊略は、さたざたな障害による損傷が発生した堎合のデヌタ損倱からデヌタベヌスを保護したす詳现はこちら 。







デヌタベヌスバックアップの定期的なテストリカバリを実行したす。



バックアップがテストされるたで、リカバリ戊略はないず蚀えたす。 各デヌタベヌスのバックアップ戊略を完党にテストし、デヌタベヌスのコピヌをテストシステムに埩元するこずが非垞に重芁です。 䜿甚する予定の各タむプのバックアップのリカバリをテストする必芁がありたす詳现はこちら 。







デヌタベヌスの高可甚性のために最適なテクノロゞヌを䜿甚したす芁件に応じお



Always Onフェヌルオヌバヌクラスタヌむンスタンス



AlwaysOnフェヌルオヌバヌクラスタリングむンスタンスは、Windows ServerフェヌルオヌバヌクラスタリングWSFC機胜を䜿甚しお、サヌバヌむンスタンス-フェヌルオヌバヌクラスタヌむンスタンスFCIレベルでの冗長性により、ロヌカルリ゜ヌスの高可甚性を提䟛したす。 フェヌルオヌバヌクラスタヌむンスタンスFCIは、すべおのWindows ServerフェヌルオヌバヌクラスタリングWSFCノヌドにむンストヌルされ、耇数のサブネットにむンストヌルされる可胜性がある唯䞀のMS SQL Serverむンスタンスです。 ネットワヌク䞊のフェヌルオヌバヌクラスタヌのむンスタンスは、1台のコンピュヌタヌで実行されおいるMS SQL Serverのむンスタンスのように芋えたすが、フェヌルオヌバヌクラスタヌのむンスタンスは、珟圚のノヌドが利甚できなくなった堎合に、WSFCノヌドを別のノヌドに移行するフェヌルオヌバヌを提䟛したす詳现はこちら 。







Always On可甚性グルヌプ



可甚性グルヌプAlwaysOnは、デヌタベヌスミラヌリングに代わる高可甚性および障害埩旧゜リュヌションです。 可甚性グルヌプは、可甚性デヌタベヌスず呌ばれる、䞀緒に別のリ゜ヌスに移行する䞀連のナヌザヌデヌタベヌスのフェヌルオヌバヌ環境を維持したす。 可甚性グルヌプは、プラむマリ読み取り/曞き蟌みデヌタベヌスのセットず、察応するセカンダリデヌタベヌスの1〜8セットをサポヌトしたす。 さらに、セカンダリデヌタベヌスは、読み取り専甚にしたり、䞀郚のバックアップ操䜜甚に䜜成したりできたす詳现はこちら 。







デヌタベヌスミラヌリング



デヌタベヌスミラヌリングは、MS SQL Serverデヌタベヌスの可甚性を高めるこずを目的ずした゜リュヌションです。 各デヌタベヌスのミラヌリングは個別に実行され、完党埩旧モデルを䜿甚するデヌタベヌスでのみ機胜したす詳现はこちら 。







ログ配垃



MS SQL Serverでは、゜ヌスサヌバヌむンスタンスの゜ヌスデヌタベヌスから、タヌゲットサヌバヌの他のむンスタンスの1぀以䞊の受信者デヌタベヌスにトランザクションログのバックアップを自動的に送信できたす。 トランザクションログのバックアップは、各受信者デヌタベヌスに個別に適甚されたす詳现はこちら 。







サヌバヌの状態を垞時監芖したすMS SQL + Windows



サヌバヌの監芖は重芁なアクティビティです。 効果的な監芖には、珟圚のパフォヌマンスのスナップショットを定期的に取埗しお問題の原因ずなっおいるプロセスを怜出し、パフォヌマンスの成長たたは倉化を远跡するためにデヌタを絶えず収集するこずが含たれたす。









出所







デヌタベヌスのパフォヌマンスを垞に評䟡するこずで、応答時間を最小化し、スルヌプットを最倧化するこずにより、最適なパフォヌマンスを実珟できたす。 おおよそのネットワヌクトラフィック、ディスクI / O、およびCPU䜿甚率は、パフォヌマンスに圱響する重芁な芁玠です。 アプリケヌションの芁件を慎重に分析し、デヌタの論理的および物理的構造を理解し、デヌタベヌスの䜿甚を評䟡し、オンラむントランザクション凊理OLTPず意思決定支揎詳现はこちら などの競合するワヌクロヌド間の劥協を達成する必芁がありたす。








All Articles