В настоящее время я разрабатываю базу данных для использования в нашей компании. Мы используем SQL Server 2008. В базе данных будут храниться данные, собранные от нескольких клиентов. Целью базы данных является получение совокупных контрольных показателей по нескольким клиентам.Дизайн базы данных: один огромный стол или отдельные таблицы?
В последнее время я беспокоюсь о том, что один стол, в частности, будет очень большим. Каждый клиент имеет приблизительно 20 000 000 рядов данных, и в базе данных в ближайшее время будет 30 клиентов (если не больше). В этой таблице будет сделано много запросов. Я уже замечаю проблемы с производительностью, и пользователи временно заблокированы.
Мой вопрос: сможем ли мы справиться с этой таблицей в будущем или лучше разбить эту таблицу на меньшие таблицы для каждого клиента?
Update: Прошло уже около полугода, так как мы впервые создали таблицы. Следуя советам ниже, я создал несколько огромных таблиц. С тех пор я был experimenting with indexes и принял решение о кластеризованном индексе в первых двух столбцах (код больницы и код отдела), на котором мы разделили бы таблицу, если бы у нас была Enterprise Edition. Эта настройка работала нормально до недавнего времени, как предсказал Галвегян, возникают проблемы с производительностью. Восстановление индекса занимает много времени, пользователи блокируют друг друга, запросы часто занимают больше времени, чем требуется, и для большинства запросов он рассчитывает сначала скопировать соответствующую часть данных в временную таблицу, создать индексы в таблице temp и запустить запрос. Это не так, как должно быть. Поэтому мы рассматриваем возможность покупки Enterprise Edition для использования секционированных таблиц. Если покупка не может пройти, я планирую использовать workaround to accomplish partitioning in Standard Edition.
Для ваших блокировок вы указываете подсказку запроса NOLOCK на свои инструкции SELECT? –
Пока нет, но сейчас буду. Благодарю. – thomaspaulb
С другой стороны, я, вероятно, не буду, учитывая некоторые данные, которые я нашел по этому вопросу, и обсуждение ниже. – thomaspaulb