Neste artigo
ToggleHey guys!
Neste post mega esperado, vou comentar sobre as novidades que podemos esperar do SQL Server 2019, que há muito tempo deixou de ser um SGBD (Sistema Gerenciador de Banco de Dados) para se transformar em uma verdadeira plataforma de dados da Microsoft, unindo banco de dados, BI, Machine Learning e Big Data/Analytics.
Gostaria de ver novidades sobre as versões anteriores ?
Novidades do SQL Server 2019
O vídeo institucional no começo desse post já tem alguns destaques do SQL Server 2019 (as quais vou comentar logo abaixo) e que nos mostra como a Microsoft está de olho no mercado de Big Data e também, trazendo melhorias significativas para a sua plataforma de dados.
Transcrição do Vídeo – SQL Server 2019 + Polybase + Spark + Big Data + HDFS
Visualizar conteúdoCom o SQL Server 2019, você pode criar uma única camada de dados virtual acessível a quase todos os aplicativos. A virtualização de dados do Polybase lida com a complexidade de integrar todas as suas origens e formatos de dados sem exigir que você os replique ou mova. Você pode simplificar o gerenciamento de dados usando os Big Data Clusters do SQL Server 2019 implantados no Kubernetes. Cada nó de um Big Data Cluster inclui o mecanismo relacional do SQL Server, o armazenamento HDFS e o Spark, que permitem armazenar e gerenciar seus dados usando as ferramentas de sua escolha.
O SQL Server 2019 facilita a criação de aplicativos inteligentes com big data. Agora você pode executar tarefas do Spark para analisar dados estruturados e não estruturados, treinar modelos sobre dados de qualquer lugar com o SQL Server Machine Learning Services ou Spark ML e consultar dados de qualquer lugar usando uma rica experiência de notebook incorporada no Azure Data Studio. A corrente de dados não está diminuindo, mas não precisa afundar seus negócios. Navegue com o SQL Server 2019 e encurte a distância entre dados e ação.
Big Data + Analytics
Visualizar conteúdoVeja como podemos facilitar a eliminação de barreiras para a percepção de todos os seus dados, fornecendo uma visualização dos seus dados em toda a organização:
- Simplifique a análise de big data para usuários do SQL Server. O SQL Server 2019 facilita o gerenciamento de ambientes de big data. Ele vem com tudo o que você precisa para criar um data lake, incluindo HDFS e Spark fornecidos pela Microsoft e ferramentas de análise, todos profundamente integrados ao SQL Server e totalmente suportados pela Microsoft. Agora, você pode executar aplicativos, análises e IA sobre dados estruturados e não estruturados – usando consultas T-SQL familiares ou pessoas familiarizadas com o Spark podem usar Python, R, Scala ou Java para executar tarefas do Spark para preparação ou análise de dados. o mesmo cluster integrado.
- Ofereça aos desenvolvedores, analistas de dados e engenheiros de dados uma única fonte para todos os seus dados – estruturados e não estruturados – usando suas ferramentas favoritas. Com o SQL Server 2019, os cientistas de dados podem analisar facilmente os dados no SQL Server e no HDFS por meio dos trabalhos do Spark. Os analistas podem executar análises avançadas sobre big data usando o SQL Server Machine Learning Services: treinar grandes conjuntos de dados no Hadoop e operacionalizar no SQL Server. Os cientistas de dados podem usar uma nova experiência de notebook em execução no mecanismo de notebooks Jupyter em uma nova extensão do Azure Data Studio para realizar interativamente análises avançadas de dados e compartilhar facilmente a análise com seus colegas.
- Divida os silos de dados e forneça uma visualização em todos os seus dados usando a virtualização de dados. A partir do SQL Server 2016, o PolyBase permitiu que você executasse uma consulta T-SQL dentro do SQL Server para extrair dados de seu Data Lake e retorná-los em um formato estruturado – tudo sem mover ou copiar os dados. Agora, no SQL Server 2019, estamos expandindo esse conceito de virtualização de dados para fontes de dados adicionais, incluindo Oracle, Teradata, MongoDB, PostgreSQL e outras. Usando o novo PolyBase, você pode dividir silos de dados e combinar facilmente dados de várias fontes usando a virtualização para evitar o tempo, esforço, riscos de segurança e dados duplicados criados pela movimentação e replicação de dados. Novos “pools de dados” e “pools de dados” elasticamente escalonáveis tornam a consulta de dados virtualizados mais rápida, armazenando dados em cache e distribuindo a execução de consultas em muitas instâncias do SQL Server.
Melhorias de Performance
Visualizar conteúdo- A família de recursos do Intelligent Query Processing se baseia em recursos de ajuste de desempenho do Adaptive Query Processing do SQL Server 2017, incluindo feedback de concessão de memória no modo Row, COUNT DISTINCT aproximado, modo Batch no rowstore
- O suporte a memória persistente foi aprimorado nesta versão com um novo caminho otimizado de I/O, disponível para interação com o armazenamento de memória persistente.
- A infra-estrutura do Lightweight query profiling agora está habilitada por padrão para fornecer estatísticas do operador por consulta a qualquer momento e em qualquer lugar que você precisar.
- Mudanças na estimativa de linhas ao utilizar tabelas variáveis (compilação adiada de variável de tabela). Até o SQL Server 2019, o otimizador de consulta SEMPRE estimava 1 linha retornada ao utilizar variáveis do tipo tabela, gerando muitas vezes, operadores incorretos quando utilizados grandes massas de dados nesse tipo de objeto e tendo uma performance muito ruim. Isso fazia com que muitas pessoas utilizassem tabelas temporárias ou o hint OPTION (RECOMPILE) para evitar esse tipo de comportamento. Na versão 2019, o otimizador de consulta irá tentar estimar um número mais próximo do real, fazendo com que os resultados utilizando variáveis do tipo tabela sejam geralmente melhores que os resultados em versões anteriores. Para saber mais sobre essa novidade, veja este post do Brent Ozar
- Row mode memory grant feedback. O SQL Server 2017 introduziu o Row mode memory grant feedback, que é descrito em detalhes aqui. Essencialmente, para qualquer concessão de memória envolvida com um plano que envolva operadores de modo em lote, o SQL Server avaliará a memória usada pela consulta e a comparará à memória solicitada. Se a memória solicitada for muito baixa ou muito alta, levando a spills ou desperdício de memória, ela ajustará a concessão de memória associada ao plano de execução na próxima vez que for executada. Isso reduzirá a concessão para permitir uma concorrência maior ou aumentá-la para melhorar o desempenho.
Agora, também obtemos esse comportamento para as consultas no modo de linha, sob o nível de compatibilidade 150. Se uma consulta for encontrada em um disco, a concessão de memória será aumentada para execuções subseqüentes. Se a memória real usada pela consulta for menor que a metade da memória concedida, as solicitações de concessão subseqüentes serão menores. Brent Ozar entra em mais detalhes em seu post sobre Adaptive Memory Grants.
- Modo em lote sobre rowstore – Desde o SQL Server 2012, as consultas em tabelas com índices columnstore se beneficiaram dos aprimoramentos de desempenho do modo em lote. As melhorias acontecem devido ao processador de consultas executar processamento em lote em vez de linha por linha. As linhas também surgem do mecanismo de armazenamento em lotes e os operadores de troca de paralelismo podem ser evitados.
Sob o nível de compatibilidade 150, o SQL Server 2019 escolherá automaticamente o modo de lote em certos casos, mesmo quando não houver um índice de columnstore, que muitas vezes não pode ser criado por vários restrições técnicas e/ou conceituais, como por exemplo, falta de suporte à triggers
- Nova função de agregação APPROX_COUNT_DISTINCT – Essa nova função de agregação é projetada para cenários de data warehouse e é equivalente a COUNT (DISTINCT ()). Em vez de executar operações de classificação distintas dispendiosas para determinar as contagens reais, ela se baseia em estatísticas para obter algo relativamente preciso. Você deve descobrir que a margem de erro está dentro de 2% da contagem precisa em 97% do tempo, o que geralmente é suficiente para análises de alto nível e a economia de memória utilizada é bem considerável.
Resultados dos testes:
- Query-scoped compatibility level hints – Tem uma consulta específica que funciona melhor em um determinado nível de compatibilidade que não é o mesmo que o banco de dados atual? Agora você pode fazer isso com os novos query hints, suportando seis diferentes níveis de compatibilidade e cinco diferentes modelos de estimativa de cardinalidade. A seguir, os níveis de compatibilidade disponíveis, a sintaxe de exemplo e o modelo CE usado em cada caso. Você pode ver como isso pode afetar as estimativas, mesmo para as visualizações do catálogo do sistema:
Para visualizar todos os hints disponíveis, você pode consultar a DMV sys.dm_exec_valid_use_hints.
- Estimativas de compressão de índices columnstore – Nas versões atuais, o procedimento sys.sp_estimate_data_compression_savings tem uma verificação para o tipo de compressão (NONE, ROW e PAGE). No SQL Server 2019, essa verificação foi alterada para permitir o cálculo de estimativa dos índices columnstore.
Isso é uma ótima notícia, pois permite prever o impacto da adição de um índice columnstore a uma tabela que não possui nenhum, ou converter uma tabela ou partição no formato columnstore mais agressivo, sem precisar restaurar a tabela para outro sistema e realmente aplicar na prática para fazer essa análise.
- Nova função para recuperar informações da página – DBCC PAGE e DBCC IND foram usados por um longo tempo para reunir informações sobre as páginas que compõem uma partição, índice ou tabela. Mas eles são comandos não documentados e não suportados e podem ser muito tediosos para automatizar soluções em torno de problemas que envolvem mais de um índice ou página.
Junto veio sys.dm_db_database_page_allocations, uma função de gerenciamento dinâmico que retorna um conjunto representando todas as páginas no objeto especificado. Ainda não documentada, essa função exibe um problema de pushdown de predicado que pode ser um problema real em tabelas maiores: mesmo para obter as informações sobre uma única página, ele precisa ler toda a estrutura, o que pode ser bastante proibitivo.
O SQL Server 2019 introduz outro DMF, sys.dm_db_page_info. Isso retorna basicamente todas as informações em uma página, sem a sobrecarga das alocações DMF. Em versões atuais, no entanto, você já deve saber o número da página que está procurando para usar a função. Isso pode ser intencional, pois pode ser a única maneira de garantir o desempenho. Portanto, se você estiver tentando determinar todas as páginas em um índice ou tabela, ainda precisará usar as alocações DMF.
Segurança Avançada – Computação Confidencial
Visualizar conteúdoUm enclave é uma área protegida de memória na qual esses cálculos e filtragem podem ser delegados (no Windows, isso usa segurança baseada em virtualização) – os dados permanecem criptografados na engine, mas podem ser criptografados ou descriptografados, com segurança, dentro do enclave. Basta adicionar a opção ENCLAVE_COMPUTATIONS à chave mestra, o que você pode fazer no SSMS marcando a caixa de seleção “Allow enclave computations” ao criar a Master Key de uma coluna
No SQL Server 2019, há um novo comando para esses metadados, já disponível no Banco de Dados SQL do Azure, chamado ADD SENSITIVITY CLASSIFICATION. Isso permite que você faça o mesmo tipo de assistente do SSMS, mas as informações não são mais armazenadas como extended property, e qualquer acesso a esses dados é exibido automaticamente em auditorias em uma nova coluna XML chamada data_sensitivity_information. Contém todos os tipos de informações que foram acessadas durante o evento auditado.
Disponibilidade de missão crítica – alto tempo de uptime
Visualizar conteúdoExemplo de uso:
1 2 |
CREATE INDEX Idx01 ON dbo.Teste(Name) WITH (ONLINE = ON, RESUMABLE = ON, MAX_DURATION = 10 MINUTES); |
Melhor experiência de uso para desenvolvedores
Visualizar conteúdoNo SQL Server 2019, há novas collations para oferecer suporte nativo ao armazenamento de dados UTF-8 no SQL Server. Assim, você pode criar uma coluna char ou varchar para armazenar adequadamente dados UTF-8 usando novos agrupamentos com um sufixo _SC_UTF8, como Latin1_General_100_CI_AI_SC_UTF8. Isso pode ajudar a melhorar a compatibilidade com aplicativos externos e outras plataformas e sistemas de banco de dados, sem pagar as penalidades de desempenho e armazenamento do nvarchar.
Melhorias no Multiplataforma
Visualizar conteúdoSuporte ao SQL Server 2019 no Azure Data Studio
Visualizar conteúdoCada vez mais, esses usuários desejam usar as mesmas ferramentas para trabalhar juntos, sem interrupções, no local e na nuvem, usando dados relacionais e não estruturados, trabalhando com cargas de trabalho OLTP, ETL, analíticas e de fluxo contínuo.
O Azure Data Studio (antigo SQL Operations Studio) oferece uma experiência de editor moderna com IntelliSense ultrarrápido, code snippets, integração de código-fonte e um terminal integrado. Ele é projetado tendo em mente, um usuário da plataforma de dados, permitindo gerar gráficos e insights a partir das consultas realizadas, um bloco de anotações integrado e painéis personalizáveis. Desta forma, a Microsoft vem focando neste perfil no Azure Data Studio, e mantendo o SQL Server Management Studio voltado para o perfil de Administradores de Banco de Dados (DBAs)
O Azure Data Studio atualmente oferece suporte interno para o SQL Server local (On-premise) e também na nuvem (Azure SQL Database), além do suporte (ainda beta) para Azure Managed Instance e o Azure SQL Data Warehouse.
O Azure Data Studio está apresentando hoje, uma nova extensão preview para adicionar suporte a alguns recursos do SQL Server 2019. A extensão oferece conectividade e ferramentas para clusters de big data do SQL Server, incluindo uma prévia da primeira experiência ao recurso de anotações no conjunto de ferramentas do SQL Server e o novo assistente “PolyBase Create External Table”, que facilita o acesso a dados de instâncias remotas do SQL Server e do Oracle.
Para fazer o download do Azure Data Studio, clique neste link aqui.
Novas mensagens na sys.messages
Visualizar conteúdoEntre a extensa lista que mudanças e novidades nas mensagens, destaco algumas delas:
- 3911 – Persistent version store is full. New version(s) could not be added. A transaction that needs to access the version store may be rolled back. Please refer to BOL on how to increase database max size.
- 10661 – The refresh operation for all snapshot views failed because there was another refresh operation (either for all or a single snapshot view) in progress.
- 9113 – Warning: Creating and updating statistics will force FULL SCAN in this version of SQL Server. If persisting sample percent, persisted_sample_percent will be 100.
- 12112 – Warning: %ls statement is being forced to run WITH (%S_MSG = ON) because the ELEVATE_%S_MSG database scoped configuration is set to FAIL_UNSUPPORTED. The statement may fail. See the SQL Server error log for more information.
- 5871 – Cannot set the column encryption enclave type to Virtual Secure Mode (VSM) – the operating system does not support VSM.
- 2628 – String or binary data would be truncated in table ‘%.*ls’, column ‘%.*ls’. Truncated value: ‘%.*ls’.
Sim, você viu isso certo! Quem nunca perdeu preciosos minutos tentando identificar qual coluna e qual valor que estourou o limite de um campo varchar ? No SQL Server 2019 isso não deve acontecer mais (Obs: Fiz um teste e ainda acontece.. vamos aguardar a versão final).
Novos objetos de sistema e DMV’s
Visualizar conteúdoNovas Stored Procedures
- sys.sp_add_feature_restriction
- sys.sp_autoindex_cancel_dta
- sys.sp_autoindex_invoke_dta
- sys.sp_cloud_update_blob_tier
- sys.sp_configure_automatic_tuning
- sys.sp_diagnostic_showplan_log_dbid
- sys.sp_drop_feature_restriction
- sys.sp_execute_remote
- sys.sp_force_slog_truncation
- sys.sp_internal_alter_nt_job_limits
- sys.sp_rbpex_exec_cmd
- sys.sp_set_distributed_query_context
- sys.sp_set_session_resource_group
- sys.sp_showinitialmemo_xml
- sys.sp_xa_commit
- sys.sp_xa_end
- sys.sp_xa_forget
- sys.sp_xa_forget_ex
- sys.sp_xa_init
- sys.sp_xa_init_ex
- sys.sp_xa_prepare
- sys.sp_xa_prepare_ex
- sys.sp_xa_recover
- sys.sp_xa_rollback
- sys.sp_xa_rollback_ex
- sys.sp_xa_start
- sys.xp_copy_file
- sys.xp_copy_files
- sys.xp_delete_files
- sys.sp_change_repl_serverport
- sys.sp_getdistributorplatform
- sys.sp_MSget_server_portinfo
- sys.sp_MSset_repl_serveroptions
- sys.sp_persistent_version_cleanup
- sys.sp_persistent_version_store
- sys.sp_sqljdbc_xa_install
- sys.sp_sqljdbc_xa_uninstall
Novas tabelas/views
- sys.dm_column_encryption_enclave
- sys.dm_column_encryption_enclave_operation_stats
- sys.dm_db_missing_index_group_stats_query
- sys.dm_distributed_exchange_stats
- sys.dm_hadr_ag_threads
- sys.dm_hadr_db_threads
- sys.dm_os_job_object
- sys.dm_tran_aborted_transactions
- sys.edge_constraint_clauses
- sys.edge_constraints
- sys.external_libraries_installed
- sys.sensitivity_classifications
- sys._trusted_assemblies
- sys.persistent_version_store
- sys.persistent_version_store_long_term
- sys.tbl_server_resource_stats
Novas funções
- sys.dm_db_page_info
- sys.fn_dbslog
- sys.fn_getproviderstring
Segue um outro vídeo com um resumo dos recursos apresentados:
E aí? Gostou de tudo o que viu ?
Faça o download do SQL Server 2019 (vNext CTP 2.0 – Preview) e comece a testar todos os novos recursos.
This slideshow requires JavaScript.
Um abraço e até a próxima!
Referências:
https://www.mssqltips.com/sqlservertip/5710/whats-new-in-the-first-public-ctp-of-sql-server-2019/
https://cloudblogs.microsoft.com/sqlserver/2018/09/24/sql-server-2019-preview-combines-sql-server-and-apache-spark-to-create-a-unified-data-platform/
https://www.brentozar.com/archive/category/sql-server/sql-server-2019/
Sensacional!
Parabens pelo post Mestre Dirceu, abrs.
Foi de longe o melhor post que vi esse mês.
Parabéns Dirceu…..
Irado demais, ótimas informações Dirceu.