Kacam.net

Базы данных

隔离级别各挡住了什么

RR 下读到余额 100,然后 UPDATE balance = balance - 10 —— 扣完是多少?

Скопируйте заготовку и выберите модель. Она будет вести себя как интервьюер и разбирать задачу с вами по действиям, а не выкладывать ответ.

ChatGPT Claude DeepSeek 豆包 Kimi Gemini

На телефоне с установленным приложением система откроет само приложение. Внутри WeChat внешние приложения не открываются — сначала откройте ссылку в браузере.

В конце скопированного текста лежит разбор, по которому модель вас оценивает. Не читайте его заранее: ценно именно то, что вы дошли сами.

它不会给你那张「四个级别 × 三种异常」的表,而是让你自己造三条时间线,把三种异常各造一次出来。造得出来,那张表就不用背了。

第三幕是主战场,也是这一份存在的理由:一个事务里的 SELECT 和 UPDATE 看到的不是同一份数据。这一条不知道的人,写出来的「先查再改」在任何隔离级别下都是错的。

另外它会认真对待一件常被含糊过去的事:同一个级别的名字,在 MySQL 和 PostgreSQL 上的保证并不一样。

★★★★☆ · около 40 мин · Что проверяется: 三种异常的区别、快照什么时候拍、快照读 vs 当前读、幻读靠什么挡

Что тренирует эта

Версии и видимость Блокировки

Делали эту задачу?

Войдите, чтобы отметить, что задача пройдена: в следующий раз будет видно, когда это было.

Заметки тех, кто уже прошёл

Пока никто не написал. После разбора расскажите, что из него вышло: на каком действии вы застряли и какой вывод потом поменяли.

Войти, чтобы написать заметку.

Как этим пользоваться

Эта серия обучающая: она ведёт, а не загоняет в угол. Когда вы застряли, она сначала спрашивает, на каком слое (не слышал / знаю, но не знаю почему / знаю почему, но не применяю), и только потом решает, что дать. Объясняет напрямую лишь после двух попыток подвести, а затем просит пересказать своими словами.

По умолчанию рассуждает в терминах MySQL / InnoDB —— половина ловушек здесь это детали реализации, а кластерный индекс, обращение к таблице и gap-блокировки в других СУБД устроены иначе. PostgreSQL и любые другие тоже подойдут: скажите об этом первой фразой, и она будет следовать вашей СУБД, отмечая, где выводы расходятся.

С чего начать

  1. Выберите одну, откройте, скопируйте промпт.
  2. Вставьте в новый пустой чат и первой фразой скажите, какая у вас СУБД и версия (если не сказать, будет MySQL 8).
  3. Дальше ничего не говорите и ждите первого вопроса.

Четыре команды, их можно бросить в любой момент

  • 跳过 Сразу к следующей сцене
  • 换个说法 Объясни это место с другой стороны
  • 直说吧 Дай полный ответ, потом заставь меня пересказать
  • 复盘 Сразу к итоговой карточке

Три ловушки

  • Не читайте ключ в конце заранее —— раздел «частые заблуждения» и есть ответ на каждый вопрос.
  • Готовьтесь к тому, что с вас потребуют цифры. «Немного быстрее», «экономит IO» обрывают на месте: сколько строк? сколько раз? во сколько раз? Вывод без цифры — заученный.
  • Как только начнёт хвалить, напомните про правило «не хвали меня». Вести — не значит нянчить.

Начните с составного индекса: это фундамент серии, и «блокировки лежат на записях индекса», и «почему читается столько строк» опираются на его главную фразу. Если в бою кусается конкурентность — начните с «прочитал, потом записал»; если тормозят запросы — с плана выполнения.