TyLeRRR
@TyLeRRR
Student

Как увеличить производительность MySQL базы данных музыкальной библиотеки?

Всем привет. Прошу совета. Есть задание, нужно увеличить производительность базы данных(MySQL) не меняя при этом архитектуру (архитектура как 2 пальца).
Есть сайт музыкальная библиотека, функционал тоже как 2 пальца, можно зарегистрироваться, закачать песни, слушать онлайн, админ может удалять песни.
База состоит из 2 таблиц.
Таблица Users (id, имя, фамилия, никнейм, email, пароль, день рождения, город, универ, факультет)
Таблица Music (id, исполнитель, название_песни, длительность, жанр, альбом, год, ссылка_где_лежит_загруженая_песня).

нашел в интернете такую теорию:
Мультимедийные файлы, будь то статические изображения, звуковые файлы или фильмы, часто рассматривают как двоичные объекты. Для них даже имеется специальный термин: большие двоичные объекты -- BLOB (Binary Large OBject). Поля BLOB можно хранить либо в базе данных, либо в файловой системе. В последнем случае пути к объектам BLOB хранятся в базе данных. Хранение объектов BLOB в файловой системе потребует от вас чуть больше работы, зато позволит добиться гораздо более высокой производительности, чем при хранении их в базе данных.

Но это не тот случай (вродь), у меня песни лежат в файловой системе, а в базе только ссылки на локальный источник.
Спасибо за помощь. всем добра
  • Вопрос задан
  • 345 просмотров
Решения вопроса 2
rpsv
@rpsv
делай либо хорошо, либо никак
Ну по сути, не меняя архитектуру оптимизировать можно только играясь с индексами. Следовательно посмотрите какие запросы у вас используются (какие поля при фильтре используются) и делайте для них оптимальные индексы.

Например, если у вас есть фильтр по жанру, году и альбому, то у вас должен быть запрос:
... WHERE жанр = "" AND год = "" AND альбом = ""
и соответствующий индекс:
CRAETE INDEX ... ON tabl(жанр, год, альбом)
И обратите внимание, что порядок важен, поэтому все запросы у вас должны иметь строго указаный в индексе порядок!
... WHERE год = "" AND жанр = "" AND альбом = ""
Такой запрос будет использовать только часть индекса.

Ну и прочие тонкости почитайте про индексы, на самом деле интересная задачка)
Ответ написан
@egormmm
Борітеся — поборете!
Нужно оптимизировать запросы, расставить индексы, включить кеш.
Более подробно есть отдельный раздел в мануале MySQL, так и называется "Оптимизация":

Но учитывая то, что у вас всего 2 таблицы, скорее всего индексы не расставлены или кеш запросов не включен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы