danforth

danforth
Рейтинг
153
Регистрация
18.12.2015

Нет смысла переписывать сайт с WordPress на джангу только потому, что у кого-то начал тормозить сайт. Любой блог на WordPress будет достаточно быстрым, если не превращать его в социальную сеть с интернет-магазином, аукционом, погодой и криптовалютной биржей одновременно.

Алгоритм поиска тормозов обычно такой:

- находим место, которое тормозит

- воспроизводим тормоза

- делаем профайлинг, смотрим что именно тормозит

- определяем причину

- лечим

А не такой:

- переписываем на джангу

Тем более, сама по себе джанга достаточно тормозная. Фишка джанги - скорость разработки, а не производительность.

Не смотря на то, что автор уже определился с выбором, там на самом деле ещё бы конфиг MySQL глянуть, потому что если там есть query_cache, он может довольно таки хорошо убивать производительность, если запросы летят в разные части индекса, и есть запросы на вставку.

Я сталкивался с багом, когда на двух почти идентичных VPSках (2 гб, и 1 ядро), с одинаковыми данными, с одинаковыми конфигами, на одной VPS планировщик выбирал эффективный план, а на другой - медленный. Помог логический дамп, и пересоздание базы и таблиц.

Solmyr:
но я не понимаю чем varchar в этом случае лучше чем char(32)

длина будет n байт + 1, а не 32 байта.

Solmyr:
statistics | 0.019021 |
Solmyr:
На одном запросе по-моему ничего видно не будет, это статистику на 1000 надо собирать.

Нет, достаточно одного запроса, но чтобы планировщик имел статистику по запросам. Т.е., желательно дать рабочую нагрузку на таблицу, а потом профайлинг.

Попробуйте ANALYZE TABLE; сделать, если это не прод, можно так-же попробовать OPTIMIZE TABLE сделать. У вас mysql больше думает над тем, как выполнить запрос, чем над выборкой самих данных. Насколько критично наличие констрейнта на уникальность? Если в вашем стеке уже есть PostgreSQL, и версия 10 или выше, можете попробовать сделать таблицу с полем TEXT, но вместо PRIMARY KEY сделать так:

CREATE INDEX some_index_name ON your_table USING HASH(your_field);

Но тогда не будет уникального констрейнта (возможно появление дублей, если будете просто делать INSERT).

Хеш индексы чуть быстрее будут (должно быть O(1) вместо O(logn), но не уверен что в pg честная константа).

---------- Добавлено 28.03.2020 в 12:33 ----------

Solmyr:
а для решения изначальной проблемы сделаю отдельную таблицу из id, value и буду ее хранить в MariaDB в таблице типа Memory.

Memory это ещё более жалкое поделие, чем MyISAM :)

Смена языка может сэкономить деньги на больших проектах, может ускорить разработку, но саму нагрузку держит именно shared-nothing архитектура. То что на нагруженных проектах где-то используют джангу, это не значит, что джангу выбрали потому что она хорошо подходит под нагрузки. Этот выбор был историческим.

Solmyr:
Вот честно не понимаю, почему хвалят Postgre? Во многих случаях, когда у меня были проблемы с быстродействием, я тестировал Maria, Postgre и Mongo, и всегда быстрее всего оказывались или Maria или Mongo но никогда Postgre.

PostgreSQL почти всегда быстрее. Просто его нужно уметь готовить.

miketomlin:
Для слагов лучше использовать varchar, а еще лучше varbinary.

Я не думаю что там просто так char(32), скорее всего md5 хранят.

Solmyr, если данные в таблицы выбираются только по ключу (т.е. нет range запросов), можете вынести все в Redis. В InnoDB для PK иногда используются adaptive hash index. Чем обусловлен выбор таблицы MyISAM?

А вообще, сделайте пожалуйста

EXPLAIN FORMAT=JSON SELECT ...

и ещё вот это через CLI


SET profiling = 1;
SELECT ...-- это ваш запрос, в конце ;
SET profiling = 0;
SHOW PROFILE FOR QUERY 1;

Вангую что больше всего времени уходит на sending data, но тем не менее.

promoworld:
Стоят основные плагины, необходимые для работы и паблика.
Вот по оптимизации БД рад выслушать советы.

Покажите ваш сайт, чтобы понимать масштабы катастрофы. Может у вас там скрипты блокируют отрисовку страницы. Или хотя бы Time To First Byte скажите.

Сам по себе Python медленнее PHP, если не использовать всякие транспайлеры PyPy/CPython или JIT/LLVM. На WordPress можно легко просадить производительность, установив кучу мусора, + в базе там хранятся драфты постов, и дизайн таблиц немного убогий.

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

Штош.

Посмотрел You. Что-то вроде триллера с элементами романтики. Ощущения от сериала напомнили ощущения от просмотра фильма "Не дыши", главный герой то и дело в шаге от разоблачения. Оценочка 7 из 10. Второй сезон говорят по лучше.

Вышел второй сезон Американский вандал. Первый понравился, второй сделан в том же духе, но про другой случай: обосралипсис. Пока смотрю, оценку поставлю потом.

<!--WEB-->, бога нет.

miketomlin, какую задачу вы решаете? Для чего это все?

Всего: 1540