owned関連がスケールしないみたい
ぶいてくさんのエントリ:【Google App Engine】 Entityとトランザクション3
先日、Entityとトランザクション2において、Ownedな関連を使ったUpdateサンプルを紹介したわけだが、実はこれ、大量データをINSERTすると急激に遅くなるという問題を含んでいることがわかった。実際にテストしてみたところ、15000件を超えた時点でタイムアウトが頻発、15300件からはとうとう1件も登録できなくなってしまった。
一度に100件登録した場合 <所有関係の負荷> * 所有関係あり: 15秒くらいから。件数が増えるとだんだん遅くなる。 * 非所有: 3秒くらい。件数が増えても変わらない。 <Index作成の負荷> * インデックスなしと、インデックスありの、どちらも100件登録で3秒くらい。 * インデックスありのテーブルで、100000件弱登録できた。 * 登録にかかる時間も100件約3秒と変わりなし。 以上の結果のとおり、Indexの数というより、所有関係の方がパフォーマンスへの影響が大きいということがわかった。所有関係については、それを解消しなければ、ほとんど使い物にならないような感じであった。
8/27 追記
ぶいてくさんにコメントで質問したところ、以下の回答をいただいた。
1.親子関係は、1つの親(カウンタとListの子をもつ)に対して、10000件挿入したケースです。 2.entity groupのみにした場合のパフォーマンスは件数が増えても安定して3秒以内で返ってきます。数十万件以上でも容量限界までいけそうな感じです。
ownedせずにエンティティグループだけならば問題なくスケールするとのこと。