スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

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せずにエンティティグループだけならば問題なくスケールするとのこと。