Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Работа с большим кол. записей (Максим) 20/08/2011 - 13:11:04
      Re: Работа с большим кол. записей (Akina) 21/08/2011 - 00:55:03

> Original message text:
> From: Максим - 20/08/2011 - 13:11:04
> Subject:Работа с большим кол. записей
> -----------------
> Всем привет. Проектирую БД. Встал вопрос о производительности.
>
> ---
>
> Сервер: MySQL
> Версия сервера: 5.0.51a
> Версия протокола: 10
> Кодировка: UTF-8 Unicode (utf8)
>
> Сразу хочу отметить, что все запросы к описанной ниже таблице будут выполняться через PHP-5.3.6 / PDO_MYSQL.
>
> Структура таблицы "values"
> value_option_id | INT | UNSIGNED | Уникальный
> value | VARCHAR(64)
>
> Если предположить, что таблица "values" содержит 50 млн. записей следующего вида:
> 1 | 6500
> 32 | Задний
> 53 | 407/4000
> 74 | 8
> 95 | 3.73
> 116 | -
> 137 | Винтовая пружина
> и т.д.
>
> Возникает вопрос о производительности выполнения последовательно около 50 запросов (такие группы запросов будут выполняться 500 000 раз за 24 часа, другими словами, это 25 млн. запросов в сутки) следующего типа:
> SELECT value FROM values WHERE value_option_id = 1;
> SELECT value FROM values WHERE value_option_id = 32;
> SELECT value FROM values WHERE value_option_id = 53;
> и т.д.
>
> Есть еще вариант запроса к таблице "values", он имеет следующий вид:
> SELECT value_option_id WHERE value = '6500' && value = 'Задний' [&& value = 'x'];
> Кол-во таких запросов за 24 часа, будет примерно 300 000.
>
> ---
>
> Имеет ли смысл таким образом проектировать БД при таком раскладе?
> Насколько серьезное потребуется железо для выполнения данных операций в короткие сроки (до 2 секунд группы из 50 запросов в первом варианте и до 2 секунд единичная выборка во втором варианте)?
> Да и вообще, реально ли это?
>
> Я понимаю, что тут можно обсуждать очень и очень приблизительно это дело, но все же...
> Буду рад любым советам и прочему материалу для размышления, как организовать подобный сервер БД.
>


From: Akina - 21/08/2011 - 00:55:03
Subject:Работа с большим кол. записей
-----------------
> Если предположить, что таблица "values" содержит 50 млн. записей

50 млн. записей в такой таблице займут менее 4 Гбайт. Это не так уж и много.

> Возникает вопрос о производительности выполнения последовательно около 50 запросов следующего типа:

Вместо пачки из 50 заппросов не разумнее ли один запрос вида

SELECT value FROM values WHERE value_option_id IN (1,32,53,...);

Кстати, а какова селективность этих запросов?
И что там у нас с индексами? в структуре они вообще не указаны. При наличии индекса по value_option_id отдельные запросы первого типа должны выполняться порядка десятков миллисекунд - т.е. скорость обработки скорее будет лимитирована скоростью трансфера данных в приложение, чем работой SQL-сервера.

> Имеет ли смысл таким образом проектировать БД

Да. Даже если это БД домашней булгахтерии.

> Насколько серьезное потребуется железо для выполнения данных операций

Любой сервер начального уровня имхо будет достаточен.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40129



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |