SQL 2016 – NOVIDADES
Roberto Fonseca
rffonseca@outlook.com
Rffonseca.wordpress.com
O QUEVAMOSVER:
NOVIDADES – SQL 2016
 ColumnStore
 In-Memory OLTP
 Query Store
 TemporalTables
 Always Encrypted
 Stretch Database
 Live Query Statistics
 Dynamic Data Masking
O QUE NÃOVAMOSVER
 Reporting Services
 Analysis Services
 Integration Services
 Acompanhe os CTPs (atual CTP 3.3)
 Mais informações:
https://www.microsoft.com/pt-br/evalcenter/evaluate-sql-server-2016
http://bit.ly/sql2016-whats-new
http://bit.ly/1SQ6kYd
COMOTESTAR O SQL 2016?
 AzureTrial
 Download ISO 180 dias
 Assinante MSDN? Grátis para
testes
 Vários previews disponíveis.
 Porquê não?
COLUMNSTORE IMPROVEMENTS
Armazena dados de colunas ao invés de linhas
nas páginas de dados
Altamente compactado
AltaVelocidade
Whitepaper:
http://bit.ly/sql2016-columnstore
Columnstore Index Feature
SQL Server
2012
SQL Server
2014
SQL Server
2016 (CTP2)
Azure SQL
Database
Batch execution for multi-threaded queries yes yes yes yes
Batch execution for single-threaded queries yes yes
Archival compression option. yes yes yes
Snapshot isolation and read-committed snapshot isolation yes yes
Specify columnstore index when creating a table. yes yes
AlwaysOn supports columnstore indexes. yes yes yes yes
AlwaysOn readable secondary supports read-only columnstore indexes. yes yes yes yes
AlwaysOn readable secondary supports updateable columnstore indexes. yes
Read-only nonclustered columnstore index on heap or btree. yes yes yes
1
yes
1
Updateable nonclustered columnstore index on heap or btree yes yes
Additional btree indexes allowed on a heap or btree that has a columnstore index. yes yes yes yes
Updateable clustered columnstore index. yes yes yes
Btree index on a clustered columnstore index. yes yes
Columnstore index on a memory-optimized table. Yes!
Nonclustered columnstore index definition supports using a filtered condition. yes yes
IN MEMORY OLTP MELHORADO
• Tamanho máximo para uma tabela in memory passa de 256MB para 2TB
• Não há mais a obrigatoriedade de ter Collations BIN2 (mas não tem tanta performance)
• ALTERTABLE pode ser utilizado em in memory-optimized tables para adicionar,
remover ou alterar colunas ou índices.
• ALTER PROCEDURE pode ser utilizado em stored procedures compiladas nativamente
• Stored procedures compiladas nativamente agora permitem sintaxes mais complexas
(LEFT/RIGHT JOIN, SELECT DISTINCT, Subqueries, UNION/UNION ALL, all math
functions)
• Limitação deTDE não existe mais
• Réplicas AlwaysOn vêem mudanças imediatamente.
• Garbage collection melhorado
IN MEMORY OLTP
Whitepaper:
http://bit.ly/sql2016-in-memory-oltp
Aaron Bertrand Blog:
http://sqlperformance.com/2015/05/sql-server-
2016/in-memory-oltp-enhancements
COLUMNSTORE + IN MEMORY OLTP
= OPERATIONAL ANALYTICS
 Índices In-memory, atualizáveis, non-clustered columnstore sobre
tabelas in-memory ou em disco
 Transparente para aplicações
 Minimiza impacto nas bases OLTP
 Learn more:
 Sunil Agarwal on Data Exposed:
https://channel9.msdn.com/Shows/Data-Exposed/SQL-Server-
2016-Operational-Analytics
 Sunil’s Ignite 2015 Presentation:
http://channel9.msdn.com/Events/Ignite/2015/BRK4552
OPERATIONAL ANALYTICS
Índice Btree
Tabela HOT
NCCI
atualizável
Dados
HOTDados WARM
QUERY STORE
 Problemas ao resolver problemas de
performance
 Plan cache não é totalmente adequado
(Somente o plano atual é mantido)
 Tempo gasto para descobrir o problema é
longo
 Tempo para solucionar o problema é longo
(Modifico a query? Plan guide?)
 Flight Data Recorder (Caixa Preta do SQL) –
Coleta texto e propriedades importantes de
cada query executada.
 Funciona com restarts/upgrades/recompiles
do SQL
 Usuário escolhe o tempo de dados
armazenados
 Possibilidade de forçar o plano de execução
escolhido de forma simples
TEMPORALTABLES
 Capacidade de acompanhar as
modificações nos dados com o
passar do tempo
 Não muda nada para as
aplicações
TEMPORALTABLES
ALWAYS ENCRYPTED
 Dados sempre
criptografados
 Melhor queTDE porque
estão criptografados mesmo
para sysadmins
 Usuários não autorizados
nunca tem acesso aos dados
ou às chaves
 Transparente para as
aplicações
 Requer .Net 4.6!
 Source (MSDN Blog):
