2016-10-03 2 views

ответ

3

Clustered Columnstore Index - это новая функция в SQL Server 2014. Индекс столбцов позволяет хранить данные в столбчатом формате вместо традиционного хранилища на основе строк. Индексы хранилища столбцов (некластеризованные) были первоначально введены в SQL 2012 для удовлетворения высокой производительности запросов при больших требованиях к объему, типичных для хранилища данных/отчетности.

Основные пункты:

  1. Он хранит данные в столбчатую структуру данных, которая помогает читает очень быстро. Сохраняет данные в сжатом формате и, следовательно, ваша общая стоимость ввода-вывода будет минимальной.
  2. Структура данных столбца представляет собой ту же структуру данных, в которой данные и индексы хранятся в отличие от данных, хранящихся отдельно, и индексов, хранящихся отдельно и т. Д.,
  3. Это будет очень полезно для большей таблицы столбцов, где вы выбираете только ограниченные столбцы ежедневно, для Например, если есть таблица ProductSalesFact, вы обычно выбираете для этого продукта то, что является количеством продаж, или для этого квартала, что такое продажи и т. д. Несмотря на то, что у него есть сотни столбцов, он имеет доступ только к двум требуемым столбцам.

Мой блог на индекс columnstore, которые обеспечивают производительность исследования 300 миллионов записей с columnstore против rowstore

https://sqlserver101.wordpress.com/2016/01/25/why-clustered-columnstore-index-in-sql-server-2014/

MSDN ссылка для различных версий columnstore и путей:

https://msdn.microsoft.com/en-us/library/dn934994.aspx

2

Предполагая таблица, как показано ниже с col1 в качестве первичного ключа

col1 col2 col3 
1  2  3 
4  5  6 

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

row1 1 2 3--page1 
    row2 4 5 6--page2 

поэтому, когда вы хотите прочитать что-то вроде sum (col3), SQLServer должен будет прочитать страницу1, чтобы получить 3 и 6, это стоимость двух страниц.

Теперь с индексами хранилища столбцов, та же таблица будет храниться как ниже

page1 page2 page3 
1  2  3 
4  5  6 

Теперь, если вы хотите, чтобы сделать сумму col3, он просто должен прочитать одну страницу (PAGE3)

Преимущества использования колонки магазина индексов, вы можете коснуться только нужные страницы с диска .Memory является также эффективно используется, поскольку вы не будете хранить ненужные данные

2

Индекс Columnstore очень хорошо объясняется здесь: http://www.patrickkeisler.com/2014/04/what-is-non-clustered-columnstore-index.html

Традиционного кластерного и некластерного индекс вы упомянули оба rowstore индекса, где база данных хранит индекс построчно.Индекс будет распространяться по нескольким разделам, поэтому даже когда мы выбираем только один столбец, базе данных все равно придется сканировать все разделы, чтобы получить данные, следовательно, сделать много операций ввода-вывода.

С другой стороны, индекс Columnstore хранит столбец индекса по столбцу. Обычно это будет иметь все данные столбца, хранящиеся в одном разделе, поскольку все данные одного столбца объединены не так велики. Теперь, когда мы выбираем 1 столбец из индекса, база данных может возвращать данные из одного раздела, что уменьшает количество операций ввода-вывода. Более того, индекс столбцов часто имеет значительную степень сжатия, поэтому ввод-вывод еще более эффективен, и весь индекс может быть сохранен в памяти, что позволяет быстрее делать запросы от 10x до 100x.

Индекс Columnstore не всегда лучше, чем rowstore. Индекс Columnstore подходит для сценариев, таких как хранилище данных и BI, где данные часто обрабатываются массово, например, для агрегатов. Однако он работает хуже, чем индекс rowstore в сценариях, где данные часто просматриваются в отдельных строках.

Одно Заслуживает внимания то, что некластерный индекс columnstore блокирует таблицу от изменения (но есть некоторые обходные решения, чтобы изменить данные), в то время как кластерный columnstore индекс по-прежнему позволяет редактировать данных без отбрасывания или отключения индекса.

Для получения дополнительной информации по этой теме, пожалуйста, обратитесь к статье выше, а также попробуйте прочитать документы MSDN.

Смежные вопросы