Michał Płonka Programista PHP
Temat: Usuwanie rekordów, które ich nie usuwa
Witam,mam dość dziwną sytuację. W tabeli mam ok. 1,7mln rekordów. Potrzebuję usuwać te rekordy, które są starsze niż 3 miesiące. Żaden problem! Najpierw napisałem bezpieczne zapytanie, które ustawi flagę is_deleted dla wybranych rekordów, żeby nie usunąć czegoś za dużo. Następnego dnia (zadanie uruchamiane w CRONie) sprawdziłem i zdecydowana większość rekordów została oznaczona jako te do usunięcia. Zmieniłem więc UPDATE na DELETE, sprawdziłem dziś - liczba rekordów się nie zmieniła. Zdziwiło mnie to, ale uruchomiłem zadanie ręcznie. Mieliło i mieliło, w końcu skończyło. SELECT COUNT(id) - znowu tyle samo rekordów. Zrobiłem dla pewności jeszcze VACUUM ANALYZE, po czym ponownie sprawdziłem ilość rekordów - bez zmian. Odpaliłem zapytanie z poziomu PgAdmina, znowu odczekałem ładne -naście minut, znowu wykonałem zliczenie rekordów i znowu bez zmian! Co może być przyczyną nie usuwania się rekordów?
Dodam, że:
- nie, nie ma na tabeli triggera zabezpieczającego przed usunięciem danych,
- tak, zapytanie usuwające na pewno jest poprawne.
Pozdrawiam,
Michał