http://bit.ly/sql2016-always-
encrypted-walkthru
COMO FUNCIONA
SQL Server or SQL Database
ADO .NET
4.6 Result SetResult Set
Client
dbo.Customers
Criptografado
"SELECT Name FROM Customers WHERE SSN = @SSN",
"111-22-3333"
trust boundary
"SELECT Name FROM Customers WHERE SSN = @SSN",
0x7ff654ae6d
Criptografado
STRETCH DATABASE
 Tabelas OLTP
“esticadas” do
ambiente on-
premises para Azure
 Custo vantajoso para
dados históricos
 Tabela ativa e
disponível
 Transparente para
aplicações
 Queries não mudam.
O SQL combina
dados locais e dados
na nuvem.
LIVE QUERY STATISTICS
 Coleta de métricas em tempo
de execução
 Uso de CPU/Memória, tempo,
progresso da query
 Identificação de gargalos de
performance
 Permite drilldown nas
estatísticas
 Número de linhas
 Tempo decorrido
 Progresso
 Alertas
DYNAMIC DATA MASKING
 Proteção efetiva para dados sensíveis na
camada de aplicação. Não protege
dados para admins ou para usuários
com direito de SELECT
 Configuração simplificada
 Baseado em políticas em nível de tabela
e colunas para um grupo definido de
usuários
 Mascaramento de dados aplicado em
tempo real para os resultados das
queries.
FOR JSON (JAVA SCRIPT OBJECT NOTATION)
 Formato popular usado
para troca de dados
entre aplicações
 Também utilizado para
armazenamento de
dados não-
estruturados em bases
NoSQL como o
Microsoft Azure
DocumentDB
PERGUNTAS?
Roberto Fonseca
rffonseca@outlook.com
http://rffonseca.wordpress.com

Novidades do Sql Server 2016

  • 1.
    SQL 2016 –NOVIDADES
  • 2.
  • 3.
    O QUEVAMOSVER: NOVIDADES –SQL 2016  ColumnStore  In-Memory OLTP  Query Store  TemporalTables  Always Encrypted  Stretch Database  Live Query Statistics  Dynamic Data Masking
  • 4.
    O QUE NÃOVAMOSVER Reporting Services  Analysis Services  Integration Services  Acompanhe os CTPs (atual CTP 3.3)  Mais informações: https://www.microsoft.com/pt-br/evalcenter/evaluate-sql-server-2016 http://bit.ly/sql2016-whats-new http://bit.ly/1SQ6kYd
  • 5.
    COMOTESTAR O SQL2016?  AzureTrial  Download ISO 180 dias  Assinante MSDN? Grátis para testes  Vários previews disponíveis.  Porquê não?
  • 6.
    COLUMNSTORE IMPROVEMENTS Armazena dadosde colunas ao invés de linhas nas páginas de dados Altamente compactado AltaVelocidade Whitepaper: http://bit.ly/sql2016-columnstore
  • 7.
    Columnstore Index Feature SQLServer 2012 SQL Server 2014 SQL Server 2016 (CTP2) Azure SQL Database Batch execution for multi-threaded queries yes yes yes yes Batch execution for single-threaded queries yes yes Archival compression option. yes yes yes Snapshot isolation and read-committed snapshot isolation yes yes Specify columnstore index when creating a table. yes yes AlwaysOn supports columnstore indexes. yes yes yes yes AlwaysOn readable secondary supports read-only columnstore indexes. yes yes yes yes AlwaysOn readable secondary supports updateable columnstore indexes. yes Read-only nonclustered columnstore index on heap or btree. yes yes yes 1 yes 1 Updateable nonclustered columnstore index on heap or btree yes yes Additional btree indexes allowed on a heap or btree that has a columnstore index. yes yes yes yes Updateable clustered columnstore index. yes yes yes Btree index on a clustered columnstore index. yes yes Columnstore index on a memory-optimized table. Yes! Nonclustered columnstore index definition supports using a filtered condition. yes yes
  • 8.
    IN MEMORY OLTPMELHORADO • Tamanho máximo para uma tabela in memory passa de 256MB para 2TB • Não há mais a obrigatoriedade de ter Collations BIN2 (mas não tem tanta performance) • ALTERTABLE pode ser utilizado em in memory-optimized tables para adicionar, remover ou alterar colunas ou índices. • ALTER PROCEDURE pode ser utilizado em stored procedures compiladas nativamente • Stored procedures compiladas nativamente agora permitem sintaxes mais complexas (LEFT/RIGHT JOIN, SELECT DISTINCT, Subqueries, UNION/UNION ALL, all math functions) • Limitação deTDE não existe mais • Réplicas AlwaysOn vêem mudanças imediatamente. • Garbage collection melhorado
  • 9.
    IN MEMORY OLTP Whitepaper: http://bit.ly/sql2016-in-memory-oltp AaronBertrand Blog: http://sqlperformance.com/2015/05/sql-server- 2016/in-memory-oltp-enhancements
  • 10.
    COLUMNSTORE + INMEMORY OLTP = OPERATIONAL ANALYTICS  Índices In-memory, atualizáveis, non-clustered columnstore sobre tabelas in-memory ou em disco  Transparente para aplicações  Minimiza impacto nas bases OLTP  Learn more:  Sunil Agarwal on Data Exposed: https://channel9.msdn.com/Shows/Data-Exposed/SQL-Server- 2016-Operational-Analytics  Sunil’s Ignite 2015 Presentation: http://channel9.msdn.com/Events/Ignite/2015/BRK4552
  • 11.
    OPERATIONAL ANALYTICS Índice Btree TabelaHOT NCCI atualizável Dados HOTDados WARM
  • 12.
    QUERY STORE  Problemasao resolver problemas de performance  Plan cache não é totalmente adequado (Somente o plano atual é mantido)  Tempo gasto para descobrir o problema é longo  Tempo para solucionar o problema é longo (Modifico a query? Plan guide?)  Flight Data Recorder (Caixa Preta do SQL) – Coleta texto e propriedades importantes de cada query executada.  Funciona com restarts/upgrades/recompiles do SQL  Usuário escolhe o tempo de dados armazenados  Possibilidade de forçar o plano de execução escolhido de forma simples
  • 13.
    TEMPORALTABLES  Capacidade deacompanhar as modificações nos dados com o passar do tempo  Não muda nada para as aplicações
  • 14.
  • 15.
    ALWAYS ENCRYPTED  Dadossempre criptografados  Melhor queTDE porque estão criptografados mesmo para sysadmins  Usuários não autorizados nunca tem acesso aos dados ou às chaves  Transparente para as aplicações  Requer .Net 4.6!  Source (MSDN Blog): http://bit.ly/sql2016-always- encrypted-walkthru
  • 16.
    COMO FUNCIONA SQL Serveror SQL Database ADO .NET 4.6 Result SetResult Set Client dbo.Customers Criptografado "SELECT Name FROM Customers WHERE SSN = @SSN", "111-22-3333" trust boundary "SELECT Name FROM Customers WHERE SSN = @SSN", 0x7ff654ae6d Criptografado
  • 17.
    STRETCH DATABASE  TabelasOLTP “esticadas” do ambiente on- premises para Azure  Custo vantajoso para dados históricos  Tabela ativa e disponível  Transparente para aplicações  Queries não mudam. O SQL combina dados locais e dados na nuvem.
  • 18.
    LIVE QUERY STATISTICS Coleta de métricas em tempo de execução  Uso de CPU/Memória, tempo, progresso da query  Identificação de gargalos de performance  Permite drilldown nas estatísticas  Número de linhas  Tempo decorrido  Progresso  Alertas
  • 19.
    DYNAMIC DATA MASKING Proteção efetiva para dados sensíveis na camada de aplicação. Não protege dados para admins ou para usuários com direito de SELECT  Configuração simplificada  Baseado em políticas em nível de tabela e colunas para um grupo definido de usuários  Mascaramento de dados aplicado em tempo real para os resultados das queries.
  • 20.
    FOR JSON (JAVASCRIPT OBJECT NOTATION)  Formato popular usado para troca de dados entre aplicações  Também utilizado para armazenamento de dados não- estruturados em bases NoSQL como o Microsoft Azure DocumentDB
  • 21.
  • 22.

