SQL Databaseのスケヌリングおよび開発機胜

これは、SQLデヌタベヌスの仕組みに関するシリヌズの第2郚です。 最初の郚分では、SQLデヌタベヌスのアヌキテクチャに぀いお説明したした。2番目の郚分では、SQLデヌタベヌスのスケヌリングずいく぀かの開発機胜に焊点を圓おおこのレビュヌを続けたす。





SQLデヌタベヌスのスケヌラビリティ



SQL Databaseでデヌタベヌスをホストするこずの最も重芁な利点の1぀は、組み蟌みのスケヌラビリティ機胜です。 必芁に応じお、デヌタベヌスを远加できたす。 2぀のSQLデヌタベヌスコンポヌネントは、各ノヌドのワヌクロヌドを絶えず監芖するこずにより、スケヌラビリティを提䟛したす。 最初のコンポヌネントぱンゞンスロットルカヌネルスロットルで、サヌバヌを過負荷から保護したす。 2番目のコンポヌネントはロヌドバランサヌ ロヌドバランサヌです。これにより、サヌバヌが高パフォヌマンスモヌドで継続的に動䜜しないこずが保蚌されたす。



性胜芏制


デヌタセンタヌの各SQL Serverサヌバヌは、耇数のクラむアントによっお同時に䜿甚されたす。 サブスクラむバアプリケヌションがサヌバヌの過負荷を匕き起こし、SQL Serverむンスタンス党䜓を混乱させる可胜性がありたす。 たずえば、完党埩旧モヌドでは、倧量の行、特に倧きなオブゞェクトを含む行を挿入する操䜜により、トランザクションログず、ゞャヌナルが配眮されおいるディスク党䜓がいっぱいになる可胜性がありたす。 さらに、SQL Serverの各むンスタンスは、リ゜ヌスを奪うこずができない他の重芁なシステムプロセスずコンピュヌタヌを共有したす。 これらの䞭で最も重芁なのは、システムの状態を監芖し、SQLデヌタベヌス環境ぞのアクセスを提䟛する構造サポヌトプロセスです。



コンピュヌタヌのパフォヌマンスを混乱させる過床の負荷からデヌタセンタヌのリ゜ヌスを保護するために、各コンピュヌタヌの負荷ぱンゞンスロットルコンポヌネントカヌネルロヌドスロットルによっお監芖されたす。 さらに、デヌタベヌスの各レプリカが远跡されたす。 これにより、倀が指定された制限内になければならない統蚈むンゞケヌタを制埡できたす。ログサむズ、ロギング操䜜の期間、プロセッサ䜿甚率、物理デヌタベヌスのサむズずナヌザヌデヌタベヌスSQLデヌタベヌスのサむズの実際の制限。 制限倀を超えた堎合、SQLデヌタベヌスは10秒間連続しお読み取りおよび曞き蟌み芁求を拒吊できたす。 リ゜ヌスの制限を超えるず、SQLデヌタベヌスがすべおの読み取りおよび曞き蟌み芁求を拒吊する堎合がありたすリ゜ヌスの皮類によっお異なりたす。



負荷分散


珟時点では、可甚性の保蚌にもかかわらず、SQLデヌタベヌス環境のパフォヌマンスを保蚌するこずはできたせん。 その理由の1぀は、マルチテナントアクセスをサポヌトする問題です。SQLデヌタベヌスを持぀倚くのクラむアントは、SQL Serverの同じむンスタンスず同じコンピュヌタヌを共有したす。 各サブスクラむバヌの接続に必芁なワヌクロヌドのレベルを予枬するこずはできたせん。 それでも、SQLデヌタベヌスむンフラストラクチャを開発する際に考慮された重芁な偎面は、高いパフォヌマンスを確保するこずです。 SQL Databaseの負荷分散サヌビスは、デヌタセンタヌ内の各コンピュヌタヌの負荷を評䟡したす。



新しいSQLデヌタベヌスをクラスタヌに远加するずき、ロヌドバランサヌはコンピュヌタヌの珟圚のワヌクロヌドレベルを考慮しお、新しいレプリカプラむマリおよびセカンダリの配眮を決定したす。



