Witam.
Temat był wałkowany wiele razy ale nie znalazłem informacji w 100% na moje nurtujące pytanie otóż.

Mam tabelę o mechaniźmie składowania MyISAM i teraz:

Do tabeli są dodawane (INSERT) lub modyfikowane (UPDATE) rekordy od wielu użytkowników dotyczące sessji połączenia.
Chciałem wykonać skrypt ktory odpalany byłby za pomocą cron-a aby przenosił wpisy do tabeli archiwum gdy `czas_zakonczenia_sessji` is not null.
A następnie w skasować przeniesione wiersze.


Dlatego wykonuje zapytanie:

1) kopiuje wiersze do tabeli archiwum
  1. INSERT IGNORE INTO archiwum SELECT * FROM sesje WHERE czas_zakonczenia_sessji IS NOT NULL


2) kasuje wiersze z tabeli sesje
  1. DELETE FROM sesje WHERE czas_zakonczenia_sessji IS NOT NULL



no ale co się stanie jeśli "jakiś" użytkownik zakończy sesje między zapytaniem 1 a 2.
wtedy jego rekord nie zostanie skopiowany do archiwum ale już zostanie wykasowany przez zapytanie 2.
co sprawi że dany rekord zniknie.

i teraz wyczytałem, że istnieje taka możliwość jak blokowanie tabel na zapis.
czyli przed pytaniem 1 blokowałbym tabele na zapis a po zapytaniu 2 bym już tabele odblokowywał.

I tu jest moje pytanie. Co stanie się z zapytaniami na czas kiedy jest zablokowana tabela??

1) Czy wykonają się one w kolejności zgłoszeń po odblokowaniu tabeli?
2) Czy też użytkownik otrzyma błąd iż tabela jest zablokowana i zapytanie się nie wykona?

Osobiście zależało by mi na rozwiązaniu 1. Ponieważ nie mam możliwości w aplikacji użytkowników
wysyłać powtórnie zapytanie gdy tabela jest zablokowana sad.gif (a wtede rekord o zakonczeniu sessji także by zniknał)

Za pomoc wszystkim z góry dziękuję.