Notas do Editor

  • #11 Exemplo de Pedidos – Hot/Warm Clientes querem fazer Análise sobre os dados operacionais (OLTP) Atualmente é feito um ETL para um DW e a análise é feita com esses dados. Entretanto, clientes querem mais, querem fazer análise imediata. Se fizer ETL e análise com menor tempo pode causar problemas de performance na base OLTP. Operational Analytics permite criar um NCCI e separar dados hot/warm baseado em um (critério) predicado permitindo grande performance mesmo em bases OLTP. Melhor dos dois mundos: OLTP continua com excelente performance vendendo para a empresa e o Operational Analytics para análises de vendas mas com muito mais velocidade, porque são dados quase real-time. Porque esperar pelo ETL e processamento se eu posso analisar dados em quase real-time?
  • #12 Exemplo de Pedidos – Hot/Warm Clientes querem fazer Análise sobre os dados operacionais (OLTP) Atualmente é feito um ETL para um DW e a análise é feita com esses dados atrasados. Entretanto, clientes querem mais, querem fazer análise imediata. Pode fazer ETL e análise com menor tempo, mas isso pode causar problemas de performance na base OLTP. Operational Analytics permite criar um NCCI e separar dados hot/warm baseado em um (critério) predicado permitindo grande performance mesmo em bases OLTP. Melhor dos dois mundos: OLTP continua com excelente performance vendendo para a empresa e o Operational Analytics para análises de vendas mas com muito mais velocidade para o negócio, porque são dados quase real-time. Porque esperar pelo ETL e processamento se eu posso analisar dados em quase real-time?
  • #13 Armazena todas as informações relacionado a objetos acessados pela base (SP, triggers, queries, fucntions) Cada plano criado é armazenado juntamente com as estatísticas de compilação. Performance metrics são calculadas e armazenadas.