Я использую кластер Galera (mariadb 10.2, 2 узла + garb, master-master), и я заметил, что в некоторых случаях (большая загрузка) выборка строки, которая была вставлена непосредственно перед чтением, завершается неудачей. Это происходит в течение одного соединения дБ с одним узлом кластера, поэтому задержка репликации не должна влиять на него.
Это редко, но иногда случается при большей нагрузке и более параллельных соединениях, которые записывают в одну и ту же таблицу БД.
Все запросы отправляются в режиме автоматической фиксации, поэтому без явной транзакции. Но то же самое в случае, если вставка выполняется в явной транзакции и извлекается в автоколонном запросе, я использую MySQL PDO из сценария PHP.
Запросы могут, например, как:
-- insert into table
INSERT INTO t ...;
-- fetch id of inserted row to variable
SELECT LAST_INSERT_ID();
-- fetch row by id
SELECT * FROM t WHERE id=$id;
-- -> no row found
Plase, есть идеи, где проблема и в чем причина такого поведения?