地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】一貫性非ロック読み取りが嬉しいケースに関する考え

dev.mysql.com

この機能の嬉しいポイントはなんだろうって考えていた。機能の概要としてはトランザクション開始時点のIDを割り振ってそのID移行のレコードはスナップショットを読むというもの。複数テーブルから一貫したデータを読みたいケースってなんだろうって思ったので考えてみた。

個人的に一番しっくりきたのは家計簿アプリかなぁという結論にいたった。今時点の資産を見るためには例えば株や投資信託や金、現金といったテーブルの現在の保持資産を足し算して出力するだろう。この時に株や投資信託は1秒ごとに資産が変化していくものであって15:00ちょうどの資産を見るには複数テーブルに対してクエリの実行が必要となる。15:00:00に投資信託テーブルにクエリを投げたが1秒かかったとして15:00:01に結果が返ってきてその後に15:00:01に株のテーブルにクエリを投げたとすると読み取りの一貫性がない場合は15:00:01時点の資産が反映されてしまう。この時点で15:00:00時点の資産の合計を表示するという要件は満たせなくなる。複数テーブルに対して一貫した整合性を用いたデータが欲しいケースってよくあるだろうからこれは便利な仕組みだなぁと思った。