[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Блокировка в MySQL
WhiteKnight
Нужно ли блокировать mysql при добавление записи в БД как это делается при добавлении данных в файл.
если да то как



Спустя 11 минут, 51 секунда (21.12.2009 - 21:22) twin написал(а):
Нет. Чем базы и хороши, что позволяют не думать о таких казусах.

Спустя 29 минут, 22 секунды (21.12.2009 - 21:52) glock18 написал(а):
Блокировать можно. mysql имеет варианты блокировки, и сам их использует. другое дело, что для innodb доступно два варианта: row lock и table lock. Сам mysql использует в основном row lock, потому что он как правило предпочтительней. При желании можно показать ему, что нужно использовать table lock. Вдобавок таблицы можно лочить аналогично обычным файлам в фс.

Спустя 27 минут, 46 секунд (21.12.2009 - 22:20) VolCh написал(а):
Обычно необходимость блокировки обходится выносом логики в SQL запрос. Например, вместо кода (условно)
$row=query('SELECT cnt FROM table WHERE id = 1');
query('UPDATE table SET cnt = ' . $row['cnt']+1)

который без блокировки небезопасен, так как между SELECT и UPDATE может пройти другой запрос на изменение cnt в строке с id 1, можно использовать
query('UPDATE table SET cnt = cnt +1 WHERE id=1')


Но если тебе нужно не только увеличить значение cnt, но и получить его в скрипт (например для вывода) и критично, что получить надо именно то, что записал, то без блокировок не обойтись.

Спустя 14 минут, 42 секунды (21.12.2009 - 22:34) sergeiss написал(а):
Цитата (VolCh @ 21.12.2009 - 23:20)
Но если тебе нужно не только увеличить значение cnt, но и получить его в скрипт (например для вывода) и критично, что получить надо именно то, что записал, то без блокировок не обойтись.

Небольшое примечание.
В Постгре это делается добавкой в конце запроса 2-х слов:
 update ...тут_все_данные... returning *


Спустя 5 минут, 2 секунды (21.12.2009 - 22:39) glock18 написал(а):
Да, классная фича у постгре это. Но у мускуля тоже варианты есть, как получить данные из запроса update wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.