Leggendo sull'indice di archivio di colonne in cluster in SQL Server 2014, mi chiedo se avere una tabella con un numero enorme di colonne sia ancora un anti-pattern. Attualmente per alleviare il problema di avere una singola tabella con un sacco di colonne, sto usando vertical partitioning ma avendo a disposizione un indice di archivio di colonne cluster questo non dovrebbe essere necessario. È corretto o mi manca qualcosa?Una tabella con molte colonne mantiene ancora un anti-pattern quando si utilizza l'indice di archiviazione delle colonne in cluster in SQL Server 2014?
Esempio: consente di dare ad esempio il registro dei contatori delle prestazioni, i dati grezzi possono avere la seguente struttura:
╔══════════════════╦═══════╦═══════╦═════╦═════╦═════╦══════════╗ ║ Time ║ Perf1 ║ Perf2 ║ ... ║ ... ║ ... ║ Perf1000 ║ ╠══════════════════╬═══════╬═══════╬═════╬═════╬═════╬══════════╣ ║ 2013-11-05 00:01 ║ 1 ║ 5 ║ ║ ║ ║ 9 ║ ║ 2013-11-05 00:01 ║ 2 ║ 9 ║ ║ ║ ║ 9 ║ ║ 2013-11-05 00:01 ║ 3 ║ 2 ║ ║ ║ ║ 9 ║ ║ 2013-11-05 00:01 ║ 4 ║ 3 ║ ║ ║ ║ 9 ║ ╚══════════════════╩═══════╩═══════╩═════╩═════╩═════╩══════════╝
Avere un tavolo con 1000 colonne è male, perché una fila sarà più probabilmente più di una pagina, perché di solito è improbabile che uno sia interessato a tutte le misure ma la query incorrerà sempre nel costo di I/O, ecc. ecc. Per risolvere questo partizionamento verticale di solito aiuta, per esempio si potrebbe contatori delle prestazioni delle partizioni in diverse tabelle per categoria (CPU, RAM, ecc.).
Viceversa avendo tale tabella come indice negozio colonna cluster non dovrebbe essere un problema in quanto i dati vengono memorizzati colonna-saggio e IO coinvolti per ogni query saranno circa solo le colonne richieste, nient'altro indipendentemente dal numero totale di colonne nella tabella.
Sì, sembra ragionevole in base a [questo] (http://msdn.microsoft.com/en-us/library/gg492088 (v = sql.120) .aspx), ma è probabilmente una di quelle domande che si può rispondere solo con un esperimento diretto. Sono più preoccupato del fatto che sembriamo perdere tutto ciò che assomiglia a un PK oa un indice univoco poiché l'indice columnstore in cluster '[i] è l'unico indice sulla tabella. Non può essere combinato con altri indici – criticalfix
Uno (forse minore) svantaggio è che la costruzione potrebbe richiedere più memoria [Quanta memoria è necessaria per creare un indice columnstore?] (Http://social.technet.microsoft.com/ wiki/contents/articles/3540.sql-server-columnstore-index-faq.aspx # CreateColumnstore) –