Можно ли игнорировать MySql

12
Сережка
На сайте с 12.01.2007
Offline
97
1100

Здравствуйте! Есть запросы типа SELECT COUNT(*) FROM table_n WHERE 1

И так по 20-100 таблицам.

Но бывают случаи занятости некоторых таблиц, так как они блокируются командой LOCK другим скриптом. В итоге этот пересчет занимает не 0.01 сек, а до нескольких минут. Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?

Семён-Ядрён (http://seo-case.com/zakaz_996/submit_brief.html) - Качественное семантическое ядро для Вашего сайта!
_
На сайте с 24.03.2008
Offline
381
#1

Не с тем боретесь.

Странно, что много запросов с count, странно что они часто, и странно что много lock.

Где-то что-то через жопу.

S
На сайте с 30.09.2016
Offline
469
#2

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

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
Сережка:
Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?

на выбор:

SET GLOBAL MAX_EXECUTION_TIME=100;

SET SESSION MAX_EXECUTION_TIME=100;

SELECT /*+ MAX_EXECUTION_TIME(100) */ COUNT(*) FROM table_n

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

Не с тем боретесь.
⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Сережка
На сайте с 12.01.2007
Offline
97
#4
Оптимизайка:
на выбор:
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 я знаю хорошо, а вот других языков не знаю.

totamon
На сайте с 12.05.2007
Offline
437
#5
Сережка:
но просто PHP я знаю хорошо, а вот других языков не знаю.

дело не в языке, а в алгоритме☝

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Сережка
На сайте с 12.01.2007
Offline
97
#6
totamon:
дело не в языке, а в алгоритме☝

Ну например закидывается в базу по 20 URL сто тысяч фраз, плюс вычисляются их домены и количество, для дальнейшей вставки в базу доменов. Это если кратко.

И, если не ошибаюсь, эта процедура длится около 5 минут.

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#7

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

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

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

Если вы что-то пишите важное, то сделайте блокировку на запись, чтобы чтение производилось без проблем.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Сережка
На сайте с 12.01.2007
Offline
97
#8
LEOnidUKG:
Объясните нам, зачем вы блокируете таблицу?

Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#9
Сережка:
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.

эм... у вас какой тип базы данных? Индексы корректно проставлены?

У вас какие основные операции записи или чтение?

Какая версия mysql?

Сережка
На сайте с 12.01.2007
Offline
97
#10
LEOnidUKG:
эм... у вас какой тип базы данных? Индексы корректно проставлены?
У вас какие основные операции записи или чтение?
Какая версия mysql?

MyISAM.

Без индексов select работает очень медленно, на это и приоритет.

Версия сервера: 5.7.22-0ubuntu0.16.04.1 - (Ubuntu)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий