Spannerで、900万行と200万行くらいをLEFT OUTER JOIN
して、WHERE
句で条件つけて、SELECT
の実行を行ったら、HashJoinIterator ran out of memory during accumulating rows
というエラーが出た。
調査のためにLIMITをつけて、実行の流れを見たら(エラー文からも分かるが)、JOINが、HashJoinで行われていた。
ハッシュマップを作るのに、データ量が多すぎたのか、メモリ不足になっている?とりあえず、別のJOIN形式ではどうなるか、確かめる事にした。
APPLY JOINで成功した。
時間はかかるが、数分程度は許容できる処理だったので、JOINの方式をAPPLY JOIN (JOIN_TYPE=APPLY_JOIN
)にすることで、無事にクエリの実行が行えた。
データベースと友達になろうな。