「キー以外の属性数×2 + 1」回のインデックス書き込みが発生した。
念のため、JDO で属性を一つだけ更新した場合のインデックス書き込みの回数を見てみよう。
予想としては、1属性で2つのインデックスがあるから2回発生するはず。
まずデータひとつ作成
MyData data = new MyData(); data.setName("one"); data.setName2("two"); data.setNo(10L); pm.makePersistent(data);
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 0 → 1 |
Datastore Index Write Ops | 0 → 7 |
キー以外の属性は3つなので想定通り 7 Index Write Ops。
更新する。
Query query = pm.newQuery(MyData.class); List<MyData> result = (List<MyData>)query.execute(); MyData data = result.get(0); data.setName("newOne2"); pm.close();
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 1 → 2 |
Datastore Index Write Ops | 7 → 11 |
4 Index Write Ops になった。なぜだろう。
属性を2つ更新してみる。
Query query = pm.newQuery(MyData.class); List<MyData> result = (List<MyData>)query.execute(); MyData data = result.get(0); data.setName("newOne2"); data.setName2("newTwo2"); pm.close();
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 2 → 3 |
Datastore Index Write Ops | 7 → 19 |
一気に12 Index Write Ops になった。ますます理由不明
念のため何回かやってみる。
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 3 → 4 |
Datastore Index Write Ops | 19 → 27 |
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 4 → 5 |
Datastore Index Write Ops | 27 → 35 |
さっき、12 IWOps だったのはなんか別の理由か?
何回かやった感じでは、2属性更新では 8 Index Write Ops になるようだ。
つまり、「更新した属性数 × 4」回の Index 更新操作になる模様。
いつか、LowLevel API を使ってもう一回調べてみよう。
0 件のコメント:
コメントを投稿