Замена Redis на MySQL в Shopify: устройство резервов и поиск дефицита соединений
На время оплаты Shopify резервирует товары, чтобы два покупателя не забрали последнюю единицу. Перенос резервов в MySQL позволил списывать товар и снимать резерв одной транзакцией. Но первые попытки упирались в конкуренцию за одну строку с количеством товара.
Команда завела строки для отдельных единиц, ограничив запас 1000 строк на товар и место хранения. SKIP LOCKED позволяет при резервировании пропускать заблокированные строки и выбирать свободные.
Запросы ускорились, но соединений всё равно не хватало. Метки в SQL-запросах и замеры на прокси показали: другие части оформления заказа удерживали соединения слишком долго. В разборе миграции Shopify есть эта диагностика, подбор ключей и уровня изоляции, а также проверка двух систем в параллельной работе.
#веб
Post #14917
4.72K

- 👎 4
- ❤ 3
- 🌚 3
- 🔥 1
- 😁 1
- 💋 1
- 👨💻 1
- 👀 1
- 🙈 1
- 🙊 1
- 👾 1