PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Премахването на индекс с psycopg2 влиза в сила преди или след извършване?

commit просто ангажира всяка текуща транзакция в ход към вашата база данни.

Какво всъщност питате дали премахването на индекси и след това копирането в рамките на една и съща транзакция ще осигури същото ускоряване като първо премахване на индекси в една транзакция и след това копиране на данни в нова транзакция.

Директният цитат от docs казва, че:

Удебелената част индиректно казва, че трябва да се ангажирате след премахване на индексите, тъй като премахването на индекси без ангажиране (завършване на транзакцията) не трябва да има никакво въздействие върху други потребители на базата данни.

Така че решението трябва да е нещо подобно:

изтрийте вашите индекси, ангажирайте, копирайте данните, създайте нови индекси и ангажирайте отново.

Обърнете внимание, че докато разделяте транзакцията си на две, губите атомарност. т.е. възможно е вашите индекси да бъдат премахнати, но не се копират никакви данни (ако захранването или мрежата например се загубят по време на транзакцията за копиране) и индексите никога няма да бъдат създадени отново.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете потребител от базата данни на Postgres

  2. Съхранявайте дата с незадължителен месец / ден

  3. Уникални полета на модела в Django, нечувствителни към главни букви?

  4. Актуализациите на полето JSON не се запазват в DB

  5. Как да използвате PostgreSQL hstore/json с JdbcTemplate