Professional Data Engineer(Google Cloud) 無料問題 2 / 10 ・ 分野1: データ処理システムの設計
BigQuery のマルチステートメント トランザクションが、あるテーブルの行を更新している。その間の同じテーブルへのほかの操作について、Multi-statement transactions のページの記述に合うものはどれか。
- 更新中は、トランザクションの外で同じテーブルの行を変更する DML も、キューに入らずにすぐ動く
- 同じテーブルの行を変更する別のトランザクションも同時に動け、先に確定したほうの変更が残る
- 更新中は、同じテーブルへの INSERT による行の追加は、トランザクションの完了までキューで待たされる
- トランザクションが同じテーブルの行を変更している最中に、SELECT・ストリーミングの書き込み・WRITE_APPEND の読み込みは同時に動ける
正解と解説を見る
正解: D
正解の理由
Transaction concurrency の節は、トランザクションがテーブルの行を変更(更新や削除)している間、同じテーブルの行を変更するほかのトランザクションや DML は同時には動けないと書く。一方、読み取りや新しい行の追加の操作は同時に動ける。例として、SELECT 文・BigQuery Storage Read API の読み取り・BI Engine からのクエリ・INSERT 文・WRITE_APPEND で行を足す読み込みジョブ・ストリーミングの書き込みを挙げている。
違う選択肢
「同じテーブルの行を変更する別のトランザクションも同時に動け、先に確定したほうの変更が残る」… Transaction concurrency の節は、トランザクションがテーブルの行を変更している間、同じテーブルの行を変更するほかのトランザクションは同時には動けず、衝突するトランザクションは取り消されると書く。
「更新中は、トランザクションの外で同じテーブルの行を変更する DML も、キューに入らずにすぐ動く」… 節は、トランザクションの外で動く衝突する DML は、キューの上限の範囲で、後で動くようにキューに入れられると書く。すぐには動かない。
「更新中は、同じテーブルへの INSERT による行の追加は、トランザクションの完了までキューで待たされる」… 節は、読み取りや新しい行の追加の操作はトランザクションと同時に動けるとし、例に INSERT 文を挙げている。
押さえどころ
トランザクションは ACID の性質を保証し、スナップショット分離を支える。トランザクションの中の読み取りは参照するテーブルの一貫したスナップショットを返し、トランザクションの中で変えた内容は同じトランザクションの後の文から見える。1つのトランザクションで変更できるのは最大100のテーブルまでである。
Professional Data Engineer(Google Cloud)の演習アプリ(無料10問・全問は解錠で)へ