Почему MySQL ошибается?

  • Автор темы Автор темы Castaneda
  • Дата начала Дата начала
  • Теги Теги
    mysql
Ты не про те локи прочитал.

Вот ссылка на то, что тебе нужно:


не понимаю зачем мне это.
Выше же писал. Никакого отношение это не имеет к данной ситуации

нет смысла в отдельной блокировке таблицы перед вставкой в MySQL
я это понимаю, но почему-то же INSERT успешно проходит с дублем.
Значит ZP неправильно определяет результат запроса?
 
не понимаю зачем мне это.
Одной строкой решаются все проблемы. И не нужно изобретать что-то, пытаясь понять, где косячит, зенка, база, запросы. Простой лок, все решает. Но если есть желание достучаться до правды, то можете продолжить поиски.
 
Одной строкой решаются все проблемы. И не нужно изобретать что-то, пытаясь понять, где косячит, зенка, база, запросы. Простой лок, все решает. Но если есть желание достучаться до правды, то можете продолжить поиски.

да у потоков даже нет общих списков.
Куда я эти SyncObject воткну??
 
Делаешь ЛОК - берёшь акк меняешь у него СТАТУС, снимаешь ЛОК - решает кучу проблем и наглядно видно что бл*ть происходит с твоими юзерами!!!
Это чуть сложнее зато, нет такого гемора )
 
да у потоков даже нет общих списков.
Куда я эти SyncObject воткну??
вообще-то в общий код.
а еще лок, это не блокировка списков. Это блокировка выполнения кода. Когда есть лок, другие потоки не работают, они ждут возможности зайти в лок. в этом месте где есть лок, всегда будет однопоток.
Тебе надо просто понять этот механизм. На текущий момент, ты его вообще не понимаешь.
 
такое ограничение не сработает, потому как 2 потока имеют разный pid. сократи до acc, state
объясни пож. не понимаю.

вообще-то в общий код.
а еще лок, это не блокировка списков. Это блокировка выполнения кода. Когда есть лок, другие потоки не работают, они ждут возможности зайти в лок. в этом месте где есть лок, всегда будет однопоток.
Тебе надо просто понять этот механизм. На текущий момент, ты его вообще не понимаешь.
ты прав. Если знаешь как, то напиши пож
 
объясни пож. не понимаю.
уникальный ключ порождает ограничение на возможность вставки записей с одинаковыми значениями. чем он шире, тем больше вариативность записей. твой ключ состоит из 6 столбцов, это значит, что сработает он лишь в случае попытки вставить запись с полным соответствием значений ранее вставленной записи
 
  • Спасибо
Реакции: uuw
ты прав. Если знаешь как, то напиши пож
дали же статью на охранный лок. там очень хорошо все расписано.

если в кратце, то вот весь лок
lock (SyncObjects.свой общий объект)
{
тута весь код , он выполняется в 1 поток для SyncObjects.свой общий объект
}
в общем коде можно на создавать локеров под любые задачи.

81689
 
уникальный ключ порождает ограничение на возможность вставки записей с одинаковыми значениями. чем он шире, тем больше вариативность записей. твой ключ состоит из 6 столбцов, это значит, что сработает он лишь в случае попытки вставить запись с полным соответствием значений ранее вставленной записи
ты здесь что-то путаешь.
Специально создал новую таблицу и попробовал два запроса
INSERT INTO test (acc,info) VALUES ('5','111111')
INSERT INTO test (acc,info) VALUES ('5','222222')
всё отрабатывает правильно:
81690




дали же статью на охранный лок. там очень хорошо все расписано.

если в кратце, то вот весь лок
lock (SyncObjects.свой общий объект)
{
тута весь код , он выполняется в 1 поток для SyncObjects.свой общий объект
}
в общем коде можно на создавать локеров под любые задачи.

Посмотреть вложение 81689
костыль вроде бы неплохой, вот только работает 2 сервера, т.ч. это не спасёт
нужно на уровне MySQL победить
 
Лок стоит делать на стороне базы данных. lock C# работает только в одном шаблоне, одного постера.
 
Последнее редактирование:
Лок стоит делать на стороне базы данных. lock C# работает только в одном шаблоне, одного тостера.
насчет тостера не знаю.... разработчикам виднее что за тостер у них получился :ca:

такс... вот сразу возник вопрос. а чем отличается один поток одного шаблона от одного потока другого потока, если я у обоих прописываю один и тот же общий код и один и тот же общий объект.
например SyncObjects.MyLockSQL
у меня же будет работать лок правильно для этого SyncObjects.MyLockSQL во всех шаблонах одного "тостера" ? или же все таки не будет ?
 
такс... вот сразу возник вопрос. а чем отличается один поток одного шаблона от одного потока другого потока, если я у обоих прописываю один и тот же общий код и один и тот же общий объект.
например SyncObjects.MyLockSQL
у меня же будет работать лок правильно для этого SyncObjects.MyLockSQL во всех шаблонах одного "тостера" ? или же все таки не будет ?
Тут решает объект lock'а. Что бы лок был на все шаблоны необходим объект на все шаблоны (или весь постер), например:
насчет тостера не знаю.... разработчикам виднее что за тостер у них получился :ca:
никогда такого не было и вот опять :al:
 
Вроде как проблема решена.
По крайней мере ни одного дубля за последние 20 часов.

В виду того, что апи ресурса работает через левую кривую руку разработчика-дцпшника, которая торчит у него из 5ой точки, бывало такое, что поток на простейших моментах мог не отстукивать в базу больше 10 минут, а потом внезапно проснуться как протрезвевший бомж с утра и обнаружить, что аккаунт уже отобрал другой поток (т.к. у меня все, что > 7 минут считаются мёртвыми)

А при старте потока он чистит из online всю мертвячину.
После перехода на резервный апи всё ок.

Так что реализация с INSERTом без локов отлично отрабатывает как и задумывалось.
Ложная тревога.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)