Спецификации компьютера для большой базы данных
Какие технические характеристики компьютера (ЦП, ОЗУ, скорость диска) следует использовать для выполнения запросов к базе данных, содержащей более 200 миллионов записей? Запросы предназначены для исследовательского проекта, поэтому существует только один "пользователь", и одновременно будет выполняться только один запрос.
Я попробовал это на своем ноутбуке с SQL Server с процессором i3, 2 ГБ оперативной памяти, диском 5400 об / мин, и простой запрос не завершился даже после 8+ часов. У меня есть возможность подключить SSD через eSata и обновить до 4 ГБ ОЗУ, но я не уверен, что этого будет достаточно...
Спасибо!
Изменить: база данных составляет около 25 ГБ, и индексы не настроены должным образом. Когда я попытался добавить индекс, я дал ему поработать около 8 часов, но он все еще не закончился, поэтому я сдался. Должен ли я иметь больше терпения:)?
В общем, запросы будут запускаться время от времени, и это нормально, даже если на это уйдет пара часов....
Кроме того, запросы будут производить около 10 миллионов записей, которые мне нужно обработать с использованием Stata/Matlab, и я обеспокоен тем, что мой нынешний ноутбук недостаточно силен, но не уверен в узком месте...
2 ответа
Спецификация оборудования для огромной базы данных невероятно сложно понять. У нас есть несколько больших баз данных (9M+ записей в некоторых таблицах) и одна огромная база данных (300M+ записей в большинстве таблиц), и даже для нас это было немного хитом.
Но такая же важная вещь, как и спецификации оборудования, - это схема вашей базы данных, и, как упомянула Ира, индексы играют главную роль в этом сценарии.
Создание индекса займет гораздо больше времени, чем 8 часов, и таблица должна быть полностью разблокирована, поскольку создание индекса блокирует всю таблицу. Индекс, создание которого занимает много времени, часто является признаком заблокированной таблицы, поэтому убедитесь, что больше ничего не использует базу данных, когда вы пытаетесь это сделать.
Что усложнит вам в этом сценарии скорость вашего диска. Одиночный жесткий диск 5400 об / мин (я видел ноутбуки с еще более низкой скоростью вращения шпинделя, 5400 достаточно хорошо для ноутбука) займет намного больше времени, чтобы загрузить данные в кэш для индексации, чем диск с 15000 об / мин. Для сравнения, наш SQL-сервер имеет 14x 15 000 об / мин дисков (в общей сложности 210 000 об / мин или колоссальную 38-кратную скорость вращения шпинделя, и я бы предположил, что в реальной жизни скорость доступа может быть в 50 раз выше), и я ожидал бы создать индекс для 200 миллионов записей заняли бы больше часа.
Итак, возьмите этот SSD, если можете. Это поможет резко. Прирост производительности одного SSD по сравнению со скоростью 5400 об / мин слишком велик для измерения.
Если вы можете, получите 4 ГБ оперативной памяти. Это не только поможет вашей скорости SQL-сервера (не так сильно, как SSD, но все равно поможет), но и из моего (краткого) опыта работы с Matlab, это тоже поможет.
Вы не жаловались на то, сколько времени ушло на заполнение БД 200 миллионами записей, поэтому я пришел к выводу, что ваш ноутбук достаточно быстрый.
Базы данных работают, потому что они хранят записи данных с определенными "ключевыми" полями, индексированными для обеспечения быстрого доступа. (В противном случае каждый запрос должен был бы читать каждую запись каждый раз, а чтение 25 Гб занимает много времени).
Если ваш запрос должен давать скромное количество результатов (скажем, 10K записей), я предполагаю, что ваша проблема заключается в том, что ваши записи не проиндексированы основным элементом запроса.