- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте! Есть запросы типа SELECT COUNT(*) FROM table_n WHERE 1
И так по 20-100 таблицам.
Но бывают случаи занятости некоторых таблиц, так как они блокируются командой LOCK другим скриптом. В итоге этот пересчет занимает не 0.01 сек, а до нескольких минут. Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?
Не с тем боретесь.
Странно, что много запросов с count, странно что они часто, и странно что много lock.
Где-то что-то через жопу.
На самом деле, странно не то, что часто и много, а то, что блокировка на несколько минут. Это что ж за скрипт такой, который регулярно подвешивает базу на несколько минут?
Можно ли как-то в запросе передать, что если идет задержка больше 0.1сек, то игнорировать этот запрос?
на выбор:
SET GLOBAL MAX_EXECUTION_TIME=100;
SET SESSION MAX_EXECUTION_TIME=100;
SELECT /*+ MAX_EXECUTION_TIME(100) */ COUNT(*) FROM table_n
но действительно
на выбор:
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)?
И я так понял, это в милисекундах?
Где-то что-то через жопу.
Согласен, можно считать кроном и записывать в отдельную таблицу.
Это что ж за скрипт такой, который регулярно подвешивает базу на несколько минут?
С помощью PHP/Mysql делаются некоторые вычисления, т.е. PHP не используется для Web, а как инструмент. Некоторые операции длятся часами, и что бы делались быстрее запросы к базе используется блокировка.
Согласен, что можно использовать си+ или другой язык, но просто PHP я знаю хорошо, а вот других языков не знаю.
но просто PHP я знаю хорошо, а вот других языков не знаю.
дело не в языке, а в алгоритме☝
дело не в языке, а в алгоритме☝
Ну например закидывается в базу по 20 URL сто тысяч фраз, плюс вычисляются их домены и количество, для дальнейшей вставки в базу доменов. Это если кратко.
И, если не ошибаюсь, эта процедура длится около 5 минут.
Всё очень просто. Вы просто с блокировкой не разобрались.
Объясните нам, зачем вы блокируете таблицу?
Также в mysql есть блокировка общая (чтение/запись), есть блокировка частичная отдельно на чтение и на запись.
Если вы что-то пишите важное, то сделайте блокировку на запись, чтобы чтение производилось без проблем.
Объясните нам, зачем вы блокируете таблицу?
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.
эм... у вас какой тип базы данных? Индексы корректно проставлены?
У вас какие основные операции записи или чтение?
Какая версия mysql?
эм... у вас какой тип базы данных? Индексы корректно проставлены?
У вас какие основные операции записи или чтение?
Какая версия mysql?
MyISAM.
Без индексов select работает очень медленно, на это и приоритет.
Версия сервера: 5.7.22-0ubuntu0.16.04.1 - (Ubuntu)