Как лочить таблички ? (LOCK как в файлах)

GrayMaster

Новичок
Как лочить таблички ? (LOCK как в файлах)

Как лочить таблички в MySQL ?
И как правильно обрабатывать исключения, например когда табличка не хочет лочиться ?
 

GrayMaster

Новичок
Ок. Большое спасибо !
Только не понял на счёт READ блокировки....

Если в потоке возникает блокировка операции READ для некоторой таблицы, то только этот поток (и все другие потоки) могут читать из данной таблицы.
Зачем тогда вообще нужна READ блок ?
 

Nirva

Dmitry Polyakov
блокировка на чтение, когда писать никто не может, а читать могут все.
просто в русском переводе я бы к этой фразе добавил
Если в потоке возникает блокировка операции READ для некоторой таблицы, то только этот поток (и все другие потоки) могут только читать из данной таблицы.
 

GrayMaster

Новичок
Если я сделаю блокировку WRITE и буду писать данные, если другой поток будет пытаться записать в таблицу, он будет ждать конца выполненеия первого потока или выдаст ошибку ?
 

Nirva

Dmitry Polyakov
будет ждать. лучше все же читай английскую версию, русский перевод - ни к черту.
 

Demiurg

Guest
А может не надо их лочить ? вдруг забудешь разлочить.
объясни задачу
 

GrayMaster

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

вдруг забудешь разлочить
Лол :D
 

Demiurg

Guest
>и мне нужно что они выполнялись без конфликтов...
какие конфиликты могут возникнут ?

>Лол
это не лол, это обычная ситуация случающаяся со всеми. Я уж не буду говорить о том, что скрипт может бонально упасть.
 

GrayMaster

Новичок
какие конфиликты могут возникнут ?
Например....
Чел переходит с какого-то сайта в топ. - проверка был ли он тут в ближ 10 минут, если нет, то создается сессия для него (в базу записывается 32-х битный хэш).
Дальше он делает клик с сессией, затем удаляется его хэш из БД. (это 2-й клик - анти-чит).

Так же есть скрипт крона который чистит базу недавних IP'шников а так-же базу сессий, если небыло 2-го клика.
Вот для выполнения этого скрипта нужно всё блочить, не так ли ?

-~{}~ 06.07.05 01:37:

Или вот ещё...
Возможно я неправильно понял судь блокировки, но если будет одновременно выполняться с друх потоков UPDATE одного и того-же ряда, это не вызовет конфликта ?
В данном случае засчёт клика (count=count+1)
 

Nirva

Dmitry Polyakov
GrayMaster
count = count+1 - не вызовет. ты же понимаешь, что на самом деле все запросы выполняются последовательно это раз, и если данные изменились в данном случае все равно count будет актуальным.
другое дело если ты сначала делаешь селект поля, а затем изменяешь его с учетом его значения. в твоем случае - нафиг не нужно.
 

GrayMaster

Новичок
Да посидел так подумал, действительно ненужно...
Я перепутал с файлами, думал как там если два потока пишут в один файл случается трабл...

Я понял зачем нужна блокировка и где её применять ! Спасибо за консультацию !!
 
Сверху