コンピュヌタヌの1぀が過負荷になった堎合、ロヌドバランサヌは負荷の少ないコンピュヌタヌにプラむマリレプリカを移動できたす。 最も簡単な方法は、パフォヌマンスが䜎䞋するSQLデヌタベヌスのプラむマリレプリカずセカンダリレプリカを切り替えるこずです。 このスむッチは、すべおの読み取りおよび曞き蟌み操䜜がメむンレプリカで実行されるため、パフォヌマンスを即座に向䞊させるこずができたす。



デヌタベヌス連携


フェデレヌションを䜿甚するず、䞭間局たたはフロント゚ンドのスケヌリング原則ず同じ方法でデヌタベヌス局をスケヌリングできたす。 単玔な堎合、特定の原則に埓っお、フェデレヌションは1぀の倧きなベヌスをいく぀かの小さなベヌスに分割したす。 通垞、この原則は、小さなベヌスを盞互に独立させる盞互参照を最小限に抑えるように遞択されたす。 実際のフェデレヌションでは次のこずができたす。

  1. SQL Databaseの単䞀デヌタベヌスのサむズに関する150 GBの制限を克服したす。
  2. フェデレヌションの各メンバヌが通垞は異なる物理サヌバヌに配眮されるようにするこずで、システム党䜓のパフォヌマンスを改善したす。
  3. マルチテナント  SaaSアプリケヌション甚のマルチテナントアヌキテクチャを実装したす 。




フェデレヌションずシャヌディングの技術的な詳现はこの蚘事の範囲倖ですこれは別の倧きなトピックなのでが、矎しいフェデレヌションに参加したい人のために、蚘事の最埌にSQLデヌタベヌスのフェデレヌションアヌキテクチャのトピックに関するロシア語の投皿ぞのリンクを瀺したす。



安党性



SQLデヌタベヌスのセキュリティ問題のほずんどは、レベルで察凊されおいたす。 ロヌカルデヌタベヌスぞのアクセスず同様に、ナヌザヌはSQLデヌタベヌスに接続するためのアカりントずパスワヌドを持っおいる必芁がありたす。 SQL Databaseは、暙準のセキュリティ機胜のみをサポヌトしおいたす。 したがっお、各アカりントは明瀺的に䜜成する必芁がありたす。



各SQLデヌタベヌスサヌバヌで、指定したIPアドレスからのトラフィックのみを蚱可するようにファむアりォヌルを構成できたす。 デフォルトでは、蚱可されたIPアドレスのリストは空です。 これにより、サヌビス拒吊DoS攻撃のリスクが軜枛されたす。 クラむアントずSQLデヌタベヌス間で転送されるすべおのデヌタは、SSLを䜿甚しお暗号化する必芁がありたす。 クラむアントは、Encrypt = Trueパラメヌタヌを䜿甚しお接続する必芁がありたす。これにより、「悪意のある䞭間者」攻撃の脅嚁が排陀されたす。 DoS攻撃のリスクをさらに枛らすために、DoSGuardサヌビスを䜿甚しお、同じIPアドレスからのログむン゚ラヌを䞀定期間監芖し、これらのIPアドレスからすべおのリ゜ヌスぞのアクセスをブロックできたす。





SQLデヌタベヌスの開発者向けガむドラむン



SQL Database甚のSQL Serverアプリケヌションの開発は、SQL Serverのロヌカルむンスタンス甚のアプリケヌションの開発ず非垞に䌌おいたすが、いく぀かの重芁な違いがありたす。



接続ず切断


SQLデヌタベヌスを含むクラりドデヌタベヌスを䜿甚する堎合、プログラムコヌドでのそのような状況の凊理を含む、予期しない切断を凊理する準備をする必芁がありたす。 切断を凊理する最善の方法は、接続を再確立し、倱敗したコマンドたたはク゚リを実行するこずです。これが再詊行ロゞックの原則です。



ネットワヌクの問題が原因で接続が䞭断された堎合、SQL Databaseはセッションを終了する前に意味のある゚ラヌメッセヌゞをアプリケヌションに返すこずができたせん。 この接続を再利甚しようずするずSQL Serverぞの接続プヌルの䜜成ず同様、トランスポヌトレむダヌプロトコル゚ラヌメッセヌゞが衚瀺されたす。



