Базы данных. MySQL. Транзакции

  Рет қаралды 34,430

R class Tech

R class Tech

4 жыл бұрын

Презентация:
docs.google.com/presentation/...
Практика:
Реализуем несколько транзакций с
- UPDATE
- DELETE
- INSERT
- SELECT ... FOR SHARE
- SELECT ... FOR UPDATE
В этом занятии:
- Определение
- ACID
- Команды
- START TRANSACTION / BEGIN
- COMMIT
- ROLLBACK
- SAVEPOINT
- Пример
- Уровни изоляции
- SET TRANSACTION
- FOR UPDATE
- Лок таблиц
- Deadlock
- WAL
По любым вопросам, связанным с курсом можно писать на почту: okulov@rclass.pro
Личный канал Антона: / @about-code

Пікірлер: 65
@alexsemenov4658
@alexsemenov4658 3 жыл бұрын
26:24 неправильно. Write блокирует на чтение и запись всем кроме процесса который получил блокировку. Read блокирует на запись всем включаяя сам процесс - все могут только читать
@Rclass
@Rclass 3 жыл бұрын
Отличное замечание - оговорился/просмотрел, в закреп!
@JGolt
@JGolt 2 жыл бұрын
Спасибо за такой курс по SQL. Очень полезно и инфомративно! Отдельная благодарность за презентации, буду пересматривать для закрепления материала.
@Rclass
@Rclass 2 жыл бұрын
Спасибо, мы старались :)
@avesha5095
@avesha5095 Жыл бұрын
Эти уроки, а особенно преподаватель - самородок! Всё очень доступно и доходчиво. Браво! 👍
@Rclass
@Rclass Жыл бұрын
Спасибо большое :)
@vyacheslavaverkin5799
@vyacheslavaverkin5799 3 жыл бұрын
Про финансовые транзакции очень интересно!
@Rclass
@Rclass 3 жыл бұрын
Как-нибудь обязательно расскажем ;)
@hands_in_code
@hands_in_code 3 жыл бұрын
@@Rclass ждёмс
@kostiantynrudnyk9431
@kostiantynrudnyk9431 Жыл бұрын
Спасибо, все четко по делу и с хорошей презентацией. Жду новые лекции
@Rclass
@Rclass Жыл бұрын
Спасибо, мы старались :)
@AndyMazik
@AndyMazik 2 жыл бұрын
Большое спасибо! Это самое понятное объяснение из тех, что я встречал!
@Rclass
@Rclass 2 жыл бұрын
Спасибо, мы старались :)
@antony.dmr97
@antony.dmr97 3 жыл бұрын
Красавчик, очень полезное видео, однозначно лайк
@Rclass
@Rclass 3 жыл бұрын
Спасибо, мы старались ^_^
@viktors01
@viktors01 3 жыл бұрын
Спасибо) Все очень доходчиво! 🔥
@Rclass
@Rclass 3 жыл бұрын
Спасибо, мы старались :)
@ilya_dikushnikov
@ilya_dikushnikov 2 жыл бұрын
Спасибо за урок! Все понятно и крайне необходимо!))
@Rclass
@Rclass 2 жыл бұрын
Спасибо, мы старались :)
@RuslanSkiraUkraine
@RuslanSkiraUkraine 3 жыл бұрын
Очень благодарен за видос! зашло.
@Rclass
@Rclass 3 жыл бұрын
Спасибо, мы старались ^_^
@straher
@straher 3 жыл бұрын
У вас отличные материалы! Спасибо!
@Rclass
@Rclass 3 жыл бұрын
Спасибо, мы старались ^_^
@user-ec1bu8fi9j
@user-ec1bu8fi9j 2 жыл бұрын
Качественно и понятно, спасибо
@Rclass
@Rclass 2 жыл бұрын
Спасибо, мы старались :)
@user-yf5ip7td2y
@user-yf5ip7td2y 8 ай бұрын
Как круто он обьсняет
@Rclass
@Rclass 8 ай бұрын
Спасибо, мы старались :)
@abdulmajitkubatbekov5731
@abdulmajitkubatbekov5731 2 жыл бұрын
Спасибо большое
@Rclass
@Rclass 2 жыл бұрын
Спасибо что смотрите :) Мы для вас старались :)
@sergevstigneev
@sergevstigneev 2 жыл бұрын
Добрый день! Спасибо за отличные ролики! Очень круто! Есть одно замечание-предложение. В видео показывать ссылки (а они же не кликается), особенно на Вики - история странная. Понятное дело, что ссылки можно продублировать в описание, но вот в в видео или надо короткие ссылки вставлять, или QR-коды. Успехов в развитии канала!!!
@Rclass
@Rclass 2 жыл бұрын
Спасибо за отклик! Суть в том, что ко всем докладам презентация прикладывается в описание и перейти можно оттуда. Можно даже сказать что презентация чаще всего используется как рабочий материал при выполнении заданий - там даже код специально не скриншотами натыкан, а текстом оформлен :) Но задумаемся, спасибо.
@ProRezak
@ProRezak 4 жыл бұрын
Полезно
@Liaksiejka
@Liaksiejka Жыл бұрын
Что-то мало вопросов интересных было (понятно что в мануалах всё написано будет но) Как deadlock в итоге разрулится-то - какая из транзакций зафейлиться в итоге? Вот есть транзакция которая блокирует одну строку - делает сэйв поинт - блокирует вторую строку. Понятное дело сейчас заблокировано две строки. А если сделать ролбак на сейвпонит - будет ли заблокирована вторая строка? Я никогда не слышал о сериалайзбл блокировке но не важно, так при этой блокировке нельзя будет и со слейва читать? По ходу курса не слышал (а может прослушал) про master/slave, master+master, view. так же не понял что такое ключ и нафига он вообще нужен почему нужно считать длину ключа и почему это важно. Судя по аудитории им было очень интересно и полезно и без того. Спасибо
@Rclass
@Rclass Жыл бұрын
Добрый день! Курс ознакомительный, поэтому много чего нет. Те же хранимки например)
@mr.cannabis471
@mr.cannabis471 4 жыл бұрын
гуд
@xoxot_shamana
@xoxot_shamana Жыл бұрын
Спасибо
@Rclass
@Rclass Жыл бұрын
Всегда пожалуйста :)
@ianisforis
@ianisforis 10 ай бұрын
Возможна ошибка. Насколько я знаю for update это не MVCC, for update - это пессимистическая блокировка на строку, а MVCC - это оптимистическая блокировка по полю version, пример SET name = 'A', version = version + 1 WHERE id = 1 AND version = 1
@valchonok
@valchonok Жыл бұрын
Совсем непонятно на 21:57 что происходит. Там в начале первый пользователь коммитит, а потом вторым пользователем выполняется команда UPDATE? Или второй пользователь до коммита первого проводит операцию? Я учусь, и для меня это неочевидно. Хотелось бы, чтобы не нужно было строить догадок.
@dim3787
@dim3787 9 ай бұрын
24:50 - мне одному показалось, что автор объясняет тут про FOR UPDATE, а не про FOR SHARE?
@millkiway3682
@millkiway3682 3 ай бұрын
У него каждую минуту по ошибке или не верному высказыванию
@ivanshipilov4265
@ivanshipilov4265 2 жыл бұрын
Я так понимаю. Играет кто-то по сети и тут идет запланированное ТО и накатывают патч. Все Юзеры получают LOCK TABLES и начинают грустить. Правильно?
@if_xx
@if_xx 3 жыл бұрын
@erwererwrwr
@erwererwrwr 2 жыл бұрын
Жаль, ссылки из видео не добавлены в описание под видео на ютубе, а так - спасибо большое, у вас неплохо с педагогикой, вы где-то учились отдельно?
@Rclass
@Rclass 2 жыл бұрын
Спасибо :) Ссылки есть в презентации - там есть всё вплоть до примеров кода. Наш технический директор занятия педагогикой категорически отрицает))
@erwererwrwr
@erwererwrwr 2 жыл бұрын
@@Rclass увы, самодуров подобного плана много на руководящих постах. Скажите, пожалуйста, если во время выполнения транзации , а сервер бэкенда упал. Теперь эта операция с бд заблочится до ребута сервера базы данных?
@Rclass
@Rclass 2 жыл бұрын
@@erwererwrwr мы имели ввиду что он не занимался педагогикой отдельно) Интересный вопрос, скорее всего операция откатится, но врать не будем - нужно уточнять.
@erwererwrwr
@erwererwrwr 2 жыл бұрын
@@Rclass спасибо
@ilyaponomarev9279
@ilyaponomarev9279 Жыл бұрын
@@erwererwrwr если до коммита не дошло, то откатится
@Zanozin
@Zanozin 3 жыл бұрын
Как можно тестировать блокировки и гонки событий при транзакциях? Я говорю даже не про автотесты, а хотя бы про ручные. Или хотя бы не тесты, а про детализированный пошаговый дебаг.
@Zanozin
@Zanozin 3 жыл бұрын
Собственно, сам отвечаю: открыть два окна в редакторе запросов и выполнять каждый пошагово, расставляя в нужных местах sleep.
@Rclass
@Rclass 3 жыл бұрын
Как только столкнемся - обязательно попробуем найти для этого подходящий инструмент :)
@lyubovDobrinina
@lyubovDobrinina Жыл бұрын
Мне несколько раз приходила некотороя сумма, но я делов не знаю, что за переводы, фигурирует Тинькофф, а я с ним не имела делов, это получается они пользуются моими данными? Подскажите пожалуйсто.
@Rclass
@Rclass Жыл бұрын
Не совсем поняли о чем вы)
@sherman258
@sherman258 8 ай бұрын
А зачем в задаче 22:57 использовать FOR UPDATE, если можно написать просто SET `balance`.`sum` = `balance`.`sum`. + 1. И по сути можно без FOR UPDATE/SHARE обойтись, ведь неважно какой из запросов выполнится первым, второй все равно будет ждать commit и после этого в update прибавит 1 уже к актуальному балансу?
@Rclass
@Rclass 8 ай бұрын
Задача явно синтетическая была, суть была именно в том чтобы показать как работает)
@andreybespalov3629
@andreybespalov3629 4 ай бұрын
Ребят, а где видос про финансовые операции?
@Rclass
@Rclass 4 ай бұрын
Не сделали(
@andreybespalov3629
@andreybespalov3629 4 ай бұрын
@@Rclass Жаль, очень интересная тема. Попробовав погуглить нашел лишь один видеоролик на эту тему, не более(
@Rclass
@Rclass 4 ай бұрын
@@andreybespalov3629 в целом там все достаточно просто - вести всё двойной записью как в бухгалтерии :) Тогда ничего не возьмется из ниоткуда и не уйдет в никуда)
@vladislavvolodin5834
@vladislavvolodin5834 3 жыл бұрын
откатится все
@Dragonboh1
@Dragonboh1 3 жыл бұрын
Я пробовал гуглить про остановку транзакций, так чтот не могу найти, можно ссилку мли какойто термин, ато остановка транзакции либо коміт, ролбек, либо просто статьи про транзакции. В видео ви говорили, что любая длл команда ето остановка транзакции
@Rclass
@Rclass 3 жыл бұрын
Добрый день! Если вы начали транзакцию, то у нее всего два пути завершения - либо применить все изменения, либо их откатить. Это COMMIT и ROLLBACK соответственно. Опишите поподробнее: какого эффекта вы хотите добиться?
@erwererwrwr
@erwererwrwr 2 жыл бұрын
@@Rclass добрый, а если бэкенд упал сразу после start transaction, может ли заблочится доступ по этой операции в бд?
@millkiway3682
@millkiway3682 3 ай бұрын
В первых 10 минутах 10 ошибок и не верных терминов.
Базы данных. NoSQL. MongoDB
36:10
R class Tech
Рет қаралды 28 М.
Базы данных. MySQL. Индексы
31:10
R class Tech
Рет қаралды 64 М.
La final estuvo difícil
00:34
Juan De Dios Pantoja
Рет қаралды 27 МЛН
顔面水槽をカラフルにしたらキモ過ぎたwwwww
00:59
はじめしゃちょー(hajime)
Рет қаралды 34 МЛН
35. Асинхронное сохранение в базу данных (PHP + Fibers + Parallel)  ч.2 #mysql
17:17
Базы данных. MySQL. Подзапросы
17:16
R class Tech
Рет қаралды 19 М.
PHP 8.0 - 8.2 | Производительность и фичи
18:19
Базы данных. NoSQL. Redis
25:08
R class Tech
Рет қаралды 29 М.
Базы данных. MySQL. Функции, AS, UNION.
13:59
R class Tech
Рет қаралды 9 М.