оптимизация базы данных sql сервера - PullRequest
3 голосов
/ 09 декабря 2010

В моей базе данных есть одна очень большая таблица с более чем 2 миллиардами строк с 3 столбцами.Id (uniqueidenity), Type (int, между 0-10. 0 = наиболее часто используемые. 10 = наименее используемые), Data (двоичные данные между 1-10MB)

Как можно оптимизировать эту базу данных?(в первую очередь запросы на выборку)

* Примечание: я мог бы добавить еще несколько столбцов к этой таблице позже (например, местоположение, дата ...)

Ответы [ 2 ]

5 голосов
/ 09 декабря 2010

Предполагая, что столбец id является ключом кластеризованного индекса, и предполагая, что под uniqueidentity вы подразумеваете uniqueidentifier:

  • вам нужен тип uniqueidentifier? Зачем?
  • Какие еще альтернативы вы рассматривали?
  • Заполняете ли вы данные с помощью последовательных идентификаторов GUID или нет?

GUID - это заведомо неудачный выбор для кластерных ключей. См. GUID как ПЕРВИЧНЫЕ КЛЮЧИ и / или ключ кластеризации для более подробного обсуждения:

Но GUID, который не является последовательным - как тот, который имеет свои ценности генерируется в клиенте (с использованием .NET) ИЛИ, сгенерированный функцией newid () (в SQL Server) может быть ужасно плохо выбор - в первую очередь из-за фрагментация, которую он создает в базовый стол, но и из-за его размер. Это излишне широкий (это 4 в разы шире, чем основанная на Int идентичность - который может дать вам 2 миллиарда (на самом деле, 4 миллиарда) уникальных строк). А также, если вам нужно более 2 миллиардов всегда можно пойти с большой буквы (8 байт int) и получить 2 ^ 63-1 строки

Также читайте Дисковое пространство дешево ... Не в этом дело! в качестве продолжения.

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

Вы уже проделали какую-либо работу по выявлению проблем? Если нет, начните с Ожидания и очереди , проверенной методики выявления узких мест в производительности. Как только вы измерите и найдете места, которые нуждаются в улучшении, мы можем посоветовать, как улучшить.

1 голос
/ 09 декабря 2010
  • Добавить индекс (ы). Решите, какие столбцы являются наиболее подходящим кластерным индексом.

  • Решите, является ли целесообразным использование базы данных 10 МБ двоичных данных в каждой (в противном случае небольшой) строке

[Обновлено в ответ на комментарий Ремуса]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...