sql >> データベース >  >> RDS >> PostgreSQL

psycopg2でインデックスを削除するには、コミットの前または後に有効になりますか?

    commit 進行中のトランザクションをデータベースにコミットするだけです。

    インデックスを削除してから同じトランザクション内でコピーすることで、最初に1つのトランザクションでインデックスを削除してから、新しいトランザクションでデータをコピーするのと同じスピードアップが得られるかどうかを実際に尋ねています。

    docs からの直接引用

    太字の部分は、インデックスを削除した後にコミットする必要があることを間接的に示しています。コミットせずにインデックスを削除する(トランザクションを完了する)ことは、データベースの他のユーザーに影響を与えないためです。

    したがって、解決策は次のようなものでなければなりません。

    インデックスを削除し、コミットし、データをコピーし、新しいインデックスを作成して、再度コミットします。

    トランザクションを2つのトランザクションに分割すると、アトミック性が失われることに注意してください。つまりインデックスが削除される可能性はありますが、データはコピーされず(たとえば、コピートランザクション中に電源やネットワークが失われた場合)、インデックスが再作成されることはありません。




    1. MySQLWorkbenchを使用して新しいデータベースを作成します

    2. PHPを使用してドロップダウンからデータベースにデータを挿入する

    3. MySQLエンティティ属性値スキーマをピボットする方法

    4. PostgresJSON配列に文字列が含まれているかどうかを確認します