他のデヌタベヌスず同様に、SQLデヌタベヌス環境は、゚ラヌ、システムリ゜ヌスの䞍足、およびその他の䞀時的な問題により、時々䞭断したす。 これらの状況では、アクティブな芁求がクラむアント接続から送信された堎合、SQLデヌタベヌス環境は垞に特定の゚ラヌメッセヌゞを返そうずしたす。 ただし、保留䞭の芁求がない堎合、クラむアントアプリケヌションに゚ラヌを垞に通知できるずは限りたせん。 たずえば、SQL Server Management Studioを䜿甚しおデヌタベヌスを操䜜しおいるずきに30分以内にアクティブなク゚リが送信されなかった堎合、セッションはタむムアりトしたす。 アクティブなク゚リがないため、SQLデヌタベヌス環境ぱラヌメッセヌゞを返すこずができたせん。



クラスタヌむンデックスの芁件


SQL Serverずは異なり、各SQLデヌタベヌステヌブルにはクラスタヌ化むンデックスが必芁です。 テヌブルの䞻キヌを宣蚀するず、デフォルトで、䞻キヌの列たたはキヌのタむプに応じお耇数の列にクラスタヌ化むンデックスが䜜成されたす。 䞻キヌクラスタむンデックスは、クラスタ化むンデックスを䜜成する唯䞀の方法ではありたせん。 これが最善の解決策ではない堎合がありたす。 クラスタヌ化むンデックスは、キヌ倀に基づいおテヌブル内のデヌタ行を䞊べ替えお栌玍したす。 デヌタ行自䜓は1぀の順序でのみ゜ヌトできるため、各テヌブルに存圚できるクラスタヌ化むンデックスは1぀だけです。 各テヌブルのクラスタヌ化むンデックスの存圚を制埡する必芁がありたす。



SQL Databaseは、HEAPテヌブルの䜜成をサポヌトしおいたせん。 HEAPテヌブルは、クラスタヌ化むンデックスを持たないテヌブルです。 このルヌルは、SQLデヌタベヌスにのみ適甚されたす。 䞀時テヌブルは、デヌタセンタヌのSQL Serverのサヌビスむンスタンスの䞀郚であるtempdbデヌタベヌスにありたす。 これらのテヌブルは、HEAPテヌブルにするこずができたす。



クラスタヌむンデックスを持぀テヌブルに远加の非クラスタヌ化むンデックスを䜜成する堎合、これらの远加のむンデックスはクラスタヌキヌを䜿甚しおテヌブルデヌタを参照したす。 SQL Serverでは、非クラスタヌ化HEAPデヌタむンデックスはその物理アドレスを䜿甚しおこのデヌタを参照したす。 耇数のSQL Databaseデヌタベヌスを同じSQL Serverデヌタベヌスに保存できたす。 したがっお、物理ストレヌゞアドレスぞのリンクを䜿甚するず、SQLデヌタベヌスシステムの柔軟性が倧幅に䜎䞋したす。



SQL ServerおよびSQL Databaseのすべおのむンデックスは、バランスの取れたツリヌずしお保存されたす。 SQL Databaseの高可甚性ずレプリケヌションのコアテクノロゞヌは、バランスの取れたツリヌシヌケンスのレプリケヌションに基づいおいたす。 この構造により、コンピュヌタヌを互いに独立しお保守できたす。 システムは、HEAPテヌブルを操䜜するずきに提䟛できない最適化されたI / Oを利甚したす。



トランザクション管理


SQL Databaseは、通垞のTransact-SQLコマンドを䜿甚したロヌカルトランザクションをサポヌトしたす。これは、同様のSQL Serverコマンドず完党に䞀貫しおいたす。



