Масштабирование Microsoft SQL Server для многомиллиардной таблицы строк - PullRequest
1 голос
/ 05 июня 2019

Вызов всех гуру MSSQL-сервера!В настоящее время я работаю над проектом, который включает таблицу со следующим макетом:

[DbNodeClosures]

  • [Id] BIGINT PRIMARY KEY IDENTITY NOT NULL,

  • [ParentID] BIGINT NOT NULL,

  • [ChildID] BIGINT NOT NULL,

  • [Глубина] INT NOT NULL

Эта таблица закрытия используется для хранения родительских и дочерних отношений и в настоящее время имеет следующие индексы:

[IX_DbNodeClosures_ParentID] ON [dbo]. [DbNodeClosures] ([ParentID])

[IX_DbNodeClosures_ChildID] ON [dbo]. [DbNodeClosures] ([ChildID]) ВКЛЮЧИТЬ ([Depth], [ParentID])

[IX_DbNodeClosures_ParentID-ChildID][dbo]. [DbNodeClosures] ([ParentID], [ChildID]) INCLUDE ([Depth])

Запросы к этой таблице обычно включают запрос всех идентификаторов детей с использованием parentID или наоборот.Строки в этой таблице только вставляются или удаляются, но не обновляются.В настоящее время у нас это работает, и с 600 миллионами строк производительность все еще остается превосходной, однако мы собираемся перейти к периоду миграции, когда это число превысит 1,2 миллиарда строк и со временем потенциально вырастет до 30+ миллиардов строк.При 600 миллионах строк текущая таблица, включая индексы, занимает около 30 ГБ памяти на нашем сервере SQL.

Итак, теперь реальные вопросы:

Насколько хорошо это масштабируется?

Будет ли снижаться производительность запросов при увеличении количества строк?

Будет ли производительность при вставке и удалении значительно снижаться при увеличении количества строк?

Я изучал такие варианты, как разбиение таблиц (доступно во всех версиях MSSQL server 2016+) и индексы ColumnStore, но у меня нет реального опыта работы с ними и не имею реального опыта работы с масштабированиемтаблица MSSQL для миллиардов строк.(И да, мы рассматриваем оптовый переход на NOSQL для его преимуществ масштабирования, но это будет непомерно дорого с точки зрения стоимости разработки) Я видел, что другие (NASDAQ) могут получать квинтиллионы строк, поэтому я думаю,это возможно, и я надеюсь, что кто-то, кто имеет опыт в этой области, может дать некоторое представление о том, что он увидел, в том, что касается производительности и масштабирования SQL-сервера на этих уровнях.Спасибо за любые мысли!

1 Ответ

1 голос
/ 05 июня 2019

Выглядит как возможное приложение для базы данных SQL Graph

FWIW У нас гораздо более широкие таблицы с миллиардами строк в одной из наших производственных систем, и все работает довольно хорошо.

...