- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Суть собственно такова... Есть голика, которая работает по такому принципу:
Считываются данные с table_1. Если table_1.status==0, то выполняются некоторые действия порядка 0.5 сек. и значение table_1.id записывается в table_2.
В этот период 0.5 сек. другой пользователь может также обработать этот запрос и получить тот же table_1.id, что не есть хорошо.
Как можно запретить/исключить с выборки этот table_1.id, чтобы в интервале долей секунды другой запрос не мог его подхватить?
Есть у кого нибудь какие-то мысли?
транзакции использовать
транзакции использовать
Можно простой пример? Читал о блокировках и транзакция MySQL, но если прямо - не особо понимаю что и к чему.
И блокировка происходит таблицы в целом или только конкретной записи? Что получает в ответ другой запрос, когда пытается считать эту строку?
Читал о блокировках и транзакция MySQL
Сорри, я давно не работаю с мусклей, с постгрес и не буду вводить вас в заблуждение, лучше еше раз посмотрите доку. Блокировка должна работать вроде как сама, транзакции я использую только через ОРМ ДЖАНГО, вряд ли это будет вам полезно. Надеюсь тут найдутся кто более компетентные чем я в БД
https://www.google.com/search?client=opera&q=innodb+блокировка+строк&sourceid=opera&ie=UTF-8&oe=UTF-8
https://www.google.com/search?client=opera&q=innodb+блокировка+строк&sourceid=opera&ie=UTF-8&oe=UTF-8
Спасибо. Понял куда рыть для моей задачи нужно - Блокировка уровня строки🍿
Спасибо. Понял куда рыть для моей задачи нужно - Блокировка уровня строки🍿
Главное, чтобы InnoDB была, а не MyISAM
Вариант:
1. Стартуете транзакцию
2. SELECT c FOR UPDATE
3. Досыпаете 0,5 сек
4. Коммитите транзакцию
Если ждать нужно больше, да и вообще, то лучше:
вместо 3-го пункта делать UPDATE поля допустим locked_to и писать дату, до которой заблокировано
во втором пункте выбирать с условием, что поле locked_to меньше текущей даты
когда нужно, снимаем locked_to
Главное не наплодить взаимных блокировок
Сама выборка сложная с многочисленными JOIN
У вас ошибка логики, блокировка на уровне строк и таблиц защищает от вставки и изменения данных, вам нужен другой механизм на уровне логики приложения, который не сможет взять нужный id если он уже обрабатывается
У вас ошибка логики, блокировка на уровне строк и таблиц защищает от вставки и изменения данных, вам нужен другой механизм на уровне логики приложения, который не сможет взять нужный id если он уже обрабатывается
Кстати да...
Тут нужно добавлять в таблицу статус строки или делать отдельную таблицу в которой будут статусы записей и проверять по ней можно ли что-то делать с записью или нет.