Сережка

Сережка
Рейтинг
97
Регистрация
12.01.2007
Должность
Программист
Интересы
Программирование

Добрый день. Кто подскажет какая ситуация сейчас с wmr после первого августа для не резидентов? Появились какие то ограничения, лимиты или что то другое , а то не могу найти новую инфу от вебмани.

LEOnidUKG:
В общем плане работы т.е. комплексной это не так. Долго объяснять. Mysql отказывается от myisam не просто так.
Если на сервере достаточно памяти, то да выставлять 5 ГБ

Я то попробую, но это не так быстро сделать :)

---------- Добавлено 16.06.2018 в 14:33 ----------

И мой знакомый рассказывал, что у него на сайте была база innoDB, и начало кончатся место. Оказывается в табличке было пару записей, а занимала пару гиг. Он ее перевел в MyISAM и она сразу в несколько сот раз уменьшилась.

LEOnidUKG:
Переведите всё в innodb, выставите innodb_buffer_pool_size в размер чуть больше ваших таблиц, если они будут пополнятся.

На данный момент самая большая таблица с ссылками занимает 4,3гб, так буфер ставить в 5гб?

---------- Добавлено 16.06.2018 в 14:25 ----------

LEOnidUKG:
Переведите всё в innodb

Я было раньше хотел, но

InnoDB также сложнее восстанавливать после сбоя в работе сервера чем MyISAM.

Операция Insert работает быстрее в MyISAM.

Если преобладают операции чтения (SELECT) работает быстрее в MyISAM.

И я тестировал операцию select на обоих типах. MyISAM была быстрее, что важно.

Возможно не оптимально настроен InnoDB

LEOnidUKG:
Ничего не давал т.к. запросы в кэше были. Вы кэш очищали, отключали перед тестами?

нет, но кеш долго не держится, так как страница второй раз грузится быстрее в разы (это с кэша), а проходит время и снова медленно.

LEOnidUKG:

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

Да. Это есть уже.

LEOnidUKG:
Это если вы блокировку сделали только на запись. Вы же сами пишете, что блокируете таблицу полностью.

Если делаю запись, блокирую таблицу на WRITE, а иначе READ

LEOnidUKG:

Вы там нахимичили себе на голову всякого, а теперь спрашиваете, что с этим делать. Делать всё по нормальному надо, и блокировка таблицы нужна в ОЧЕНЬ крайних случаях, ну просто в ОЧЕНЬ.

Это да, но вопрос был про игнор запроса, если он долго идет.

Хотя очень хорошо, что Вы все даете советы не только на конкретный вопрос, а ищите пути решения глобально, не ожидал.

И, если честно, то изначально все было без индексов и блокировок, и усе было плохо, но теперь лишь некоторые ньюансы остались.

LEOnidUKG:
Почему не innodb, и там блокировка по строкам идёт автоматическая. Также можно задать максимальное количество памяти для таблиц и всё будет в памяти работать быстро и легко.
Также сброс кэша можно уменьшить через настройки.
Не понял эту фразу. Вы проверяли работу всех индексов?
Также медленно у вас работает чтение или запись без блокировки?

innodb ставил, но не заметил каких либо изменений.

Я ставил индексы во время SELECT и проверял скорость работы, если индекс ничего не давал, я его убирал.

На SELECT по моему блокировка не влияла

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

MyISAM.

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

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

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

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

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

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

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

Оптимизайка:
на выбор:
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 я знаю хорошо, а вот других языков не знаю.

Хорошо, а в каком случае этот скрипт может запуститься?

Его надо чем-то открыть, или просто запустить с браузера, зная где будет прописана эта строчка?

Всего: 68