データの基礎応用

あるECサイトが既存のRDBMS(SQL Server)から、1日10億件のセンサーイベントデータを毎秒取り込む要件に変更されました。既存のトランザクションログ(トランザクション分離レベル: READ COMMITTED)でDirty Readを防いでいたこのシステムが、新要件下で大量のロック競合が発生して書き込み性能が急落した場合、最も効果的な対策はどれか?

A.分離レベルをREAD UNCOMMITTEDに引き下げてロック時間を最小化する
✗ READ UNCOMMITTEDではDirty Readが発生し、センサーデータの正確性が失われます。既存要件に矛盾します。
B.スナップショット分離(SNAPSHOT ISOLATION)に移行して、ロック不要の一貫性を実現する← 正解
✓ 正解です。SNAPSHOT分離はロック競合を回避しながら読み取り一貫性を保証し、OLTP型の大量書き込みに最適です。
C.トランザクションログのバッチサイズを増やしてロック頻度を低減する
✗ バッチサイズ調整ではロック競合そのものは解決されず、毎秒10億件の規模では効果が限定的です。
D.ACIDトランザクション保証を放棄して、最終的一貫性に切り替える
✗ 最終的一貫性ではセンサー値の即座の正確性が失われ、リアルタイム異常検知の要件に対応できません。

この問題のポイント

SNAPSHOT分離はロック競合を回避しながら読み取り一貫性を保証し、OLTP型の大量書き込みに最適です。

DP-900:Microsoft Azure Data Fundamentals の問題一覧