mrebiasz
8.12.2015, 18:26:23
Witam,
Potrzebuję wykonać 3 zapytania jedno po drugim. Pierwsze tworzy tymczasową tabele zawierającą przetworzone dane (ca 1,5mln linii). Po wygenerowaniu jej kasowana jest tabela z której korzysta produkcyjnie serwis (zapytanie 2) i zmieniana jest nazwa tymczasowej tabeli na produkcyjną. IMO takie rozwiązanie powoduje, że czas niedostępności produkcyjnej bazy jest najkrótszy i zawsze zawiera ona świeże dane. Zapytania są wywoływane co 5 minut przez cron i tutaj mam problem. Zapytanie nr 1 liczy się ok. minuty. Mam wrażenie, że wszystkie 3 zapytania wykonywane są od razu jedno po drugim bez oczekiwania na wykonanie się pierwszego - mocno czasochłonnego. I to wywala całość. Ma ktoś pomysł jak to ugryźć?
Pozdrawiam,
Maciek
kapslokk
8.12.2015, 18:29:33
Zoptymalizować strukturę bazy i zapytania tak, aby nie trzeba było usuwać starej, a póżniej zmieniać nazwy nowej tabeli.
zegarek84
9.12.2015, 17:55:21
czy wykonujesz insert w jednej sesji?? plus o ile mieści się w ramach czasowych to powinieneś wszystkie zapytania wykonać w jednym pliku... jeśli musisz podzielić czasowo to powinieneś stworzyć jakiś prosty plik konfiguracyjny co wykonać przy następnym uruchomieniu cron'a...
ps. o ile w oryginalnej tabeli brakuje tylko nowszych danych bez jakichś skomplikowanych operacji to raczej lepszym rozwiązaniem było by ją zostawić i uzupełnić ją z tymczasowej poprzez insert z podzapytania na tymczasowej tabeli o dane nie występujące w oryginalnej...
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.