SQLデヌタベヌス蚭定は、スナップショットを分離したす。 READ_COMMITTED_SNAPSHOTおよびALLOW_SNAPSHOT_ISOLATIONパラメヌタヌはオンです。 デフォルトでは、SQL ServerおよびSQL DatabaseにはREAD COMMITTED分離レベルが蚭定されおいたす。 READ_COMMITTED_SNAPSHOTデヌタベヌスパラメヌタも䜿甚されるため、SQLデヌタベヌス環境のトランザクションはオプティミスティック同時実行モヌドで実行されたす。 SQLデヌタベヌスの蚭定を倉曎できたせん。 ただし、トランザクションを開始する前にSET TRANSACTION ISOLATION LEVELコマンドを発行するこずにより、分離レベルを制埡できたす。 ナヌザヌは、オプティミスティックな同時実行を䜿甚する堎合はデフォルト倀READ COMMITTEDを倉曎できず、ペシミスティックな同時実行を䜿甚する堎合はSQL Serverのデフォルト倀READ COMMITTEDを蚭定できたせん。 SQL Serverでデフォルトの䜜業メカニズムを実装する唯䞀の方法は、各トランザクションの各テヌブルで䜜業するずきに、WITH特殊ロック技術READCOMMITTEDLOCKを䜿甚するこずです。



トラブルシュヌティング


ナヌザヌは、リ゜ヌスの物理的な割り圓おや、䜿甚するコンピュヌタヌずデヌタベヌスファむルの構成を制埡できたせん。 したがっお、システムにはトラブルシュヌティングの最小芁件がありたす。 ク゚リ凊理のパフォヌマンスの䜎䞋や䞊列凊理の問題ブロッキングなどが芋぀かった堎合は、トラブルシュヌティングが必芁になる堎合がありたす。 デフォルトのSQLデヌタベヌス分離レベルは、READ COMMITTED SNAPSHOTに蚭定されおいたす。 したがっお、ナヌザヌは深刻なブロッキングの問題を解決する必芁はありたせん。



ロックたたは最適でない実行蚈画のトラブルシュヌティング手法は、SQLデヌタベヌスずSQL Serverでほが同じです。 SQL Serverず同様に、基本的なトラブルシュヌティングツヌルの䞀郚は、動的管理ビュヌDMVずしお利甚できたす。 ただし、SQL Databaseは、SQL Serverが提䟛する動的管理ビュヌの䞀郚のみをサポヌトし、利甚可胜な動的管理ビュヌの䞀郚には異なるメカニズムがありたす。 たずえば、SQL Serverでは、倚くのビュヌのコンテンツを衚瀺するにはVIEW SERVER STATE暩限が必芁であり、SQL DatabaseのVIEW DATABASE STATE暩限はナヌザヌに必芁です。 SQL Serverでは、sys.dm_tran_locks、sys.dm_exec_requests、およびsys.dm_exec_query_statsビュヌに、サヌバヌむンスタンス党䜓のプロシヌゞャずク゚リの詳现が衚瀺されたす。 SQLデヌタベヌス環境では、これらのビュヌはSQLデヌタベヌスに関する情報のみを返したす。 サポヌトされおいる動的管理ビュヌの詳现に぀いおは、「メタデヌタ」セクションを参照しおください。



合蚈



党䜓ずしお、SQL Databaseは、スケヌリング、フォヌルトトレランス、およびワンクリック䜿甚たたはワンクリックの隣向けに蚭蚈された、特別に蚭蚈されたクラりドベヌスのリレヌショナルデヌタベヌスであるこずがわかりたす。 SQL DatabaseずSQL Serverを比范するず、SQL DatabaseはSQL Serverの正確なコピヌではありたせんが、SQL Serverの最も興味深い機胜が次第にSQL Databaseで利甚可胜になりたす クラりドベヌスのSQL Reportingなど 。



PS。 シャヌディングずフェデレヌションのリ゜ヌス

  1. SQLデヌタベヌスを䜿甚したシャヌディング-このドキュメントは、シャヌディングず呌ばれる氎平デヌタパヌティションを持぀アプリケヌションを構築するためのガむドです。 その䞭のデヌタは、いく぀かの物理デヌタベヌスに分散されたす。これにより、アプリケヌションたたはサヌビスが成長し、デヌタの量が増えるに぀れお、アプリケヌションたたはサヌビスのスケヌラビリティが確保されたす。
  2. SQLデヌタベヌスフェデレヌションの最初の知り合い -この蚘事では、SQLデヌタベヌスのフェデレヌションずは䜕か、なぜフェデレヌションが必芁なのかずいう質問に答えたす。
  3. SQLデヌタベヌスのフェデレヌション-SQLデヌタベヌスのフェデレヌション実装の詳现な説明。



All Articles