4

App Engineは、デフォルトですべてのフィールドに組み込みのインデックスを定義します。私はそれらを作成しませんでした、そして私はそれらを望んでいません。

私の実際のエンティティは159MBしか消費していませんが、インデックスはさらに680MBを消費しています。これらのエンティティに対してキークエリを実行するだけなので、インデックスはまったく必要ありません。これらを削除するにはどうすればよいですか?

編集:出力vacuum_indexes

Found 0 unused indexes on the server.

Details:
No indexes were deleted.

vacuum_indexes completed successfully.
4

2 に答える 2

7

組み込みインデックスを削除することはできません。それらは組み込みです:)

できることは、アプリのモデルで使用されるインデックスの数を減らすことです。デフォルトでは、すべてのプロパティがAppEngineでインデックスに登録されます。私はあなたがこれについて本当に意味していると思います。

プロパティのインデックスを作成しないようにするには、次のようにプロパティ宣言にパラメータを追加します。

class MyModel(db.Model):
    FirstName = db.StringProperty(Indexed=False)
    LastName = db.StringProperty(Indexed=False)
    ...

このように、appengineはその特定のプロパティのインデックスの使用/作成を停止します。次回SDKコンソールを実行すると、indexes.yamlファイルが自動的に更新されます。

あなたがする必要がある最後のことは実行することappcfg.py vacuum_indexes myapp/です。AppengineSDKドキュメントの最後のコマンドの詳細をご覧ください。

于 2012-06-26T00:55:04.727 に答える
4

低レベルのJavaAPIでは、組み込みのインデックスを付けたくないすべてのプロパティにsetUnindexedPropertyメソッドを使用する必要があります。いくつかの定義ファイルを変更し、バキュームして、すでに存在するインデックスエントリを削除する方法はありません。これらの組み込みのインデックスエントリを削除する(または新しいエントリを作成する)唯一の方法は、すべてのエンティティを書き直すことです。ただし、1つのエンティティで1つのインデックスエントリを削除すると、実際には2つのインデックスエントリ(1つは昇順、もう1つは降順)であるため、クォータに対して2回の完全書き込みとしてカウントされることに注意してください。

于 2012-06-26T06:06:50.820 に答える