Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak skutecznie aktualizować dużą bazę
Forum PHP.pl > Forum > Bazy danych > MySQL
aladin07
witam

zastanawiam się jaki sposób aktualizacji danych będzie skuteczny

dane do bazy są z xml-i codziennie aktualizowanych więc i codziennie trzeba całą bazę w zasadzie przebudować
wydaje mi się, że zamiast sprawdzać wiersz po wierszu całą bazę w celu aktualizacji poszczególnych rekordów
lepiej było by od nowa wprowadzić dane do bazy - najpierw ją wyczyścić a później wprowadzić dane
ale w związku z tym, że na moim vps-ie trwa to 40-50 min w zależności od danych to nie można pozwolić
aby przez tak długi okres czasu nie było dostępu do jakichkolwiek danych - nawet tych już nieco starszych

i teraz chciałem prosić o propozycje w jaki sposób przez to przebrnąć
czy na przykład czas zapisywania z xml-i danych stworzyć bliźniaczą bazę i po jej wypełnieniu podmienić (starą skasować)
a nowej zmienić nazwy tabel na właściwe ?

czy może w jeszcze jakiś inny sposób należało by to zrobić? może po prostu wyważam otwarte drzwi
z góry bardzo dziękuję za podpowiedzi
dr_bonzo
Mozesz dodawac rekordy z flaga:
`during_update` = 1, stare rekordy maja ją ustawiona na zero.

Po skonczonym update robisz szybkie
DELETE rekordy WHERE `during_update` = 0;
UPDATE rekordy SET `during_update` = 0 WHERE `during_update` = 1;

Czyli: w czasie aktualizacji masz dostep do starych danych. Musisz poprawic istniejace SQLki tak zeby korzystaly z obiektow z `during_update` = 0.


Ew. kombinuj z wymiana baz danych - po update zmien dane konfiguracyjne do bazki w aplikacji - chyba najprostsze przeskoczenie miedzy bazami.
aladin07
w sumie chyba z przedstawiona propozycja zmiany nazwy bazy
po uprzednim imporcie danych do tymczasowej bazy wydaje sie najszybszym
rozwiazaniem i chyba jedynym przy moim slabym vps-ie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.