Vlastně PDO::beginTransaction() se řídí stejnými pravidly jako START TRANSACTION prohlášení v MySQL, více informací zde
.
To znamená, že MySQL nezamkne tabulku okamžitě, ale bude se řídit ACID pravidla.
Všimněte si, že pokud potřebujete explicitně uzamknout některé tabulky, můžete:
$db->beginTransaction();
$db->exec('LOCK TABLES t1, t2, ...');