Я бы не назвал себя специалистом в mysql, но вот что можно увидеть из документации, как минимум:
The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for storage engines that are capable of it. This applies only to InnoDB. The effect is the same as issuing a START TRANSACTION followed by a SELECT from any InnoDB table. See Section 15.7.2.3, “Consistent Nonlocking Reads”. The WITH CONSISTENT SNAPSHOT modifier does not change the current transaction isolation level, so it provides a consistent snapshot only if the current isolation level is one that permits a consistent read. The only isolation level that permits a consistent read is REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT SNAPSHOT clause is ignored. A warning is generated when the WITH CONSISTENT SNAPSHOT clause is ignored.
То бишь:
1. Все это касается только InnoDB
2. START TRANSACTION WITH CONSISTENT SNAPSHOT не отличается от START TRANSACTION + SELECT (точнее, как я понял, тот самый консистентный снепшот фиксируется в первом случае в момент START TRANSACTION, а во втором - в момент SELECT).
3. Суть одна и та же - транзакция видит данные на момент фиксации снепшота, независимо от того, что там делают параллельные транзакции (+ она, конечно, видит свои собственные изменения)
4. WITH CONSISTENT SNAPSHOT не меняет уровень изоляции
5. WITH CONSISTENT SNAPSHOT работает только с REPEATABLE READ и игнорируется для любых других уровней с выдачей предупреждения (блин, не имею возможности проверить: что, даже для SEIRALIZABLE?)
Короче, вывод: ставите REPEATABLE READ (он, впрочем, стоит по умолчанию) и нафиг не сдался этот WITH CONSISTENT SNAPSHOT.
я могу вообще не делать полную блокировку таблиц, чтобы не потерять незавершенные транзакции. Я правильно понимаю смысл использования?
Смысл: вы получаете снимок состояния БД на момент фиксации снепшота. Обычно, это то, что нужно для бекапа