Ну если это выделенный комп, то конечно. Я просто привык к веб-окружению, идёт множество одновременных запросов, и если один запрос тормозят базу, то он замедляет и все остальные, и весь сайт начинает тупить.
На моей прошлой работе прямо был мем, "акция". Как только продажники объявляли большую скидку, то всегда падала база. До тех пор, пока не занялись нормально её настройкой. А под обычной нагрузкой всё работало. Так что лучше компьютеру под стандартной нагрузкой именно "стоять без дела". Потому что нагрузка может вырасти.
похоже что автор решил, что настроив доступ к своему серверу с домашнего компика, он получил доступ ко всем остальным серверам в мире.
Ну или я не знаю с чего он решил, что сервер "ip адрес" вдруг будет его пускать при коннекте с убунты.
Петровский, вы вообще понимаете, что вы настроили ключ для соединения домашнего компика с убунтой? А ключ для соединения убунты с "ip адрес" вы не настраивали?
Что это вообще за сервер, на который вы пытаетесь зайти, вводя ssh пользователь@ip адрес?
кстати, а результат show warnings всё-таки интересно было бы узнать.
мне кажется, там оптимизатор пишет совсем разные запросы. и последний как раз "выводит из строя mysql"
psiklop, ну делать индексы просто от балды конечно не надо. Но и совсем без них тоже нельзя. Надо делать ровно те, которые нужны. Надо понимать, что дело не тлько в скорости выполнения запроса, но и в том, сколько ресурсов компьютера он отъедает. Если запрос выполняется 5 секунд, это значит он 5 секунд грузит комп.
Поэтому составной индекс, в котором уже лежат все нужные для запроса данные, и который позволяет запросу выполняться быстрее, полезен не только этим, а и тем что экономит ресурсы сервера.
Тем более что такой составной индекс полностью заменяет отдельный индекс по своей первой колонке.
Поэтому если есть например индекс по (phone, time) то отдельный индекс по phone не нужен. Но это уже детали.
кстати, непонятно, зачем в таблице индекс vid(id). вот этот явно лишний
Slash, вы изобрели контейнер, но зачем-то смешали его с автозагрузкой. С этой белибердой вы упадёте и сломаете себе все ноги.
Автозагрузка должна быть отдельно. Она нужна не только для объектов, которые должны быть в единственном экземляре. Тот же класс app вы как загружаете? Опять через include? Оставьте автозагрузку, то, что у вас было в spl_autoload_register
А в контейнере оставьте только работу с массивом, для объектов, которые нужны в одном экземпляре.
Не очень понятно что нужно, но в целом, если нагрузка серьёзная (хотя бы десятая часть от авито) то аналитику складывать в редис и из него пачками заливать в кликхаус.
Если нагрузка как на Тостере примерно, можно просто в БД писать.
Сарказм - это свежо и остроумно. Но для человека, который за много лет использования mysql никогда не слышал слово explain, звучит довольно жалко.
Поэтому давайте вы его оставите для своих друзей-приятелей, а здесь сделаете то, что вам сказали
показать результат Show warnings после explain для всех запросов
показать результат SHOW ENGINE INNODB STATUS\G
увеличить innodb_buffer_pool_size до максимально возможных (если это выделенный сервер, то 80% от физической памяти, если совместно используемый - то хотя бы временно дать побольше памяти, скажем, половину) и попробовать свои запросы.
Ну вот и ответ.
Все ваши "мощные серверы" просто работают калориферами. Их память- сколько бы её не было - не используется.
Сделайте хотя бы пару гигов в пределах возможного, и сразу увидите разницу.
psiklop, не на "каждый", а на каждый тяжёлый. Если все данные берутся из индекса, а не по индексу мгновенно достаются из каждой записи, то запрос очевидно работает гораздо быстрее.
Но в любом случае самим индексам нужно где-то храниться. А "программисты на пхп", которые "не писали mysql" обычно об этом не задумываются.
я бы по привычке попросил автора вывести SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
зуб даю на отсечение, что там 134217728, как минимум на локалке.
Ну и в целом посмотреть SHOW ENGINE INNODB STATUS\G
Vitsliputsli, не буду спорить, но мое мнение прямо противоположное. Написать вот такую автозагрузку из одной строчки (он, собственно, не начал - он её уже всю целиком и написал) на мой взгляд как раз полезно.