W poprzednim poście wspominałem o mechanizmie LOCKów w MyISAM. Zasadniczo wygląda to tak, że MyISAM obsługuje LOCKi na poziomie tabeli – jeśli dane są odczytywane przez jedno zapytanie, to nie ma możliwości aby w tym samym czasie wykonywana była modyfikacja danych w tej tabeli (wyjątkiem jest opisywana w poprzednim poście sytuacja). Domyślnie pierwszeństwo mają zapytania, które modyfikują dane. Dopiero jak żaden INSERT/UPDATE/DELETE nie wisi w kolejce, wykonywane są SELECTy. Czasami dobrze byłoby mieć możliwość zmiany tego zachowania. Jak to zrobić?

Jednym z rozwiązań jest po prostu ustawienie zmiennej low-priority-updates na ‚yes’. Zmienna ta może być definiowana na poziomie globalnym lub sesji. Wprowadzenie takiej zmiany odwraca domyślne ustawienie i w tym momencie wyższy priorytet będą miały zapytania typu SELECT. Zmiana ta jednak dotyczy wszystkich zapytań a w pewnych sytuacjach dobrze by było móc sterować priorytetem poszczególnych zapytań. Są i na to sposoby.
czytaj dalej…