Odpowiedź jest, gdy żądanie jest w kolejce, ale to niekoniecznie prawda, gdy wniosek został złożony, ponieważ wniosek jest w kolejce po gwint na stole jest ustanowiony jeśli jeszcze nie jest.
Z mysql 5.1 dev docs:
Wątek wykonuje instrukcję, ale zamiast pisać wiersz do tabeli INSERT , stawia kopię końcowy wiersz w kolejce, która jest zarządza wątek obsługi. Wszelkie błędy składniowe są zauważane przez wątek i zgłaszane do klienta pod numerem .
Kolejność zdarzeń, gdy opóźnienie oświadczenie wykonuje:
- wątek obsługi dla tabeli jest tworzony, jeśli nie jest już
- kontrole Handler lub czeka, aby uzyskać
DELAYED
zablokować
- opiekun wykonuje
INSERT
i umieścić końcowy wiersz w kolejce
- gdy wiersz jest właściwie włożona, dziennik binarny jest aktualizowana
- handler pisze
delayed_insert_limit
wierszy naraz i wykonuje dowolny oczekiwaniu SELECTS
między zapisów
- gdy kolejka jest pusta, blokada
DELAYED
zwolnieniu
W zależności od tego, czy wątek musi być tworzone lub nie i jak czas potrzebny na sprawdzenie lub uzyskanie blokady DELAYED
, czas pomiędzy wykonaniem instrukcji (krok 0) a wykonaniem instrukcji (krok 3) będzie różny. Następnie, w zależności od tego, jak duża jest kolejka (zwłaszcza jeśli jest to ponad delayed_insert_limit
wierszy) i czy dojdzie do jakiejkolwiek oczekującej SELECTS
, zapis zostanie opóźniony o pewien nieprzewidywalny czas.
Myślę, że masz rację (ale nie wiesz). Ponieważ, jeśli wątek * wykonuje * instrukcję, aby * zgłosić * błędy składni, jeśli jakieś, prawdopodobnie również "rozszerzy" CURRENT_TIMESTAMP na rzeczywisty znacznik czasu. –