Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Проектирование большой БД


Автор: Levsha 24.9.2013, 19:51
Здравствуйте, Господа!

С недавних пор стал сталкиваться с высокой нагрузкой Mysql на сервере, и думаю, как это дело оптимизировать.

Ситуация следующая. Есть около 100 БД, со средним объемом около 70 МБ каждая. 
В каждой БД есть две таблицы с одинаковой структурой, то есть отличаются только записи в БД, сама структура везде идентична.

Вот я и думаю, не будет ли эффективнее объединить все эти базы в одну большую, добавив отдельное поле с идентификатором старой базы (ну чтобы различать данные).

Как думаете? 

И вообще, может для ускорения стоит перейти на другую бд, постгре например?

Автор: jsharp36 24.9.2013, 21:58
Странный вопрос. Базы у вас совсем маленькие по размерам. И тут два варианта. Если они по смыслу хранят одно и то же, если возможны запросы с данными, одновременно для разных баз - то необходимо правильно делать одну бд и одну структуру. Если же данные настолько независимы, то проблем с производительностью тоже - физически докупаются машины, раскладываются базы по ним. Как раз, когда оптимизируют - один из путей - суметь разбить данные на независимые куски и раскидать по машинам.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//Проектирование-большой-БД-id5241c3aaae2015b762000000#findElement_E7045_5241e0f2ae201545040002f1_0

Автор: Magistrus 25.9.2013, 10:34
Цитата(Levsha @  24.9.2013,  19:51 Найти цитируемый пост)
С недавних пор стал сталкиваться с высокой нагрузкой Mysql на сервере, и думаю, как это дело оптимизировать.


А с чем именно связана высокая нагрузка выяснили?




Автор: Levsha 28.9.2013, 23:43
Цитата(Magistrus @  25.9.2013,  10:34 Найти цитируемый пост)
А с чем именно связана высокая нагрузка выяснили?

Да, смотрел на запросы, понижал их количество, отслеживал "долгие" запросы. Структура таблиц довольно примитивна, поэтому там уже нечего оптимизировать. А нагрузка возникает просто при большой посещаемости - примерно 20К в сутки. 

Цитата(jsharp36 @  24.9.2013,  21:58 Найти цитируемый пост)
Странный вопрос. Базы у вас совсем маленькие по размерам.

Грубо говоря посещалка раскидана по 100 сайтам, и нагрузка идет параллельно по всем базам. Вот я и думаю, может я в корне не прав, и стоит это все объединить в одну базу. Ну видимо так и буду делать. 

Автор: Сумасшедший 29.9.2013, 20:15
А таки ключи, аки индексы окаянные, у вас присутствуют в нелишнем количестве?

Автор: Akina 30.9.2013, 08:15
Цитата(Levsha @  29.9.2013,  00:43 Найти цитируемый пост)
Грубо говоря посещалка раскидана по 100 сайтам, и нагрузка идет параллельно по всем базам. Вот я и думаю, может я в корне не прав, и стоит это все объединить в одну базу. Ну видимо так и буду делать.  

Пфф... так однозначно собрать в кучку. А поскольку юзер - существо предсказуемое, у тебя ещё и кэш запросов заработает как нужно.

Автор: tishaishii 30.9.2013, 20:16
Если БД разные и ими уже пользуются, то объединение 100БД в одну может стать сложной задачей.
Вот подумай: оно того стоит?

Помести БД в оперативку.

Автор: Magistrus 1.10.2013, 09:42
Уточните еще плиз, 1 сайт одна база? Или один сайт много баз?

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

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

Покажите запросы которые выполняются. 

Покажите настройки базы данных, проверте везде ли они одинаковые. 

Если базы расположены на вэб хостинге, проверте ширину канала. 

Оптимизация как правило кроется в мелочах, а как раз их и не хватает для оценки всей картины.

Автор: Fortop 1.10.2013, 20:56
Цитата(Levsha @  28.9.2013,  23:43 Найти цитируемый пост)
 А нагрузка возникает просто при большой посещаемости - примерно 20К в сутки. 

Смешные цифры. Мускуль держит на одном сервере миллионы запросов в сутки.

По-моему говорить вообще не о чем. Нет ни информации о базах, ни информации о запросах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)