Можно ли игнорировать MySql - Форум об интернет-маркетинге
Этот сайт существует на доходы от рекламы.
Пожалуйста, выключите AdBlock.
Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 14.06.2018, 16:13   #1
Дипломник
 
Аватар для Сережка
 
Регистрация: 12.01.2007
Адрес: Киев
Сообщений: 73
Репутация: -83

По умолчанию Можно ли игнорировать MySql

Здравствуйте! Есть запросы типа SELECT COUNT(*) FROM table_n WHERE 1
И так по 20-100 таблицам.
Но бывают случаи занятости некоторых таблиц, так как они блокируются командой LOCK другим скриптом. В итоге этот пересчет занимает не 0.01 сек, а до нескольких минут. Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?
__________________
Семён-Ядрён - Качественное семантическое ядро для Вашего сайта!
Сережка вне форума   Ответить с цитированием

Реклама
Старый 14.06.2018, 17:15   #2
_SP_
Академик
 
Регистрация: 24.03.2008
Адрес: MSK
Сообщений: 3,151
Репутация: 305148

По умолчанию Re: Можно ли игнорировать MySql

Не с тем боретесь.
Странно, что много запросов с count, странно что они часто, и странно что много lock.
Где-то что-то через жопу.
_SP_ вне форума   Ответить с цитированием
Сказали спасибо:
Старый 14.06.2018, 23:13   #3
Sitealert
Слесарь-сайтосборщик
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 2,893
Репутация: 256288

По умолчанию Re: Можно ли игнорировать MySql

На самом деле, странно не то, что часто и много, а то, что блокировка на несколько минут. Это что ж за скрипт такой, который регулярно подвешивает базу на несколько минут?
__________________
Отпилю лишнее, прикручу нужное, выправлю кривое.
Вытравлю вредителей.
Sitealert вне форума   Ответить с цитированием
Старый 15.06.2018, 00:02   #4
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 3,713
Репутация: 540706

По умолчанию Re: Можно ли игнорировать MySql

Цитата:
Сообщение от Сережка Посмотреть сообщение
Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?
на выбор:

SET GLOBAL MAX_EXECUTION_TIME=100;
SET SESSION MAX_EXECUTION_TIME=100;
SELECT /*+ MAX_EXECUTION_TIME(100) */ COUNT(*) FROM table_n

но действительно

Цитата:
Не с тем боретесь.
__________________
Слабый Банан? Твой малыш станет больше.
Оптимизайка вне форума   Ответить с цитированием
Сказали спасибо:
Старый 16.06.2018, 10:35   #5
Сережка
Дипломник
 
Аватар для Сережка
 
Регистрация: 12.01.2007
Адрес: Киев
Сообщений: 73
Репутация: -83

ТопикСтартер Re: Можно ли игнорировать MySql

Цитата:
Сообщение от Оптимизайка Посмотреть сообщение
на выбор:
SET GLOBAL MAX_EXECUTION_TIME=100;
SET SESSION MAX_EXECUTION_TIME=100;
SELECT /*+ MAX_EXECUTION_TIME(100) */ COUNT(*) FROM table_n
А это установит лимит только на эту страницу, или брать лишь последний запрос?
Сделал запрос
SELECT /*+ MAX_EXECUTION_TIME(100) */ COUNT(*) FROM table_n
в PhpMyadmin, он исправил на
SELECT COUNT(*) FROM table_n
Но он использовал директиву MAX_EXECUTION_TIME(100)?
И я так понял, это в милисекундах?

Цитата:
Сообщение от _SP_
Где-то что-то через жопу.
Согласен, можно считать кроном и записывать в отдельную таблицу.

Цитата:
Сообщение от Sitealert
Это что ж за скрипт такой, который регулярно подвешивает базу на несколько минут?
С помощью PHP/Mysql делаются некоторые вычисления, т.е. PHP не используется для Web, а как инструмент. Некоторые операции длятся часами, и что бы делались быстрее запросы к базе используется блокировка.
Согласен, что можно использовать си+ или другой язык, но просто PHP я знаю хорошо, а вот других языков не знаю.
Сережка вне форума   Ответить с цитированием
Старый 16.06.2018, 11:34   #6
totamon
живу тут
 
Аватар для totamon
 
Регистрация: 12.05.2007
Адрес: Пермь
Сообщений: 2,890
Репутация: 259620
Отправить сообщение для totamon с помощью ICQ Отправить сообщение для totamon с помощью Skype™

По умолчанию Re: Можно ли игнорировать MySql

Цитата:
Сообщение от Сережка Посмотреть сообщение
но просто PHP я знаю хорошо, а вот других языков не знаю.
дело не в языке, а в алгоритме
totamon на форуме   Ответить с цитированием
Старый 16.06.2018, 12:00   #7
Сережка
Дипломник
 
Аватар для Сережка
 
Регистрация: 12.01.2007
Адрес: Киев
Сообщений: 73
Репутация: -83

ТопикСтартер Re: Можно ли игнорировать MySql

Цитата:
Сообщение от totamon Посмотреть сообщение
дело не в языке, а в алгоритме
Ну например закидывается в базу по 20 URL сто тысяч фраз, плюс вычисляются их домены и количество, для дальнейшей вставки в базу доменов. Это если кратко.
И, если не ошибаюсь, эта процедура длится около 5 минут.
Сережка вне форума   Ответить с цитированием
Старый 16.06.2018, 12:17   #8
LEOnidUKG
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 21,256
Репутация: 1865487
Отправить сообщение для LEOnidUKG с помощью ICQ

По умолчанию Re: Можно ли игнорировать MySql

Всё очень просто. Вы просто с блокировкой не разобрались.

Объясните нам, зачем вы блокируете таблицу?

Также в mysql есть блокировка общая (чтение/запись), есть блокировка частичная отдельно на чтение и на запись.

Если вы что-то пишите важное, то сделайте блокировку на запись, чтобы чтение производилось без проблем.
LEOnidUKG вне форума   Ответить с цитированием
Старый 16.06.2018, 12:25   #9
Сережка
Дипломник
 
Аватар для Сережка
 
Регистрация: 12.01.2007
Адрес: Киев
Сообщений: 73
Репутация: -83

ТопикСтартер Re: Можно ли игнорировать MySql

Цитата:
Сообщение от LEOnidUKG Посмотреть сообщение
Объясните нам, зачем вы блокируете таблицу?
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.
Сережка вне форума   Ответить с цитированием
Старый 16.06.2018, 12:37   #10
LEOnidUKG
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 21,256
Репутация: 1865487
Отправить сообщение для LEOnidUKG с помощью ICQ

По умолчанию Re: Можно ли игнорировать MySql

Цитата:
Сообщение от Сережка Посмотреть сообщение
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.
эм... у вас какой тип базы данных? Индексы корректно проставлены?
У вас какие основные операции записи или чтение?
Какая версия mysql?
LEOnidUKG вне форума   Ответить с цитированием
Ответ

Метки
mysqli , php




Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Текущее время: 10:35. Часовой пояс GMT +3.

Регистрация Справка Календарь Поддержка Все разделы прочитаны