Пессимистическая: блокируем строку на время транзакции (SELECT ... FOR UPDATE). Другие ждут. Оптимистическая: читаем версию (или значение полей), при UPDATE проверяем, что версия не изменилась (WHERE version = old_version); при конфликте повторяем. Оптимистическая лучше при редких конфликтах (меньше блокировок); пессимистическая - при частых конфликтах.