Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 19.08.2007, 01:48   #1
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 447
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию О программирование

Закралась в голове мысля....

Сейчас проектирую базенку, в основной таблице набирается под 60 колонок. При этом объем хранимых в ней данных планируется в пределах 100.000 - 1.000.000 строк, индексы и прочее вроде продумано, вопрос в том, что может стои разбить таблицу на пару мелких?
Но смущает то что тогда возрастет число подзапросов и соответственно процессорное время. Как быть не пойму... В самой таблице данные мелкие, типа INT Enum есть 1 поле TEXT.
Может у кого был опыт шевелить базы (таблицы) с большим числом колонок? Что производительней: 2 таблицы с 30 колонками, но линкующимеся по ключу или 1 с 60.
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Старый 19.08.2007, 11:00   #2
Специалист
 
Регистрация: 01.08.2007
Сообщений: 269
Вес репутации: 224
grey скоро станет известен
Отправить сообщение для grey с помощью ICQ
По умолчанию

Используй индексы.

По идее 1 с 60. А вообще проверь сам - тогда будешь точно знать.
grey вне форума   Ответить с цитированием
Старый 19.08.2007, 12:11   #3
Мастер
 
Аватар для Sasa
 
Регистрация: 21.06.2007
Адрес: Москва
Сообщений: 506
Вес репутации: 232
Sasa скоро станет известенSasa скоро станет известен
Отправить сообщение для Sasa с помощью ICQ
По умолчанию

оценочно
размер базы будет порядка 60Мб - ерунда - дай памяти СУБД достаточно и она вся в память ляжет вместе с индексом

я бы не разбивал, если это логически не оправдано
все равно будешь всю строку целиком дергать
__________________
Sasa
Sasa вне форума   Ответить с цитированием
Старый 19.08.2007, 12:30   #4
Злой модератор
 
Аватар для Wink
 
Регистрация: 25.03.2007
Адрес: Deep forest
Сообщений: 5,343
Вес репутации: 517
Wink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущее
По умолчанию

Скорость работы в основном будет зависеть от вида запросов к этой базе. Не думаю, что в каком-то запросе чтения вдруг понадобятся сразу 60 колонок одновременно.
А операции записи в эту базу как часто выполняться будут? Имеет смысл отделить часто модифицируемые части от статических.
Wink вне форума   Ответить с цитированием
Старый 19.08.2007, 13:13   #5
Мастер
 
Аватар для Sasa
 
Регистрация: 21.06.2007
Адрес: Москва
Сообщений: 506
Вес репутации: 232
Sasa скоро станет известенSasa скоро станет известен
Отправить сообщение для Sasa с помощью ICQ
По умолчанию

гммм
а если он не нужны все сразу то зачем их объединять в одну таблицу?

я как раз понял что нужны все 60 в одном месте
__________________
Sasa
Sasa вне форума   Ответить с цитированием
Старый 19.08.2007, 14:06   #6
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 447
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию

Да по индексам все в порядке все довольно продумывал. С базами работы опыт уже 7 лет, вот только сейчас проект замутил где очень много данных который по логике лучше хранить в одной таблице из-за чего она разрослась столбцами. С памятью проблем не должно быть (colocation). Дело в производительности. Поизучал сильные базы которые держат хорошо нагрузку без кэширования.
Для примера рассмотрел базу vBulletin на как на SE форуме где дикое количество постов и активность. Там в основной таблице около 50 столбцов, да еще и подзапросы во всю юзаются. И не че летает.
Всем спасибо!
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Старый 19.08.2007, 14:20   #7
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 447
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Wink Посмотреть сообщение
Скорость работы в основном будет зависеть от вида запросов к этой базе. Не думаю, что в каком-то запросе чтения вдруг понадобятся сразу 60 колонок одновременно.
А операции записи в эту базу как часто выполняться будут? Имеет смысл отделить часто модифицируемые части от статических.
В том то и дело, что одновременно считываться будет 40% запросов.
Записывать в 4 столбца 50% запросов. Активность таблицы очень большая. Есть еще идея часть задач переложить на php в виде
$value = "val1|val2|val3|val4";
и implode юзать, а $value хранить в одном поле.
Так можно уменьшить число колонок до 30, вот только опять вопрос в производительности. Не выйдет ли то на то...
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Старый 19.08.2007, 14:51   #8
Мастер
 
Аватар для Sasa
 
Регистрация: 21.06.2007
Адрес: Москва
Сообщений: 506
Вес репутации: 232
Sasa скоро станет известенSasa скоро станет известен
Отправить сообщение для Sasa с помощью ICQ
По умолчанию

Цитата:
Сообщение от LIGHT Посмотреть сообщение
Есть еще идея часть задач переложить на php в виде
$value = "val1|val2|val3|val4";
и implode юзать, а $value хранить в одном поле.
1) вот этого бы я делать не стал, или точнее в посл очередь
я верю что СУБД лучше соптимизирует все внутри себя

2) а вообще мы пытаемся рассуждать про задачу о которой ничего не знаем

3) и обсуждаем оптимизацию неизвестной нам СУБД, есть мнение что они бывают разные ...
__________________
Sasa
Sasa вне форума   Ответить с цитированием
Старый 19.08.2007, 16:42   #9
Banned
 
Регистрация: 17.04.2007
Адрес: Москва
Сообщений: 466
Вес репутации: 0
Alex007 - как роза среди колючекAlex007 - как роза среди колючекAlex007 - как роза среди колючек
По умолчанию

Цитата:
Сообщение от Sasa Посмотреть сообщение
2) а вообще мы пытаемся рассуждать про задачу о которой ничего не знаем

3) и обсуждаем оптимизацию неизвестной нам СУБД, есть мнение что они бывают разные ...
Я поэтому и не стал советовать. Оптимизация непонятной БД - нетривиальная задача, а мои телепаты в отпуске.
Alex007 вне форума   Ответить с цитированием
Старый 19.08.2007, 17:59   #10
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 447
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Alex007 Посмотреть сообщение
Я поэтому и не стал советовать. Оптимизация непонятной БД - нетривиальная задача, а мои телепаты в отпуске.
Ну как же я сказал таблица будет дико большое 1Млн записей это минимум дальше в верх, база основная значит каждый вызов странички вызывает таблицу. Вызовов в час более 10.000 дальше вверх.
Какие еще параметры тут можно добавить.
Естественно нужно с запасом на будущее X100
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 02:41.