<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>PFE Brasil - SQL Server</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/pfebrasilsql/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:23:11 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Fim do suporte ao SQL Server 2005 - Uma versão que entrou para a história!</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/fim-do-suporte-ao-sql-server-2005-uma-versao-que-entrou-para-a-historia</link>
      <pubDate>Mon, 18 Apr 2016 14:45:59 GMT</pubDate>
      <dc:creator><![CDATA[André César Rodrigues]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/?p=205</guid>
      <description><![CDATA[Olá pessoal, tudo certo? Espero que sim!

Como todos sabem, chegou ao fim o suporte ao SQL Server...]]></description>
      <content:encoded><![CDATA[Olá pessoal, tudo certo? Espero que sim!

Como todos sabem, chegou ao fim o suporte ao SQL Server 2005, sendo mais preciso, o mesmo se encerrou no dia 12 de abril deste ano, com isto, neste artigo pretendo descrever como seu lançamento foi importante para o desenvolvimento da plataforma de dados Microsoft no mercado e porque hoje é importante migrar para uma versão posterior.

Primeiramente, vamos entender o que seria o ciclo de vida de suporte de um produto. Todo produto lançado pela Microsoft tem um período pré-definido no qual os usuários podem entrar em contato com a Microsoft para resolução de problemas, no caso este período soma um total de 10 anos, onde os 5 primeiros anos pertencem a fase principal e os 5 próximos a fase estendida. Quando a fase de suporte se encerra, nenhuma correção, seja de funcionalidade ou segurança, será disponibilizada, a não ser em condições muito específicas, isto acaba se tornando um ótimo motivo para migração.

&nbsp;

<em>Para saber mais sobre o Ciclo de Vida de um produto na Microsoft acesse o link abaixo:</em>

<a href="https://support.microsoft.com/en-us/gp/lifecycle"><em>https://support.microsoft.com/en-us/gp/lifecycle</em></a>

&nbsp;

<strong>O SQL Server 2005 é oficialmente lançado!</strong>

&nbsp;

O SQL Server 2005 (codinome <em>Yukon</em>) foi oficialmente lançado em 7 de novembro de 2005 e a quantidade de mudanças que ele trouxe com relação ao seu antecessor, o SQL Server 2000, foi imensa. Vamos ver de forma sucinta algumas das novidades que ele trouxe.

&nbsp;

<strong>Arquitetura</strong>

&nbsp;

Internamente o produto sofreu uma mudança grande, tivemos o surgimento do SQLOS. Este veio para tornar o Windows um ambiente mais amigável para o SQL Server, fazendo um melhor gerenciamento dos recursos fornecidos por ele. Sua camada prove uma API para as demais camadas quando estas precisam de recursos operacionais, além disso, está mesma API permite que os programadores escrevam códigos sem precisarem de otimizações especificas relacionadas a arquitetura da máquina onde o SQL está instalado.

A imagem abaixo nos dá uma ideia de como é o SQLOS:

&nbsp;

[caption id="attachment_235" align="aligncenter" width="363"]<a href="https://blogs.msdn.microsoft.com/pfebrasilsql/2016/04/18/fim-do-suporte-ao-sql-server-2005-uma-versao-que-entrou-para-a-historia/sqlos-2/" rel="attachment wp-att-235"><img class=" wp-image-235" src="https://msdnshared.blob.core.windows.net/media/2016/04/SQLOS1-300x185.png" alt="Figura 1 - SQLOS" width="363" height="224" /></a> Figura 1 - SQLOS[/caption]

&nbsp;
<p style="text-align: left"><em>Para saber mais sobre o SQLOS acesse o link abaixo:</em></p>
<a href="https://blogs.msdn.microsoft.com/sqlosteam/2010/06/23/sqlos-resources/"><em>https://blogs.msdn.microsoft.com/sqlosteam/2010/06/23/sqlos-resources/</em></a>

&nbsp;

<strong>Administração</strong>

&nbsp;

O SQL Server 2005 trouxe com ele o <em>Management Studio ou SSMS</em>, uma poderosa ferramenta de administração que substituiu o antigo <em>Enterprise Manager</em> e o <em>Query Analyzer</em>. Ficou mais fácil gerenciar as conexões com as instâncias e também navegar entre os objetos das bases de dados através de seu componente chamado <em>Object Explorer</em>, além disso, no lugar do antigo <em>Query Analyzer</em> tínhamos agora o <em>Query Editor</em>, com inúmeras melhorias voltadas para desenvolvimento e execução de queries.

&nbsp;

<em>Para saber mais sobre o SSMS acesse o link abaixo:</em>

<a href="https://technet.microsoft.com/en-us/library/ms174173(v=sql.120).aspx"><em>https://technet.microsoft.com/en-us/library/ms174173(v=sql.120).aspx</em></a>

&nbsp;

<strong>Troubleshooting e Monitoração</strong>

&nbsp;

Com o SQL Server 2005 nós tivemos o surgimento das Dynamic Management Views (DMV’s) e Dynamic Management Functions (DMF’s), elas permitiram ao DBA um novo nível de aprofundamento no diagnóstico de um problema. Quanto a monitoração de um ambiente com o SQL Server instalado, tivemos melhorias no utilitário SQLdiag o qual ficou mais robusto e incorporou mais funções, tornando-se capaz de coletar diversas informações de uma instância, podendo gerar baselines bastante completos.

&nbsp;

<em>Para saber mais sobre as DMV's e DMF's acesse os link's abaixo:</em>

<em><a href="https://technet.microsoft.com/en-us/library/ms188754(v=sql.110).aspx">https://technet.microsoft.com/en-us/library/ms188754(v=sql.110).aspx</a></em>

<em><a href="https://msdn.microsoft.com/en-us/library/ms188754.aspx">https://msdn.microsoft.com/en-us/library/ms188754.aspx</a></em>

&nbsp;

<em>Para saber mais sobre o SQLdiag acesse o link abaixo:</em>

<em><a href="https://msdn.microsoft.com/en-us/library/ms162833.aspx">https://msdn.microsoft.com/en-us/library/ms162833.aspx</a></em>

&nbsp;

<strong>Segurança</strong>

&nbsp;

Várias melhorias foram feitas na segurança no produto, citando algumas delas:

Encriptação: Possibilidade de encriptar os dados com diferentes algoritmos na hora da criação das chaves de segurança e dos certificados.

Granularidade de permissões: Várias permissões surgiram com o novo modelo de segurança <em>Principal and Securables</em>.

Schemas: Com o surgimento dos <em>Schemas</em> os objetos das bases deixavam agora de serem atrelados aos usuários, permitindo ao administrador atribuir permissões de forma mais precisa e segura.

SQL Server Logins: agora tínhamos políticas de senha para login’s do tipo SQL Server, se tornou possível marcar se a senha deve ou não ter caracteres especiais e se ela vai expirar ou ser mudada no próximo login.

&nbsp;

<em>Para saber mais sobre estas e outras mudanças relacionadas à segurança no SQL Server 2005 acesse:</em>

<a href="https://msdn.microsoft.com/en-us/library/ms187648.aspx"><em>https://msdn.microsoft.com/en-us/library/ms187648.aspx</em></a>

&nbsp;

<strong>Mais Disponibilidade </strong>

&nbsp;

No SQL Server 2005, além da popular opção de alta disponibilidade da época (<em>Cluster</em>) deixar de ser exclusiva da versão Enterprise do produto, tivemos o surgimento do <em>Database Mirroring</em>. Esta tecnologia consiste na transferência constante dos <em>Transaction Log’s</em> de um servidor de origem para um servidor de destino, outro ponto interessante é que o hardware entre os servidores envolvidos não precisa ser exatamente o mesmo.

Surgiu também a reindexação <em>Online</em>, ou seja, mesmo se os índices estiverem passando por um <em>REBUILD</em>, se a operação foi especificada com a cláusula <em>Online</em>, os dados nas tabelas vão continuar acessíveis.

Outra funcionalidade interessante que veio com o produto, foi o <em>Restore Online</em>, onde o mesmo pode ser aplicado somente em alguns <em>filegroups</em> da base de dados sem que está fique inacessível com status de <em>recovery</em>.

&nbsp;

<em>Para saber mais sobre o Database Mirroring acesse o link abaixo:</em>

<a href="https://msdn.microsoft.com/en-us/library/ms189852.aspx"><em>https://msdn.microsoft.com/en-us/library/ms189852.aspx</em></a>

<em>Para saber mais sobre o Rebuild Online dos índices acesse o link abaixo:</em>

<a href="https://msdn.microsoft.com/en-us/library/ms189858.aspx"><em>https://msdn.microsoft.com/en-us/library/ms189858.aspx</em></a>

<em>Para saber mais sobre o Restore Online acesse o link abaixo:</em>

<a href="https://msdn.microsoft.com/en-us/library/ms188671.aspx"><em>https://msdn.microsoft.com/en-us/library/ms188671.aspx</em></a>

&nbsp;

<strong>Mensageria</strong>

&nbsp;

Nasce com o SQL Server 2005 o <em>Service Broker</em>, uma funcionalidade que prove uma alternativa para implementar processamento assíncrono usando T-SQL, foi um passo importante na área de mensageria pois este resolvia diversos problemas relacionados a ordenação, coordenação e processamento das mensagens encontrados em outros softwares de mercado que tem o mesmo intuito.

&nbsp;

<em>Para saber mais sobre o SQL Server Service Broker acesse o link abaixo:</em>

<a href="https://msdn.microsoft.com/en-us/library/bb522893.aspx"><em>https://msdn.microsoft.com/en-us/library/bb522893.aspx</em></a>

&nbsp;

<strong>Integration Services</strong>

&nbsp;

Os pacotes <em>DTS</em> do antigo SQL Server 2000 deram sua vez para os pacotes do <em>Integration Services</em> ou simplesmente pacotes <em>SSIS</em>. Os pacotes <em>DTS</em> eram limitados em uma série de aspectos enquanto que os pacotes <em>SSIS</em> trouxeram mais flexibilidade para a plataforma, as possibilidades de integração com outras fontes de dados e a manipulação dos mesmos foram os grandes diferenciais desta novidade.

&nbsp;

<em>Para saber mais sobre o Integration Services do SQL Server acesse o link abaixo:</em>

<a href="https://msdn.microsoft.com/en-us/library/ms141026.aspx"><em>https://msdn.microsoft.com/en-us/library/ms141026.aspx</em></a>

&nbsp;

<strong>É hora de migrar!</strong>

&nbsp;

O SQL Server 2005 realmente foi uma revolução no que diz respeito a plataforma de dados, contudo, seu suporte chegou ao fim e mais do que nunca está na hora de planejar a migração para uma versão mais recente para poder continuar contanto com o suporte da Microsoft e com as atualizações mais recentes, veja abaixo outros benefícios que uma migração para uma versão mais recente poderia trazer para sua empresa e seus negócios:

&nbsp;

<strong>Novas opções de alta disponibilidade</strong> – A partir do SQL Server 2012 temos uma nova opção de alta disponibilidade, o AlwaysOn, este permite que um conjunto de bases de dados seja configurado de forma que suporte um failover entre os nós, onde o grupo principal é leitura\escrita e o grupo secundário pode ficar como leitura-somente.

<strong>Mais velocidade</strong> – Com o SQL Server 2012 nasceu o <em>ColumnStore Index</em>, uma forma diferente de armazenar os dados que pode prover um ganho significante na execução de certas classes de queries. Já no SQL Server 2014 tivemos o surgimento da funcionalidade <em>In-Memory OLTP</em>, a mesma permite que tabelas sejam armazenadas em memória e que códigos possam ser executados contra elas nativamente, livres de locks ou latches, provendo um ganho absurdo no que diz respeito a manipulação dos dados.

<strong>Mais segurança</strong> – Com o SQL Server 2016 a encriptação dos dados foi elevada a outro patamar, temos agora o Always Encrypted, o mesmo permite que dados sensíveis como por exemplo o número de um cartão de crédito sejam encriptados e as chaves de encriptação não são conhecidas nem mesmo pelo próprio SQL Server.

&nbsp;

Se você está decidido a migrar, porém quer um apoio adicional, conte com a Microsoft. Caso você seja um cliente com um contrato <em>Premier</em> é possível contar com especialistas on-site e com uma oferta conhecida como <em>Acceletare Packages</em>, que são pacotes focados em migração, eles ajudam no mapeamento do que deve ser migrado e ajudam também a decidir qual a melhor forma disto ser executado de preferência no menor tempo possível. Até mesmo as aplicações são analisadas para que a migração ocorra da forma mais transparente possível.

&nbsp;

<em>Comece agora a planejar sua migração, acesse o link abaixo para mais informações:</em>

<a href="https://www.microsoft.com/en-us/server-cloud/products/sql-server-2005/"><em>https://www.microsoft.com/en-us/server-cloud/products/sql-server-2005/</em></a>

&nbsp;

<strong>Bibliografia</strong>

<a href="http://download.microsoft.com/download/3/3/f/33fb3703-6e6e-4715-9318-c52853bd55bf/SQLServer2005NewFeatures_Ch_4.pdf">http://download.microsoft.com/download/3/3/f/33fb3703-6e6e-4715-9318-c52853bd55bf/SQLServer2005NewFeatures_Ch_4.pdf</a>

<a href="http://blogs.msdn.com/b/slavao/archive/2005/07/20/441058.aspx">http://blogs.msdn.com/b/slavao/archive/2005/07/20/441058.aspx</a>

<a href="https://msdn.microsoft.com/de-de/sqlserver/bb895859.aspx">https://msdn.microsoft.com/de-de/sqlserver/bb895859.aspx</a>]]></content:encoded>
    </item>
    <item>
      <title>Estatisticas incrementais... ou como atualizar estatisticas em base de 100TB (VLDB)</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/estatisticas-incrementais-ou-como-atualizar-estatisticas-em-base-de-100tb-vldb</link>
      <pubDate>Fri, 18 Mar 2016 17:45:23 GMT</pubDate>
      <dc:creator><![CDATA[FonsecaSergio]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/?p=161</guid>
      <description><![CDATA[Estou aqui para comentar mais um caso onde as estatisticas não eram atualizadas com frequencia em...]]></description>
      <content:encoded><![CDATA[Estou aqui para comentar mais um caso onde as estatisticas não eram atualizadas com frequencia em uma base de <strong>100TB</strong> em uma analise de risco feita no servidor de um cliente, então foi sugerido a utilização de <span style="color: #333399"><strong>estatisticas incrementais (SQL 2014 ou maior)</strong></span>

Segundo a própria documentação (<a title="Statistics" href="https://msdn.microsoft.com/en-us/library/ms190397(v=sql.120).aspx" target="_blank">https://msdn.microsoft.com/en-us/library/ms190397(v=sql.120).aspx</a>)
<blockquote><span style="font-size: small"><em>When new partitions are added to a large table, statistics should be updated to include the new partitions. However the time required to scan the entire table (FULLSCAN or SAMPLE option) might be quite long. Also, scanning the entire table isn't necessary because only the statistics on the new partitions might be needed. <strong>The incremental option creates and stores statistics on a per partition basis</strong>, and when updated, only refreshes statistics on those partitions that need new statistics</em></span></blockquote>
Ou seja não precisa ficar atualizando e fazendo FULLSCAN em uma tabela gigantesca todo dia, você pode, por exemplo, atualizar apenas as 2 ultimas partições

Vamos ver abaixo como aplicar isso no seu ambiente

<!--more-->

A primeira coisa a fazer é alterar a base para que as próximas estatisticas sejam criadas como incrementais

&nbsp;
<blockquote><span style="color: #0000ff;font-family: Consolas;font-size: small">ALTER</span> <span style="color: #0000ff;font-family: Consolas;font-size: small">DATABASE</span><span style="font-family: Consolas;font-size: small"> SANDBOX
</span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SET</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">AUTO_CREATE_STATISTICS</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON </span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">INCREMENTAL </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span></blockquote>
&nbsp;

Depois disso, para todas tabelas particionadas onde você deseja fazer esta alteração, <strong>você precisará atualizar estatistica completa nas estatisticas</strong>, antes de conseguir atualizar por estatistica. Apesar deste passo ser muito pesado ele irá compensar depois.
<blockquote><span style="color: #ff00ff;font-family: Consolas;font-size: small">UPDATE</span> <span style="color: #0000ff;font-family: Consolas;font-size: small">STATISTICS</span><span style="font-family: Consolas;font-size: small"> [PartitionTable]</span> <span style="color: #808080;font-family: Consolas;font-size: small">(</span><span style="font-family: Consolas;font-size: small">[PK__Partitio__357D0D3ED0CC792E]</span><span style="color: #808080;font-family: Consolas;font-size: small">)</span> <span style="color: #0000ff;font-family: Consolas;font-size: small">WITH</span> <span style="color: #0000ff;font-family: Consolas;font-size: small">FULLSCAN</span><span style="color: #808080;font-family: Consolas;font-size: small">,</span><strong><span style="font-family: Consolas;font-size: small"> INCREMENTAL </span><span style="color: #808080;font-family: Consolas;font-size: small">=</span> <span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></strong></blockquote>
Para facilitar um pouco, criei alguns scripts para ajudar neste processo. Um deles para fazer de uma tabela apenas, outro para pegar todas tabelas particionadas de um database.
<blockquote>------------------------------------------------------------------------------------------------------------------------------

--GENERATE INCREMENTAL UPDATE STATISTICS FOR 1 TABLE

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'UPDATE STATISTICS '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_name</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">))</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') WITH FULLSCAN, INCREMENTAL = ON'
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">stats
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">where</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'[dbo].[PartitionTable]'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">and</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> is_incremental </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0</span></span>

------------------------------------------------------------------------------------------------------------------------------

--GENERATE INCREMENTAL UPDATE STATISTICS FOR ALL PARTITIONED TABLES

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'UPDATE STATISTICS '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_name</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">))</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">s</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') WITH FULLSCAN, INCREMENTAL = ON'
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">tables</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">indexes</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">data_spaces</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">stats</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">type</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'PS'</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- PARTITION_SCHEME -- PARTITION TABLE
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">is_incremental </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0</span></span></blockquote>
Depois deste primeiro passo mais lento, agora basta você planejar como será atualizado suas partições. No meu cenário o particionamento era por Ano-Mês e as partições antigas são raramente atualizadas. Então iremos atualizar diariamente apenas as 2 ultimas partições

Este script irá gerar 3 tipos de update
<ol>
	<li>UPDATE para tabelas não particionadas</li>
	<li>UPDATE para tabelas particionadas, mas sem incremental</li>
	<li>UPDATE para tabelas particionadas com incremental (2 ultimas partições)</li>
</ol>
&nbsp;
<blockquote><span style="color: #0000ff;font-family: Consolas;font-size: small">DECLARE</span><span style="font-family: Consolas;font-size: small"> @RESAMPLE </span><span style="color: #0000ff;font-family: Consolas;font-size: small">BIT</span> <span style="color: #808080;font-family: Consolas;font-size: small">=</span><span style="font-family: Consolas;font-size: small"> 1</span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">DECLARE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PERCENT_SAMPLE </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">INT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 100 </span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- IF @RESAMPLE = 0 SET @PERCENT_SAMPLE</span></span></span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">DECLARE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PROCESS_LAST_X_NONEMPTY_PARTITIONS </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">INT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 2</span></span>

------------------------------------------------------------------------------

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">SQL_COMMAND </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'UPDATE STATISTICS '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">Name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') '
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">IIF</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">@RESAMPLE </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 1</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'WITH RESAMPLE'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'WITH SAMPLE '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CONVERT</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">VARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">3</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">),</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PERCENT_SAMPLE</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' PERCENT'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">10</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">INFO </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' -- NON PARTITIONED TABLES'
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">tables</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">indexes</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">data_spaces</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">stats</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">type</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'FG'</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- ROWS_FILEGROUP -- NON PARTITION TABLE
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">stats_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">IS</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">NOT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">NULL</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- FILTER TABLES WITH NO STATISTICS</span></span></span>

------------------------------------------------------------------------------

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">SQL_COMMAND </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'UPDATE STATISTICS '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">Name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') '
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">IIF</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">@RESAMPLE </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 1</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'WITH RESAMPLE'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,
</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'WITH SAMPLE '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CONVERT</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">VARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">3</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">),</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PERCENT_SAMPLE</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' PERCENT'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">10</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">INFO </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' -- PARTITIONED TABLES NON INCREMENTAL'
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">tables</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">indexes</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">data_spaces</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">stats</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">type</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'PS'</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- PARTITION_SCHEME -- PARTITION TABLE
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">is_incremental </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0</span></span>

------------------------------------------------------------------------------

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">IF </span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">OBJECT_ID</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'tempdb..#TEMP_LAST2PARTITIONS'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">IS</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">NOT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">NULL)</span></span></span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">DROP</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">TABLE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> #TEMP_LAST2PARTITIONS</span></span>

<span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">;</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WITH</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> AUX_LAST2PARTITIONS </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">AS
</span></span></span>(

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">TableName </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">Name
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">index_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">IX_Name </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">COALESCE</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">Name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'[HEAP]'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">partition_number
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">rows
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">i</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">ROW_NUMBER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">ROW_NUMBER</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">()</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">OVER </span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">PARTITION</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">BY</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">index_id </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ORDER</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">BY</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">partition_number </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">DESC</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">tables</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">indexes</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> T</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">data_spaces</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">partitions</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> P
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> I</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">index_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">index_id
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> DS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">type</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'PS'</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- PARTITION_SCHEME -- PARTITION TABLE
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> P</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">rows</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">&gt;</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0 </span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">-- filter empty partitions</span></span></span>

)

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">*</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">INTO</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> #TEMP_LAST2PARTITIONS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> AUX_LAST2PARTITIONS
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> [ROW_NUMBER] </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">&lt;=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PROCESS_LAST_X_NONEMPTY_PARTITIONS</span></span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CREATE</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CLUSTERED</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">INDEX</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> #IX_TEMP_LAST2PARTITIONS </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> #TEMP_LAST2PARTITIONS</span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> index_id</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> partition_number</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span>

<span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">;</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WITH</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> AUX </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">AS
</span></span></span>(

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">TableName
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">index_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">IX_Name
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">StatsName </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">name
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">partition_number
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">AUX</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">rows
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">PARTITION_VALUE </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">ISNULL</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CAST</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">left_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">value</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">AS</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">VARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">MAX</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">))+</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CASE</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHEN</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> pf</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">boundary_value_on_right </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0 </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">THEN</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' &gt; '
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ELSE</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' &gt;= '
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">END</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'-INF &gt; '</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'X'</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">ISNULL</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CASE</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHEN</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> pf</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">boundary_value_on_right </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 0 </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">THEN</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' &gt;= '
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ELSE</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' &gt; '
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">END</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CAST</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">right_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">value</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">AS</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">NVARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">MAX</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)),</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' &gt; INF'</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> #TEMP_LAST2PARTITIONS AUX
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">INNER</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">stats</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> aux</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">object_id
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">LEFT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">partition_schemes</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> ps
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> aux</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> ps</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">data_space_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">LEFT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">partition_functions</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> pf
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> ps</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> pf</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">LEFT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">partition_range_values</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> left_prv
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> left_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> ps</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> left_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">boundary_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 1 </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> aux</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">partition_number
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">LEFT</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">JOIN</span></span></span> <span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">sys</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small"><span style="color: #008000;font-family: Consolas;font-size: small">partition_range_values</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> right_prv
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ON</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> right_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> ps</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">function_id
</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">AND</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> right_prv</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">boundary_id </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> aux</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">partition_number
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">WHERE</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> S</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">.</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">is_incremental </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> 1</span></span>

)

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">SELECT
</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">SQL_COMMAND </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">'UPDATE STATISTICS '</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">TableName</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">QUOTENAME</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">StatsName</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') WITH RESAMPLE ON PARTITIONS ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CONVERT</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">VARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">20</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">),</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> partition_number</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">')'</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">CHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">10</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)
</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small">INFO </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">=</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">' -- PARTITIONED TABLES INCREMENTAL LAST ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small"><span style="color: #ff00ff;font-family: Consolas;font-size: small">CONVERT</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">(</span></span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">VARCHAR</span></span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> @PROCESS_LAST_X_NONEMPTY_PARTITIONS</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">)</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">') PARTITIONS ON ('</span></span></span> <span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> PARTITION_VALUE </span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">+</span></span></span> <span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small"><span style="color: #ff0000;font-family: Consolas;font-size: small">')'</span></span></span>

<span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">FROM</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> AUX
</span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">ORDER</span></span></span> <span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">BY</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> TableName</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> IX_Name</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> StatsName</span></span><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small"><span style="color: #808080;font-family: Consolas;font-size: small">,</span></span></span><span style="font-family: Consolas;font-size: small"><span style="font-family: Consolas;font-size: small"> partition_number </span></span><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small"><span style="color: #0000ff;font-family: Consolas;font-size: small">desc</span></span></span></blockquote>
&nbsp;

Segue abaixo um exemplo dos comandos

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/capture20160318104353964.png"><img class="alignnone wp-image-171" src="https://msdnshared.blob.core.windows.net/media/2016/03/capture20160318104353964-1024x279.png" alt="UpdateStatistics" width="800" height="218" /></a>

&nbsp;
<h2><span style="color: #000000">Conclusão</span></h2>
Lembrando que este foi um exemplo, onde eu queria atualizar apenas as 2 ultimas partições, mas cada caso é um caso.

Depois basta pegar estes comandos jogar em uma variável e agendar para executar com [<a title="sp_executesql" href="https://msdn.microsoft.com/en-us/library/ms188001.aspx" target="_blank">sp_executesql</a>]

No meu cenário para uma das tabelas de <strong>9 TB dados + 18TB indices</strong> (117 partições) houve uma redução de tempo de ~<strong>3 dias </strong>(Update statistics fullscan todas estatisticas da tabela) para apenas ~<strong>1h </strong>(Update statistics fullscan todas estatisticas da tabela apenas 2 ultima partições).

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/capture20160318113842969.png"><img class="alignnone  wp-image-191" src="https://msdnshared.blob.core.windows.net/media/2016/03/capture20160318113842969.png" alt="capture20160318113842969" width="338" height="212" /></a>

Para quem quiser testar, seguem os scripts
<ul>
	<li><a href="https://msdnshared.blob.core.windows.net/media/2016/03/SCRIPT-UPDATE-STATS-SET-INCREMENTAL-FIRST-TIME.txt" target="_blank">SCRIPT UPDATE STATS SET INCREMENTAL - FIRST TIME</a></li>
	<li><a href="https://msdnshared.blob.core.windows.net/media/2016/03/SCRIPT-UPDATE-STATS-INCREMENTAL-MANUAL-UPDATES.txt" target="_blank">SCRIPT UPDATE STATS INCREMENTAL - MANUAL UPDATES</a></li>
	<li><a href="https://msdnshared.blob.core.windows.net/media/2016/03/SCRIPT-UPDATE-STATS-INCREMENTAL-JOB-SCRIPT.txt" target="_blank">SCRIPT UPDATE STATS INCREMENTAL - JOB SCRIPT</a></li>
</ul>
&nbsp;

&nbsp;
<h6>This Sample Code is provided for the purpose of illustration only and is not intended to be used in a production environment.
THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
We grant You a nonexclusive, royalty-free right to use and modify the Sample Code and to reproduce and distribute
the object code form of the Sample Code, provided that You agree:
(i) to not use Our name, logo, or trademarks to market Your software product in which the Sample Code is embedded;
(ii) to include a valid copyright notice on Your software product in which the Sample Code is embedded; and
(iii) to indentify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits,
including attorneys' fees, that arise or result from the use or distribution of the Sample Code.</h6>
<h6>Please note: None of the conditions outlined in the disclaimer above will supersede the terms and
conditions contained within the Premier Customer Services Description.</h6>]]></content:encoded>
    </item>
    <item>
      <title>Live Query Statistics ou "veja seus planos de execução enquanto sua query ainda está executando"</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/live-query-statistics-ou-veja-seus-planos-de-execuo-enquanto-sua-query-ainda-est-executando</link>
      <pubDate>Thu, 20 Aug 2015 13:22:00 GMT</pubDate>
      <dc:creator><![CDATA[FonsecaSergio]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2015/08/20/live-query-statistics-ou-veja-seus-planos-de-execuo-enquanto-sua-query-ainda-est-executando/</guid>
      <description><![CDATA[Em alguns cen&aacute;rios de tuning de queries grandes, com muitos JOINs, subqueries, CTE, etc...]]></description>
      <content:encoded><![CDATA[<div><span style="font-size: medium">Em alguns cen&aacute;rios de tuning de queries grandes, com muitos JOINs, subqueries, CTE, etc e&nbsp;seria muito legal se fosse poss&iacute;vel visualizar estes planos sendo executados em tempo real.</span><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">Desde a vers&atilde;o SQL Server 2014 podemos utilizar uma DMV <a title="https://msdn.microsoft.com/en-us/library/dn223301.aspx" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/sys.dm_exec_query_profiles" target="_blank">sys.dm_exec_query_profiles</a></span></div><div><span style="font-size: medium">Utilizando o comando "SET STATISTICS PROFILE ON" podemos retornar dados do plano em formato de tabela</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">Segue abaixo um exemplo</span></div><div>
<pre class="scroll"><span style="font-size: medium"><code class="mysql">USE AdventureWorks2012<br> <br> --Configure query for profiling with sys.dm_exec_query_profiles<br> SET STATISTICS PROFILE ON;<br> GO<br> <br> --Next, run your query in this session<br> SELECT * FROM [Sales].[SalesOrderDetailEnlarged] S ORDER BY S.rowguid<br> GO<br> <br> --On other session get plan data<br> SELECT * FROM sys.dm_exec_query_profiles</code></span></pre>
</div><p>&nbsp;</p><div><span style="font-size: medium">&Eacute; um SELECT relativamente grande e com um ORDER BY propositalmente pesado</span></div><div><span style="font-size: medium"><br></span></div><div>
<div><span><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8030.FIG1.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/400x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8030.FIG1.jpg" alt="" border="0"></a></span></div>
<div><span><br></span></div>
<div><span><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6685.FIG9.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6685.FIG9.jpg" alt="" border="0"></a></span></div>
</div><div><span style="font-size: medium">Realizando algumas colenas na&nbsp;DMV (sys.dm_exec_query_profiles)&nbsp;que te traz a informa&ccedil;&atilde;o em <strong>formato de tabela</strong>,&nbsp;com um pouco de criatividade e&nbsp;Excel voc&ecirc; poderia conseguir uma analise.</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2477.FIG2.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2477.FIG2.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6281.FIG3.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6281.FIG3.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><strong><br></strong></span></div><div><span style="font-size: large"><strong>Mas <strong>ainda </strong>n&atilde;o era isso que eu queria ... </strong>Eu queria realmente ver executando na hora.</span></div><div><span style="font-size: medium"> <br></span></div><div><span style="font-size: medium">Utilizando o <strong>SQL 2014 (SP1)</strong> ou maior&nbsp;+ <strong><a title="https://msdn.microsoft.com/library/mt238290.aspx" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/SSMS%202016" target="_blank">SSMS 2016</a></strong>&nbsp;(At&eacute; este momento em vers&atilde;o preview) que agora ser&aacute; um download separado do DVD de instala&ccedil;&atilde;o do SQL Server e compat&iacute;vel com diversas vers&otilde;es, recebendo atualiza&ccedil;&otilde;es mais frequentes.</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">E uma das novidades &eacute; o&nbsp;<a title="https://msdn.microsoft.com/en-us/library/dn831878.aspx" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/Live%20Query%20Statistics" target="_blank">Live Query Statistics</a> que pode ser feito de uma consulta que voc&ecirc; est&aacute; analisando ou de uma query de outra pessoa que ainda est&aacute; executando e voc&ecirc; n&atilde;o tem ideia de quanto falta para terminar</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">No cen&aacute;rio 1 vamos ver uma consulta que voc&ecirc; esta fazendo um teste ou tuning. Considerando o mesmo cen&aacute;rio basta ativar a op&ccedil;&atilde;o de Live Query Statistics.</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5037.FIG4.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5037.FIG4.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">E agora &eacute; s&oacute; assistir o processo ser executado</span></div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6175.FIG5.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6175.FIG5.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium">19% Ainda buscando dados no &iacute;ndice cluster ...</span></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8688.FIG6.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8688.FIG6.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium">26% o SCAN no &iacute;ndice terminou em 5.8s e agora o SORT est&aacute; segurando</span></div><div><span style="font-size: medium">Veja que o que ainda esta executando as setas s&atilde;o tracejadas</span></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2816.FIG7.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2816.FIG7.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium">86% e rodando</span></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6266.FIG8.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6266.FIG8.jpg" alt="" border="0"></a></span></div><div><span style="font-size: medium">100% e tempo total de 51s. SORT pesado este n&atilde;o :)</span></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><strong><span style="font-size: large">O&nbsp;que mais podemos fazer?</span></strong></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">Cen&aacute;rio 2: Algu&eacute;m fez uma query gigante, talvez um update sem where e voc&ecirc; quer saber quanto falta.</span></div><div>&nbsp;</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium">Ligando a op&ccedil;&atilde;o de "SET STATISTICS PROFILE ON" antes da query executar ou ligando o monitoramento do evento XE&nbsp;"<span class="input">query_post_execution_showplan</span>", v</span><span style="font-size: medium">oc&ecirc; pode pegar as consultas pelo Activity Monitor</span></div><div>
<pre class="scroll"><code class="mysql">IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='Live Query Statistics')<br> DROP EVENT SESSION [Live Query Statistics] ON SERVER<br> GO<br> <br> CREATE EVENT SESSION [Live Query Statistics] ON SERVER <br> ADD EVENT sqlserver.query_post_execution_showplan<br> ADD TARGET package0.ring_buffer(SET max_events_limit=(5000))<br> WITH (STARTUP_STATE=ON)<br> GO<br> <br> ALTER EVENT SESSION [Live Query Statistics]<br> ON SERVER<br> STATE = START<br> GO</code></pre>
</div><div><span style="font-size: medium"><br></span></div><div><span style="font-size: medium"><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6457.FIG10.jpg"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6457.FIG10.jpg" alt="" border="0"></a></span></div><div>&nbsp;</div><div><span style="font-size: medium">Sonho com esta feature deste que comecei a trabalhar com SQL :)</span></div><div>&nbsp;</div><div><span style="font-size: medium">Testem nos seus ambientes e comentem no post</span></div><div>&nbsp;</div><div>
<p><span style="font-size: x-small">This Sample Code is provided for the purpose of illustration only and is not intended to be used in a production environment.</span></p>
<p><span style="font-size: x-small">THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,</span></p>
<p><span style="font-size: x-small">INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.</span></p>
<p><span style="font-size: x-small">We grant You a nonexclusive, royalty-free right to use and modify the Sample Code and to reproduce and distribute</span></p>
<p><span style="font-size: x-small">the object code form of the Sample Code, provided that You agree:</span></p>
<p><span style="font-size: x-small">(i) to not use Our name, logo, or trademarks to market Your software product in which the Sample Code is embedded;</span></p>
<p><span style="font-size: x-small">(ii) to include a valid copyright notice on Your software product in which the Sample Code is embedded; and</span></p>
<p><span style="font-size: x-small">(iii) to indentify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits,</span></p>
<p><span style="font-size: x-small">including attorneys' fees, that arise or result from the use or distribution of the Sample Code.</span></p>
<p>&nbsp;</p>
</div><div>&nbsp;</div></div>
]]></content:encoded>
    </item>
    <item>
      <title>Fundamentos sobre Estatísticas</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/fundamentos-sobre-estatsticas</link>
      <pubDate>Mon, 29 Jun 2015 10:48:00 GMT</pubDate>
      <dc:creator><![CDATA[thiago.desenv@gmail.com]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2015/06/29/fundamentos-sobre-estatsticas/</guid>
      <description><![CDATA[Overview
 O SQL Server coleta e armazena dados&nbsp; de estat&iacute;sticas sobre as colunas...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Overview</strong></span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"> O SQL Server coleta e armazena dados&nbsp; de estat&iacute;sticas sobre as colunas utilizadas em predicados de consulta e sobre os &iacute;ndices que s&atilde;o criados para as colunas da tabela. As estat&Iacute;sticas s&atilde;o informa&ccedil;&otilde;es utilizadas pelo de otimizador consulta para ajudar a escolher qual algor&iacute;tmo que ser&aacute; utilizado pelo SQL Server, &nbsp;e como estimar a quantidade de linhas que ser&atilde;o processadas por essas opera&ccedil;&otilde;es; baseado nessa informa&ccedil;&atilde;o o SQL Server pode tomar a melhor decis&atilde;o para criar um plano de execu&ccedil;&atilde;o.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Conceitos</strong></span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Quando estamos falando de estat&iacute;sticas e estimativa de registros dentro do SQL Server, geralmente esbarramos em alguns conceitos que s&atilde;o utilizados com bastante frequ&ecirc;ncia, sendo assim, saber os conceitos o ajudar&aacute; bastante a&nbsp;absorver o conte&uacute;do a seguir neste artigo. Vamos para alguns conceitos:</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Predicado: </strong>Uma condi&ccedil;&atilde;o que avalia para "Verdadeiro" e "Falso". Predicados aparecem em cl&aacute;usulas JOINs e WHERE dentro de uma consulta.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Seletividade</strong>: Uma fra&ccedil;&atilde;o de um <em>input </em>de dados que safistaz um predicado espec&iacute;fico. Quanto maior a seletividade menor ser&aacute; a quantidade de linhas que ser&atilde;o retornadas em uma consulta. Por exemplo, sabemos que no territorio nacional, temos dois tipos de sexo</span><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">, sendo eles: masculino e feminino. Sendo assim, utilizar a coluna de sexo para criar um indice n&atilde;o &eacute; uma boa escolha, pois, ela N&Atilde;O &eacute; seletiva. Nesse caso, o valor de CPF &eacute; um excelente candidato, por ser bastante seletiva pelo fato de n&atilde;o haver duas pessoas com o mesmo CPF.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Cardinalidade</strong>: O n&uacute;mero de linhas que atende uma determinada condi&ccedil;&atilde;o ou basicamente podemos dizer que &eacute; a porcentagem de linhas que ser&atilde;o estimadas para serem retornadas de uma determinada tabela.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Densidade</strong>: Se uma coluna &eacute; densa, ela retornar&aacute; mais linhas para uma determinada consulta, pois, ela retornar&aacute; mais valores duplicados para uma determinada coluna.Imagine o cen&aacute;rio: Uma tabela de clientes possui as colunas de BairroID e CidadeID (ambas colunas s&atilde;o </span><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">chaves estrangeiras das tabelas Bairro e Cidade). Existe a possibilidade que a coluna CidadeID possua mais valores duplicados (ou menos valores &uacute;nicos) do que a coluna BairroID, isso que dizer que, a coluna CidadeID teria uma densidade maior do que a coluna BairroID. Para calcular a densidade de uma coluna no SQL Server, basta apenas utilizar o comando abaixo:</span></p>
<p><code class="mysql"></code>&nbsp;</p>
<p><code class="mysql">SELECT (1.0 / COUNT(DISTINCT NomeDaColuna)) FROM NomeDaTabela</code></p>
<p>&nbsp;</p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Obs: Sempre utilize comandos em ambientes de desenvolvimento para quest&otilde;es de an&aacute;lise.</strong><strong></strong></span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Filtro: </strong>Uma condi&ccedil;&atilde;o que &nbsp;&eacute; utilizada para avaliar se um registro deve ser parte de um indice filtrado ou estatistica filtrada. Ap&oacute;s o SQL Server 2008 &eacute; possivel criar &iacute;ndices e estat&iacute;sticas filtradas utilizando a cl&aacute;usula WHERE, assim como fazemos hoje nas consultas. Por exemplo, imagine que o sistema XYZ possui uma tabela de Pedidos que possui um alguns milh&otilde;es de registros. No entanto, a maioria das consultas do sistema fazem refer&ecirc;ncia a data de cadastro do pedido e se os pedidos est&atilde;o ativos, conforme a seguir:&nbsp; </span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><code class="mysql">SELECT * FROM Pedidos WHERE dataPedido = 'XXXXX' and Ativo = 1</code></span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Sendo que o filtro citado acima representa apenas 10% do total da minha tabela. Talvez criar um &iacute;ndice ou estat&iacute;stica filtrada ajudaria no que diz respeito a armazenamento, influenciando diretamente em nossas rotinas de manuten&ccedil;&atilde;o.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Obs: N&atilde;o se preocupe muito se os conceitos n&atilde;o fazem total sentido nesse momento, mas, quando come&ccedil;armos a analisar as estat&iacute;sticas e seus respectivos resultados dentro do SQL Server, as coisas v&atilde;o se tornar mais claras.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>A estat&iacute;sticas dentro do SQL Server</strong></span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">As estat&iacute;sticas s&atilde;o estruturas que mantem uma amostragem de dados de uma determinada coluna ou um conjunto de colunas. Essa amostra das estat&iacute;sticas no SQL Server s&atilde;o criadas e atualizadas automaticamentes dentro da engine do SQL Server se a propriedade <em>Auto Create Statistics</em> e <em>Auto Update Statistics</em> estiver habilitada. Por padr&atilde;o, essas features j&aacute; vem habilitadas, at&eacute; mesmo porque &eacute; uma boa pr&aacute;tica, fazendo com que o SQL Server fa&ccedil;a boas escolhas para criar &nbsp;planos de execu&ccedil;&atilde;o mais eficientes. &nbsp;Como podemos ver atrav&eacute;s da consulta abaixo na view de sistema sys.databases, conforme a seguir:</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/4331.stats_1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/4331.stats_5F00_1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/4331.stats_1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/4331.stats_5F00_1.png" alt="" border="0" /></a></span></p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Vale lembrar que quando as estatisticas s&atilde;o criada automaticamentes dentro do SQL Server, o SQL Server cria estat&iacute;sticas apenas para uma coluna e n&atilde;o para um conjunto de colunas se a consulta possuir diversos predicados. Por exemplo: Se a consulta abaixo for realizada e a tabela n&atilde;o possuir estat&iacute;sticas, o SQL Server criar&aacute; uma estat&iacute;stica para cada coluna de forma independente, no caso, uma estat&iacute;stica para <em>TransactionDate</em> e outra para <em>Quantity </em>vejamos a seguir:</span></p>
<p><strong><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Execu&ccedil;&atilde;o da Consulta.</span></strong></p>
<p><code class="mysql">SELECT * FROM Production.TransactionHistory <br />WHERE TransactionDate = '20070906' and Quantity &gt; 10</code></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Se executarmos as consultas nas DMVs (sys.stats e sys.stats_columns) para identificar quais estat&iacute;sticas foram criadas, podemos ver que o SQL Server criou duas novas estat&iacute;sticas que &eacute; identificado atrav&eacute;s da coluna auto_created, conforme a seguir:</span></p>
<p><br /><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Consulta de metadados das estat&iacute;sticas:</strong></span></p>
<p>&nbsp;</p>
<pre class="scroll"><code class="mysql">USE AdventureWorks2014<br />GO<br />SELECT OBJECT_NAME(a.object_id) AS Objeto, a.name, a.auto_created<br />FROM sys.stats a<br />WHERE OBJECT_NAME(a.object_id) = 'TransactionHistory'</code></pre>
<p class="scroll">&nbsp;</p>
<p class="scroll"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">O resultado da consulta anterior retorna as estat&iacute;sticas que foram criadas automaticamentes e suas respectivas colunas:</span>&nbsp;</p>
<pre class="scroll"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/8420.stats_2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8420.stats_5F00_2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/8420.stats_2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8420.stats_5F00_2.png" alt="" border="0" /></a></span></pre>
<p>&nbsp;</p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>Como interpretar e ler o Histograma?</strong></span>&nbsp;</p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Agora que sabemos o que &eacute; s&atilde;o as estat&iacute;sticas no SQL Server, alguns conceitos b&aacute;sicos e como identifica-l&aacute;s nas nossas tabelas e colunas, vamos aprender como ler o nosso histograma que &eacute; criado para cada estat&iacute;stica.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Histograma &eacute; uma amostragem dos dados que s&atilde;o representados em forma de tabela, a quantidade de valores que podem ser representadas nessa determinada tabela podem chegar at&eacute; 200 passos/amostras. Fazendo uma analogia, imagine que o sistemo XYZ possui </span><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">uma tabela no SQL Server que possuem alguns milh&otilde;es de registros, e para uma determinada coluna dessa sua tabela existe uma estat&iacute;stica. A estat&iacute;stica dessa coluna &eacute; apenas uma amostragem de como os dados est&atilde;o distribuidos e como o SQL Server pode consultar essa distribui&ccedil;&atilde;o para estimar a quantidade de linhas que possui para um determinado valor ou em um intervalo de registros.</span></p>
<p style="text-align: justify;"><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Para ver o histograma&nbsp; de uma estat&iacute;stica n&oacute;s vamos utilizar o comando DBCC SHOW_STATISTICS, conforme comando abaixo:</span></p>
<pre class="scroll"><code class="mysql">USE AdventureWorks2014<br />GO<br />DBCC SHOW_STATISTICS("Production.TransactionHistory", _WA_Sys_00000005_22401542)</code></pre>
<p class="scroll"><code class="mysql"></code>&nbsp;<code class="mysql"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Ap&oacute;s o comando ser executado, teremos como retorno o seguinte resultado:</span></code></p>
<pre class="scroll"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1348.stats_3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1348.stats_5F00_3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1348.stats_3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1348.stats_5F00_3.png" alt="" border="0" /></a></span></pre>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Como pode ser visto, foram retornados tr&ecirc;s results, sendo eles na seguinte ordem: STAT_HEADER, DENSITY_VECTOR e HISTOGRAM. O maior foco desse artigo &eacute; trabalhar em cima do HISTOGRAMA, no entanto, as demais informa&ccedil;&otilde;es ser&atilde;o vistas em um outro momento.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>STAT HEADER</strong> &eacute; o primeiro&nbsp;retorno que possuem algumas informa&ccedil;&otilde;es pertinentes a estatistica em si que veremos em um outro artigo.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>DENSITY_VECTOR</strong> &eacute; o segundo conjunto de informa&ccedil;&otilde;es que temos&nbsp; sobre nossas estat&iacute;sticas. O Otimizador usa informa&ccedil;&otilde;es do vetor de densidade para melhorar a cardinalidade das consultas que ir&atilde;o rertonar muitos valores. Existe uma densidade para cada coluna (ou conjunto de coluna) da estat&iacute;stica, por exemplo, se n&oacute;s tiv&eacute;ssemos uma estat&iacute;stica criada manualmente para as colunas: PedidoId e ClienteID. Ter&iacute;amos uma informa&ccedil;&atilde;o de densidade da coluna&nbsp; PedidoId e uma outra informa&ccedil;&atilde;o de densidade das colunas PedidoId e ClienteId.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>HISTOGRAM</strong> &eacute; Terceira e &uacute;ltima informa&ccedil;&atilde;o sobre as nossas estat&iacute;sticas, esse resultado de fato &eacute; a distribui&ccedil;&atilde;o dos dados em si de uma estat&iacute;sticas e possuem as seguintes colunas:</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>RANGE_HI_KEY</strong> - Mostra o valor chave da coluna. Por exemplo, se a coluna da estat&iacute;stica &eacute; a data do pedido, voc&ecirc; ver&aacute; uma data nessa coluna.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>RANGE_ROWS</strong> - A quantidade de linhas que est&aacute; no range de um determinado valor. O Range Rows come&ccedil;a no RANG_HI_KEY + 1 da linha atual at&eacute; o&nbsp;RANGE_HI_KEY -1 da linha atual. Por exemplo, dado a imagem anterior (colocar o n&uacute;mero da figura) se olharmos para a linha 4 temos 466 registros no RANGE_ROWS. Essas 466 linhas existem do valor 2013-08-04 (que &eacute; a mesma coisa que o RANGE_HI_KEY + 1 da linha 3) e vai at&eacute; o valor 2013-08-05(que &eacute; a mesma coisa que o RANGE_HI_KEY -1 da linha 4).</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>EQ_ROWS</strong> - A quantidade de valores exatos para os registros que aparecem na coluna RANGE_HI_KEY.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>DISTINCT_RANGE_ROWS</strong> - A quantidade de valores distintos dentro do RANGE_ROWS. Isso significa que de 466 registros do RANGE_ROWS da linha 4, dois desses valores sao DISTINTOS, provavelmente um valor 2013-08-04 e outro valor 2013-08-05.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><strong>AVG_RANGE_ROWS</strong> - Esse valor basicamente&nbsp; &eacute; o valor do RANGE_ROWS / DISTINCT_RANGE_ROWS.</span></p>
<p style="text-align: justify;"><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Obs: N&atilde;o se preocupe se parece confuso, agora iremos fazer essa leitura na pratica, isso tornar&aacute; nosso exemplo muito mais simples de entender.</span></p>
<p style="text-align: justify;"><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Se executarmos a consulta a seguir, o SQL Server deve estimar um total de 374 linhas, pois, esse e o valor que existe para a coluna EQ_ROWS dentro do HISTOGRAMA para o valor &lsquo;2013-080-03&rsquo; na linha tr&ecirc;s.</span></p>
<pre class="scroll"><code class="mysql">USE AdventureWorks2014<br />GO<br />SELECT * FROM Production.TransactionHistory <br />WHERE TransactionDate = '2013-08-03'<br /></code><strong></strong></pre>
<pre class="scroll"><strong><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Plano de Execu&ccedil;&atilde;o</span></strong></pre>
<pre class="scroll"><code class="mysql"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0876.stats_4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0876.stats_5F00_4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0876.stats_4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0876.stats_5F00_4.png" alt="" width="298" height="147" border="0" /></a></code></pre>
<pre class="scroll">&nbsp;<span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;"><span style="line-height: 107%; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Como o SQL Server chegou nesse valor?</span></span>&nbsp;</pre>
<pre class="scroll"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6644.stats_5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6644.stats_5F00_5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6644.stats_5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6644.stats_5F00_5.png" alt="" border="0" /></a></span></pre>
<p><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;">Agora vamos fazer uma consulta sobre um valor que n&atilde;o est&aacute; no RANGE_HI_KEY, isso significa que o registro s&oacute; pode estar entre algum outro intervalo do histograma. </span><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Se executarmos a consulta a seguir, o SQL Server deve estimar um total de 233 linhas.</span></span></p>
<p>&nbsp;</p>
<pre class="scroll"><code class="mysql">USE AdventureWorks2014<br />GO<br />SELECT * FROM Production.TransactionHistory <br />WHERE TransactionDate = '2013-08-04'<br /> </code></pre>
<p>&nbsp;</p>
<p><strong><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Plano de execu&ccedil;&atilde;o:</span></strong></p>
<p><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/5557.stats_6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5557.stats_5F00_6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/5557.stats_6.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5557.stats_5F00_6.png" alt="" width="306" height="142" border="0" /></a></span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif; font-size: small;">Como o valor utilizado como par&acirc;metro, n&atilde;o aparece no RANGE_HI_KEY, o SQL Server utilizou o valor que est&aacute; de maneira &ldquo;oculta&rdquo; na linha de n&uacute;mero 4 (olhar a explica&ccedil;&atilde;o contida sobre RANGE_ROWS discutido anteriormente).</span></p>
<p style="text-align: justify;"><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Basicamente o SQL Server pegou o valor da coluna RANGE_ROWS do HISTOGRAMA e dividiu pelo valor DISTINCT_RANGE_ROWS, sendo 466/2. Conforme imagem a seguir:</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/8171.stats_7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8171.stats_5F00_7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/8171.stats_7.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/8171.stats_5F00_7.png" alt="" border="0" /></a></p>
<p><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><strong>Conclus&atilde;o</strong>:</span></span></p>
<p><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">Nesse artigo podemos aprender um pouco sobre conceitos sobre estat&iacute;sticas e de como o SQL Server utiliza as estat&iacute;sticas para estimar uma quantidade de linhas que ser&atilde;o retornadas por uma opera&ccedil;&atilde;o.&nbsp;No pr&oacute;ximo</span></span><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR">&nbsp;artigo discutiremos mais como as estat&iacute;sticas funcionam em consultas utilizando valores de um determinado intervalo.</span></span></p>
<p><span style="line-height: 107%; font-family: tahoma,arial,helvetica,sans-serif; font-size: small; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><span style="line-height: 107%; font-family: 'Segoe UI',sans-serif; font-size: 11pt; mso-ansi-language: PT-BR; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;" lang="PT-BR"><strong>Refer&ecirc;ncias</strong>:</span></span></p>
<p><a href="https://msdn.microsoft.com/en-us/library/ms174384.aspx">https://msdn.microsoft.com/en-us/library/ms174384.aspx</a></p>
<p><a href="https://technet.microsoft.com/en-us/library/dd535534(v=sql.100).aspx">https://technet.microsoft.com/en-us/library/dd535534(v=sql.100).aspx</a></p>
<p><a href="http://blogs.msdn.com/b/bartd/archive/2011/01/25/query_5f00_tuning_5f00_key_5f00_terms.aspx">http://blogs.msdn.com/b/bartd/archive/2011/01/25/query_5f00_tuning_5f00_key_5f00_terms.aspx</a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Foreign Keys, confiança e planos de execução</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/foreign-keys-confiana-e-planos-de-execuo</link>
      <pubDate>Thu, 18 Jun 2015 19:32:00 GMT</pubDate>
      <dc:creator><![CDATA[FonsecaSergio]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2015/06/18/foreign-keys-confiana-e-planos-de-execuo/</guid>
      <description><![CDATA[Vamos falar sobre FKs e como elas influenciam os seu plano de execu&ccedil;&atilde;o.
Primeiramente...]]></description>
      <content:encoded><![CDATA[<p>Vamos falar sobre FKs e como elas influenciam os seu plano de execu&ccedil;&atilde;o.</p>
<p>Primeiramente vamos criar algumas tabelas, ainda sem FKs&nbsp;e inserir alguns dados</p>
<pre class="scroll"><code class="mysql">USE [SANDBOX]<br /> GO<br /> <br /> ----------------------------------------------------------------------<br /> IF OBJECT_ID('[dbo].[tCliente]') IS NOT NULL<br /> DROP TABLE [dbo].[tCliente]<br /> GO<br /> IF OBJECT_ID('[dbo].[tEstado]') IS NOT NULL<br /> DROP TABLE [dbo].[tEstado]<br /> GO<br /> <br /> ----------------------------------------------------------<br /> CREATE TABLE <span style="font-size: small;"><strong>[dbo].[tEstado]</strong></span><br /> (<br /> [id_Estado] [int] NOT NULL,<br /> [Estado] [varchar](50) NOT NULL,<br /> CONSTRAINT [PK_tEstado] PRIMARY KEY CLUSTERED <br /> (<br /> [id_Estado] ASC<br /> ) ON [PRIMARY]<br /> ) ON [PRIMARY]<br /> <br /> GO<br /> <br /> CREATE TABLE <span style="font-size: small;"><strong>[dbo].[tCliente]</strong></span><br /> (<br /> [Id] [int] NOT NULL,<br /> [Nome] [varchar](50) NOT NULL,<br /> [Id_Estado] [int] NOT NULL,<br /> CONSTRAINT [PK_tCliente] PRIMARY KEY CLUSTERED <br /> (<br /> [Id] ASC<br /> ) ON [PRIMARY]<br /> ) ON [PRIMARY]<br /> GO<br /> <br /> ----------------------------------------------------------<br /> INSERT INTO [dbo].[tEstado] <br /> VALUES (1,'SP'), (2,'RJ'), (3,'MG')<br /> GO<br /> INSERT INTO [dbo].[tCliente] <br /> VALUES (1,'SERGIO',1), (2,'FERNANDO',2), (3,'MARIA',3)<br /> GO</code></pre>
<p>&nbsp;</p>
<p>Ap&oacute;s a cria&ccedil;&atilde;o vamos fazer um SELECT simples. (<strong>Obs: S&oacute; retornamos dados da tabela cliente "C.Id, C.Nome, C.Id_Estado"</strong>)</p>
<p>&nbsp;</p>
<pre class="scroll"><code class="mysql">SELECT C.Id, C.Nome, C.Id_Estado <br /> FROM [dbo].[tCliente] C<br /> INNER JOIN [dbo].[tEstado] E<br /> ON C.Id_Estado = E.id_Estado<br /> </code></pre>
<p>&nbsp;E vemos o plano:</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1680.FIG1.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1680.FIG1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1680.FIG1.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1680.FIG1.jpg" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>Apesar de&nbsp;<strong>N&Atilde;O TER&nbsp;UTILIZADO&nbsp;</strong>os campos&nbsp;da tabela Estado no SELECT,&nbsp;o SQL&nbsp;precisa consultar&nbsp;a tabela estado para garantir que n&atilde;o referenciamos na tabela Cliente nenhum dado <strong>fora do dom&iacute;nio</strong>.</p>
<p>Para que o SQL saiba que n&atilde;o precisa consultar a tabela, ele tem que <strong>CONFIAR</strong> em algo como uma Foreign Key</p>
<p>&nbsp;</p>
<pre class="scroll"><code class="mysql">ALTER TABLE [dbo].[tCliente] <span style="background-color: #ffff00;">ADD CONSTRAINT</span><br /> FK_tCliente_tEstado FOREIGN KEY<br /> ( Id_Estado ) REFERENCES dbo.tEstado ( id_Estado ) <br /> <br /> GO<br /> SELECT C.Id, C.Nome, C.Id_Estado <br /> FROM [dbo].[tCliente] C<br /> INNER JOIN [dbo].[tEstado] E<br /> ON C.Id_Estado = E.id_Estado<br /> GO</code></pre>
<p>&nbsp;</p>
<p>Analisando novamente o plano, vemos que o <strong>SQL confia na FK</strong> e n&atilde;o precisa consultar&nbsp;uma tabela se os&nbsp;dados n&atilde;o s&atilde;o retornados.</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6507.FIG2.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6507.FIG2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6507.FIG2.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6507.FIG2.jpg" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>Mas calma ! N&atilde;o acabou.</p>
<p>O que acontece em sistemas de produ&ccedil;&atilde;o, principalmente em migra&ccedil;&otilde;es? <strong>CARGA DE DADOS</strong>.</p>
<p>Qual t&eacute;cnica &eacute; usada para acelerar a carga?</p>
<ol>
<li>Desligar FK</li>
<li>Carregar dados</li>
<li>Religar FK</li>
</ol>
<p>&nbsp;</p>
<p>Algo como o comando abaixo:</p>
<pre class="scroll"><code class="mysql">ALTER TABLE [dbo].[tCliente] <br /> <span style="background-color: #ffff00;">NOCHECK CONSTRAINT</span> FK_tCliente_tEstado;<br />GO<br />INSERT INTO [dbo].[tCliente] <br /> VALUES (4,'AAAA',1), (5,'BBBB',2), (6,'CCCC',3)<br />GO<br />ALTER TABLE [dbo].[tCliente] <br /> <span style="background-color: #ffff00;">CHECK CONSTRAINT</span> FK_tCliente_tEstado;<br /> </code></pre>
<p><code class="mysql">&nbsp;</code></p>
<p><strong>Tudo OK? <span style="color: #ff0000;">N&atilde;o ! </span></strong>Na verdade, utilizando o comando acima, voc&ecirc; ativa a constraint, <span style="background-color: #ffff00;"><strong>mas apenas para o que for inserido a partir de agora<span style="background-color: #ffffff;">.&nbsp;</span></strong></span></p>
<p><span style="background-color: #ffff00;"><span style="background-color: #ffffff;">Logo,&nbsp;tudo o que foi inserido entre o momento que foi desligado e religado a FK,</span><strong><span style="background-color: #ffffff;"> fica sem verifica&ccedil;&atilde;o. </span></strong></span>Ou seja, o <strong>SQL perde a confian&ccedil;a na FK</strong>, voltando ao estado inicial</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1348.FIG1.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1348.FIG1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1348.FIG1.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1348.FIG1.jpg" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>Nos ambientes que tenho&nbsp;analisado, encontro <strong>muito</strong> este cen&aacute;rio, que pode levar a <strong>problemas de performance onde voc&ecirc; n&atilde;o recebe um alerta, </strong>ou em caso de dados sem dom&iacute;nio valido, um UPDATE&nbsp;poderia&nbsp;gerar um erro.</p>
<p>Para verificar tudo o que est&aacute; errado, use os comandos abaixo:</p>
<pre class="scroll"><code class="mysql">SELECT * FROM sys.foreign_keys <br />WHERE is_not_trusted = 1<br /> <br />SELECT * FROM sys.check_constraints <br />WHERE is_not_trusted = 1</code></pre>
<p>Pegue todos as FKs e Check Constraints n&atilde;o confi&aacute;veis e ligue novamente utilizando o comando abaixo</p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><strong><span style="color: #ff0000;">OBS: Planeje o melhor hor&aacute;rio esta atividade, pois o SQL ter&aacute; que varrer toda tabela para validar os dados.</span></strong></span></p>
<p>&nbsp;</p>
<pre class="scroll"><code class="mysql">ALTER TABLE [dbo].[tCliente] <br /> <span style="color: #ff0000; font-size: medium;"><strong><span style="background-color: #ffff00;">WITH CHECK</span></strong></span> CHECK CONSTRAINT FK_tCliente_tEstado;</code></pre>
<p><br />REF: <a href="https://technet.microsoft.com/en-us/library/ms190273.aspx">https://technet.microsoft.com/en-us/library/ms190273.aspx</a></p>
<p>"<em>WITH CHECK | WITH NOCHECK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</em></p>
<p><em>Specifies whether the data in the table is or is not validated against a newly added or re-enabled FOREIGN KEY or CHECK constraint. If not specified, WITH CHECK is assumed for new constraints, and WITH NOCHECK is assumed for re-enabled constraints.</em></p>
<p><em>If you do not want to verify new CHECK or FOREIGN KEY constraints against existing data, use WITH NOCHECK. We do not recommend doing this, except in rare cases. The new constraint will be evaluated in all later data updates. Any constraint violations that are suppressed by WITH NOCHECK when the constraint is added may cause future updates to fail if they update rows with data that does not comply with the constraint.&nbsp;&nbsp;</em></p>
<p><em>The query optimizer does not consider constraints that are defined WITH NOCHECK. Such constraints are ignored until they are re-enabled by using <span class="code">ALTER TABLE table WITH CHECK CHECK CONSTRAINT ALL</span>.</em>"</p>
<p>&nbsp;</p>
<p>Anexo o script utilizado para este exemplo.</p>
<p>&nbsp;</p>
<p>Espero que tenham gostado e que&nbsp;seja &uacute;til para mais&nbsp;algu&eacute;m, at&eacute; a pr&oacute;xima!</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/62/26/00/SCRIPT_FK_NOT_TRUSTED.sql" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-62-26-00/SCRIPT_5F00_FK_5F00_NOT_5F00_TRUSTED.sql">SCRIPT_FK_NOT_TRUSTED.sql</a></p>]]></content:encoded>
    </item>
    <item>
      <title>O caso da tabela VAZIA de 70 Gb</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/o-caso-da-tabela-vazia-de-70-gb</link>
      <pubDate>Wed, 10 Jun 2015 20:33:00 GMT</pubDate>
      <dc:creator><![CDATA[FonsecaSergio]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2015/06/10/o-caso-da-tabela-vazia-de-70-gb/</guid>
      <description><![CDATA[Novamente estou aqui para contar um caso que aconteceu em um cliente.
Sintomas: Uma consulta a uma...]]></description>
      <content:encoded><![CDATA[<p>Novamente estou aqui para contar um caso que aconteceu em um cliente.</p>
<p><strong>Sintomas</strong>: Uma consulta a uma tabela de fila est&aacute; lenta, chegando a dar timeout. Detalhe &eacute; a quantidade de linhas normalmente varia entre 0 e 30, com muitos INSERTs e DELETEs. Mesmo com&nbsp;o processamento da&nbsp;fila parado um select simples&nbsp;continuava lento.</p>
<ul>
<li>Select COUNT(*) =0.</li>
</ul>
<ul>
<li>Sp_spaceused<br />Rows = 0 / Data = 76.101.144KB ???&nbsp;&nbsp; &nbsp;Hein <strong>&macr;\_(ツ)_/&macr;</strong>&nbsp;... &nbsp;Como ???</li>
</ul>
<p>&nbsp;</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0601.fig1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0601.fig1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0601.fig1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0601.fig1.png" alt="" border="0" /></a><br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;<br /><strong>Deve ter algo desatualizado&hellip;</strong></p>
<ul>
<li>EXEC sp_spaceused @updateusage = N'TRUE';</li>
</ul>
<ul>
<li>&ldquo;<em>When updateusage is specified, the SQL Server Database Engine scans the data pages in the database and makes any required corrections to the sys.allocation_units and sys.partitions catalog views <span style="background-color: #ffff00;">regarding the storage space used by each table</span>. There are some situations, for example, after an index is dropped, when the space information for the table may not be current. updateusage can take some time to run on large tables or databases. Use updateusage only when you suspect incorrect values are being returned and when the process will not have an adverse effect on other users or processes in the database. If preferred, DBCC UPDATEUSAGE can be run separately.&rdquo;. Ref </em><a href="https://msdn.microsoft.com/en-us/library/ms188776.aspx"><em>https://msdn.microsoft.com/en-us/library/ms188776.aspx</em></a></li>
</ul>
<p>&nbsp;</p>
<ul>
<li>NADA :(</li>
</ul>
<ul>
<li>Ap&oacute;s alguma pesquisa cheguei em alguns problemas relacionados a heaps, ainda achei que n&atilde;o, pois jurava ter visto uma chave prim&aacute;ria de relance. Mas ao olhar com mais detalhes verifico que &eacute; uma&nbsp;<strong>PK (Non-Clustered)</strong></li>
</ul>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/5861.FIG2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5861.FIG2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/5861.FIG2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/5861.FIG2.png" alt="" width="214" height="394" border="0" /></a><br />&nbsp;</p>
<p>&nbsp;</p>
<p>Agora vamos a simula&ccedil;&atilde;o e ver se o problema &eacute; reproduz&iacute;vel.</p>
<p>Iniciando por um teste com <strong>&iacute;ndice cluster.</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="708">
<pre class="scroll"><code class="mysql">USE SANDBOX<br /> GO<br /> SET NOCOUNT ON<br /> <br /> GO<br /> IF OBJECT_ID('TABLE_CLUSTER') IS NOT NULL<br /> DROP TABLE TABLE_CLUSTER<br /> GO<br /> <br /> CREATE TABLE TABLE_CLUSTER<br /> (<br /> ID INT IDENTITY(1,1) PRIMARY KEY<br /> ,COL VARCHAR(8000)<br /> )<br /> GO<br /> ----------------------------------------------------------------------------------------------<br /> --INSERT 1 ROW<br /> ----------------------------------------------------------------------------------------------<br /> INSERT INTO TABLE_CLUSTER<br /> VALUES (REPLICATE('A',8000))<br /> GO<br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_CLUSTER') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_CLUSTER'<br /> GO<br /> ----------------------------------------------------------------------------------------------<br /> --INSERT +1000 ROWs<br /> ----------------------------------------------------------------------------------------------<br /> INSERT INTO TABLE_CLUSTER<br /> VALUES (REPLICATE('B',8000))<br /> GO 5000<br /> <br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_CLUSTER') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_CLUSTER'<br /> GO<br /> <br /> ----------------------------------------------------------------------------------------------<br /> --DELETE ROWS 1 by 1<br /> ----------------------------------------------------------------------------------------------<br /> DELETE TOP (1) FROM TABLE_CLUSTER<br /> GO 5001<br /> <br /> WAITFOR DELAY '00:00:05' -- WAITING FOR ASYNC CLEAN UP (*GHOST CLEAN UP)<br /> GO<br /> <br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_CLUSTER') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_CLUSTER'<br /> GO</code></pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/2604.fig3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2604.fig3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/2604.fig3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/2604.fig3.png" alt="" border="0" /></a><br />&nbsp;<br />&nbsp;&nbsp;</p>
<p>OK. Tudo normal.</p>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="708">
<pre class="scroll"><code class="mysql">USE SANDBOX<br /> GO<br /> SET NOCOUNT ON<br /> <br /> GO<br /> IF OBJECT_ID('TABLE_HEAP') IS NOT NULL<br /> DROP TABLE TABLE_HEAP<br /> GO<br /> <br /> CREATE TABLE TABLE_HEAP<br /> (<br /> ID INT IDENTITY(1,1)-- PRIMARY KEY<br /> ,COL VARCHAR(8000)<br /> )<br /> GO<br /> ----------------------------------------------------------------------------------------------<br /> --INSERT 1 ROW<br /> ----------------------------------------------------------------------------------------------<br /> INSERT INTO TABLE_HEAP<br /> VALUES (REPLICATE('A',8000))<br /> GO<br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_HEAP') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_HEAP'<br /> GO<br /> ----------------------------------------------------------------------------------------------<br /> --INSERT +1000 ROW<br /> ----------------------------------------------------------------------------------------------<br /> INSERT INTO TABLE_HEAP<br /> VALUES (REPLICATE('B',8000))<br /> GO 5000<br /> <br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_HEAP') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_HEAP'<br /> GO<br /> <br /> ----------------------------------------------------------------------------------------------<br /> --DELETE ROWS 1 by 1<br /> ----------------------------------------------------------------------------------------------<br /> DELETE TOP (1) FROM TABLE_HEAP<br /> GO 5001<br /> <br /> WAITFOR DELAY '00:00:05' -- (*THERE IS NO GHOST CLEAN UP FOR HEAP) LET IT HERE JUST TO BE LIKE CLUSTER SCRIPT<br /> GO<br /> <br /> SELECT total_pages, used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id FROM sys.partitions where object_id = object_id('TABLE_HEAP') )<br /> GO<br /> EXEC sp_spaceused 'TABLE_HEAP'<br /> GO</code></pre>
<p>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1263.fig4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1263.fig4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/1263.fig4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/1263.fig4.png" alt="" border="0" /></a><br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br /><span style="font-size: small;"><strong>Como assim 0 linhas e 40.008Kb.</strong></span></p>
<p>&nbsp;</p>
<p>Ap&oacute;s v&aacute;rias pesquisas acabei chegando na resposta.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="708">
<p><strong>DELETE (Transact-SQL)</strong></p>
<p><a href="https://msdn.microsoft.com/en-us/library/ms189835.aspx">https://msdn.microsoft.com/en-us/library/ms189835.aspx</a></p>
<p>&nbsp;</p>
<p><em><strong>Locking Behavior</strong></em></p>
<p>By default, a DELETE statement always acquires an exclusive (X) lock on the table it modifies, and holds that lock until the transaction completes. With an exclusive (X) lock, no other transactions can modify data; read operations can take place only with the use of the NOLOCK hint or read uncommitted isolation level. You can specify table hints to override this default behavior for the duration of the DELETE statement by specifying another locking method, however, we recommend that hints be used only as a last resort by experienced developers and database administrators. For more information, see Table Hints (Transact-SQL).</p>
<p><strong>When rows are deleted from a heap the Database Engine may use row or page locking for the operation. As a result, the <span style="background-color: #ffff00;">pages made empty by the delete operation remain allocated to the heap</span>. When empty pages are not deallocated, the associated space cannot be reused by other objects in the database.</strong></p>
<p>To delete rows in a heap and deallocate pages, use one of the following methods.</p>
<p style="padding-left: 30px;">&bull;Specify the <span style="background-color: #ffff00;">TABLOCK hint in the DELETE</span> statement. Using the TABLOCK hint causes the delete operation to take an exclusive lock on the table instead of a row or page lock. This allows the pages to be deallocated. For more information about the TABLOCK hint, see Table Hints (Transact-SQL).<br />&bull;Use <span style="background-color: #ffff00;">TRUNCATE TABLE</span> if all rows are to be deleted from the table.<br />&bull;Create a <span style="background-color: #ffff00;">clustered index</span> on the heap before deleting the rows. You can drop the clustered index after the rows are deleted. This method is more time consuming than the previous methods and uses more temporary resources.</p>
<p>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Segue tamb&eacute;m um KB</p>
<p><strong>Space that a table uses is not completely released after you use a DELETE statement to delete data from the table in SQL Server</strong></p>
<p><a href="https://support.microsoft.com/en-us/kb/913399">https://support.microsoft.com/en-us/kb/913399</a></p>
<p>&nbsp;</p>
<p>No caso a solu&ccedil;&atilde;o a mais longo prazo &eacute; <strong>CRIAR UM INDICE CLUSTER</strong> e deixar ele l&aacute;. <span style="text-decoration: line-through;">Mas uma solu&ccedil;&atilde;o que n&atilde;o est&aacute; na documenta&ccedil;&atilde;o &eacute; fazer um REBUILD.</span> (Recomendei a altera&ccedil;&atilde;o na documenta&ccedil;&atilde;o e agora esta l&aacute;)</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="708">
<pre class="scroll"><code class="mysql">----------------------------------------------------------------------------------------------<br />--SOLUTION<br />----------------------------------------------------------------------------------------------<br /><br /><span style="background-color: #ffff00;"><strong> ALTER TABLE TABLE_HEAP REBUILD</strong></span><br /> <br /> SELECT total_pages,<br /> used_pages, data_pages FROM sys.allocation_units where container_id = ( SELECT partition_id<br /> FROM sys.partitions where object_id = object_id('TABLE_HEAP') )<br /> <br /> GO<br /> <br /> EXEC sp_spaceused 'TABLE_HEAP'<br /> <br /> GO<br /> </code></pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0218.fig5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0218.fig5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0218.fig5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0218.fig5.png" alt="" width="351" height="82" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;Espero que tenham gostado e que&nbsp;seja &uacute;til para mais&nbsp;algu&eacute;m, at&eacute; a pr&oacute;xima!</p>
<p>&nbsp;</p>
<p>*[UPDATE] S&oacute; para complementar, este problema aconteceu no SQL 2008 R2, provavelmente nas anteriores tamb&eacute;m, mas o mesmo comportamento se mantem at&eacute; SQL 2014.</p>
<p>*[UPDATE 2] Books Online alterado com REBUILD (<a href="https://msdn.microsoft.com/en-us/library/ms189835.aspx">https://msdn.microsoft.com/en-us/library/ms189835.aspx</a>)</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/62/09/77/TESTE_SCRIPT.sql" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-62-09-77/TESTE_5F00_SCRIPT.sql">TESTE_SCRIPT.sql</a></p>]]></content:encoded>
    </item>
    <item>
      <title>In-Memory OLTP - Melhorias no Transaction Logging</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/in-memory-oltp-melhorias-no-transaction-logging</link>
      <pubDate>Tue, 13 Jan 2015 07:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Alberto Lima (PFE)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2015/01/13/in-memory-oltp-melhorias-no-transaction-logging/</guid>
      <description><![CDATA[In-Memory OLTP - Melhorias no Transaction Logging
O Transaction Log &eacute; respons&aacute;vel por...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;"><strong>In-Memory OLTP - Melhorias no Transaction Logging</strong></p>
<p style="text-align: justify;">O <em>Transaction Log</em> &eacute; respons&aacute;vel por gravar todas as modifica&ccedil;&otilde;es realizadas por uma transa&ccedil;&atilde;o. Ele &eacute; essencial para o caso de uma falha (ex. falta de energia)<ins cite="mailto:Alberto%20Lima" datetime="2015-01-13T12:19"> </ins>o arquivo de Log &eacute; fundamental no processo de <em>Recovery</em> e trazer o banco de dados a um estado consistente.</p>
<p style="text-align: justify;">Podemos ainda dizer que a capacidade de grava&ccedil;&atilde;o de um banco de dados &eacute; limitada pela capacidade de grava&ccedil;&atilde;o dos dados no Transaction Log.</p>
<p style="text-align: justify;">O SQL Server 2014 introduziu uma s&eacute;rie de melhorias com rela&ccedil;&atilde;o ao transaction log, para que fosse possivel manter a consistencia dos dados das tabelas In-Memory. Isso se deve ao fato de que as tabelas na mem&oacute;ria precisam persisitir no Log da mesma maneira que &eacute; feito hoje nas tabelas no disco.</p>
<p style="text-align: justify;">A feature In-Memory do SQL Server 2014 foi criada principalmente para resolver problemas de concorr&ecirc;ncia f&iacute;sica quando v&aacute;rios usu&aacute;rios ao mesmo mesmo tempo fazem altera&ccedil;&otilde;es em uma mesma P&aacute;gina/Estrutura F&iacute;sica em mem&oacute;ria, o que chamamos de concorr&ecirc;ncia por <em>Latch</em>.</p>
<p style="text-align: justify;">As opera&ccedil;&otilde;es nas tabelas In-Memory s&atilde;o opera&ccedil;&otilde;es muito r&aacute;pidas e para que a performance do In-Mermory n&atilde;o fosse prejudicada foram feitas uma s&eacute;rie de melhorias com rela&ccedil;&atilde;o ao transacion Log, essas melhorias s&atilde;o as seguintes:</p>
<ul style="text-align: justify;">
<li>As opera&ccedil;&otilde;es de Insert e delete requerem menos espa&ccedil;o de grava&ccedil;&otilde;es do que as tabelas em disco.</li>
</ul>
<ul style="text-align: justify;">
<li>In-Mermoy OLTP tenta agupar os registros de Log em um grande registro de Log com at&eacute; 24KB, e com isso reduzir a quantidade de escritas.</li>
</ul>
<ul style="text-align: justify;">
<li>Agora o&nbsp; In-Memory utiliza um modelo de concorr&ecirc;ncia otimista e as opera&ccedil;&otilde;es s&atilde;o gravadas apenas no momento do <em>Commit</em>, ao contr&aacute;rio das tabelas de disco que todos os passos erram gravados para possiblitar o <em>Rollback </em>das opera&ccedil;&otilde;es. Ou seja ele efetua todas altera&ccedil;&otilde;es passo a passo e s&oacute; grava no log no momento do Commit e isso reduz o n&uacute;mero de vezes que uma transa&ccedil;&atilde;o precisa escrever no <em>Log Buffer</em>.</li>
</ul>
<ul style="text-align: justify;">
<li>As altera&ccedil;&otilde;es nos &iacute;ndices <em>In-Memory</em> n&atilde;o s&atilde;o Logadas, com isso h&aacute; um n&uacute;mero muito menor de registros gerados no <em>Transaction Log</em>, caso ocorra <em>restart </em>da inst&acirc;ncia os &iacute;ndices das tabelas In-Memory s&atilde;o criados no processo de <em>Recovery</em>.</li>
</ul>
<p style="text-align: justify;">O ponto que gostaria de chamar aten&ccedil;&atilde;o nesse artigo, &eacute; que al&eacute;m das melhorias citadas acima que ocorreram no produto, &eacute; recomendado que sejam utilizados discos SSD no volume onde &eacute; armazenado o arquivo de Log, caso contr&aacute;rio o ganho de performance com as tabelas In-Memory podem ser impossilitados ou suprimidos, porque mesmo as opera&ccedil;&otilde;es In-Memory (muito r&aacute;pidas e sem <em>Latch) </em>precisam persistir no disco e quanto mais rapido a grava&ccedil;&atilde;o no log ocorrer, melhor.</p>
<p style="text-align: justify;">Veja agora uma DEMO que ilustra uma grande redu&ccedil;&atilde;o de Log nas transa&ccedil;&otilde;es das tabelas In-Memory:</p>
<p style="text-align: justify;">O trecho abaixo ir&aacute; criar um banco de dados com o nome de Demolog</p>
<p>USE master</p>
<p>GO</p>
<p>IF EXISTS (SELECT * FROM sys.databases WHERE name='DemoLog')</p>
<p>DROP DATABASE DemoLog;</p>
<p>GO</p>
<p>CREATE DATABASE DemoLog ON&nbsp;</p>
<p>&nbsp;PRIMARY (NAME= [DemoLog_data], FILENAME ='C:\DataHK\DemoLog_data.mdf'),</p>
<p>&nbsp;FILEGROUP [DemoLog_FG] CONTAINS MEMORY_OPTIMIZED_DATA</p>
<p>&nbsp;(NAME= [DemoLog_InMemory1],&nbsp; FILENAME = 'C:\DataHK\StorageDemo_DemoLog_InMemory1')</p>
<p>&nbsp;LOG ON (name = [DemoLog_log], Filename='C:\DataHK\StorageDemoLog_InMemory_log.ldf', size=100MB);</p>
<p>GO</p>
<p>--Agora vamos criar duas tabelas uma em Memoria com o nome de InMemoryLog e outra no disco com nome de DiscoLog.</p>
<p>USE DemoLog</p>
<p>GO</p>
<p>IF EXISTS (SELECT * FROM sys.objects WHERE name='InMemoryLog')</p>
<p>DROP TABLE [dbo].[InMemoryLog]</p>
<p>GO</p>
<p>-- Cria uma tabela In-Memory</p>
<p>CREATE TABLE [dbo].[InMemoryLog]</p>
<p>( [Campo1] int NOT NULL,</p>
<p>&nbsp; [Campo2] char(100) NOT NULL,&nbsp;</p>
<p>&nbsp; CONSTRAINT [pk_InMemoryLog_campo1] PRIMARY KEY NONCLUSTERED HASH ([campo1])</p>
<p>&nbsp; WITH(BUCKET_COUNT = 1000000)</p>
<p>) WITH (MEMORY_OPTIMIZED =ON,</p>
<p>&nbsp;DURABILITY = SCHEMA_AND_DATA);</p>
<p>GO</p>
<p>IF EXISTS (SELECT * FROM sys.objects WHERE name='DiscoLog')</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DROP TABLE [dbo].[DiscoLog]</p>
<p>GO</p>
<p>--Vamos criar uma tabela similar no disco.</p>
<p>&nbsp;CREATE TABLE [dbo].[DiscoLog]</p>
<p>( [Campo1] int NOT NULL,</p>
<p>&nbsp; [Campo2] char(100) NOT NULL)</p>
<p>GO</p>
<p>CREATE UNIQUE NONCLUSTERED INDEX ix_discoLog_campo1 on DiscoLog(Campo1);</p>
<p>GO</p>
<p>--Agora vamos inserir alguns registros na tabela e examinar o log com a fun&ccedil;&atilde;o fn_dblog().</p>
<p>BEGIN TRAN</p>
<p>DECLARE @i int = 0</p>
<p>WHILE (@i &lt; 100)</p>
<p>BEGIN</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO DiscoLog VALUES (@i, replicate ('1', 100))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET @i = @I + 1</p>
<p>END</p>
<p>COMMIT</p>
<p>--Veja que foram inseridos 200 registros no log.</p>
<p>SELECT *<br />FROM sys.fn_dblog(NULL, NULL)</p>
<p>WHERE PartitionId IN</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (SELECT partition_id FROM sys.partitions</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE object_id=object_id('DiscoLog'))</p>
<p>ORDER BY [Current LSN] ASC;</p>
<p>GO</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0167.Log1.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0167.Log1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/0167.Log1.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/0167.Log1.jpg" alt="" width="710" height="275" border="0" /></a></p>
<p>--Agora vamos rodar um script similar para inserir os dados nas tabelas In-Memory</p>
<p>&nbsp;BEGIN TRAN</p>
<p>DECLARE @i int = 0</p>
<p>WHILE (@i &lt; 100)</p>
<p>BEGIN</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO InMemoryLog VALUES (@i, replicate ('1', 100))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET @i = @i + 1</p>
<p>END</p>
<p>COMMIT</p>
<p>-- Olhe o Log</p>
<p>SELECT *<br />FROM sys.fn_dblog(NULL, NULL) order by [Current LSN] DESC;</p>
<p>GO</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/3312.Log2.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/3312.Log2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/3312.Log2.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/3312.Log2.jpg" alt="" width="662" height="193" border="0" /></a></p>
<p style="text-align: justify;">&nbsp;Veja na imagem acima que h&aacute; apenas um registro de LOG para todos os 100 Inserts com o tipo de LOP_HK, LOP indica que &eacute; uma opera&ccedil;&atilde;o l&oacute;gica e HK &eacute; a inicial do do nome Hekaton que era o nome do projeto do In-Memory.</p>
<p style="text-align: justify;">Agora utilize a query abaixo para visualizar o registros agrupados In-Memory (Veja o LSN da opera&ccedil;&atilde;o).</p>
<p>SELECT [current lsn], [transaction id], operation,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; operation_desc, tx_end_timestamp, total_size,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object_name(table_id) AS TableName</p>
<p>FROM sys.fn_dblog_xtp(null, null)</p>
<p>WHERE [Current LSN] = '00000020:0000015f:0004';</p>
<p>Com isso, termino minha explica&ccedil;&atilde;o sobre Log no In-Memory, espero que tenham gostado, at&eacute; a pr&oacute;xima!</p>
<p>Alberto Lima - SQL Server PFE</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Configurando o Min e Max Server Memory – Parte 2</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/configurando-o-min-e-max-server-memory-parte-2</link>
      <pubDate>Thu, 04 Dec 2014 12:11:06 GMT</pubDate>
      <dc:creator><![CDATA[Alberto Lima (PFE)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2014/12/04/configurando-o-min-e-max-server-memory-parte-2/</guid>
      <description><![CDATA[Configurando o Min e Max Server Memory &ndash; Parte 2
A configura&ccedil;&atilde;o de "Min Server...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;">Configurando o Min e Max Server Memory &ndash; Parte 2</p>
<p style="text-align: justify;">A configura&ccedil;&atilde;o de "<em>Min Server Memory</em>" &eacute; usada para atribuir o m&iacute;nimo de mem&oacute;ria que voc&ecirc; imagina que seja necess&aacute;rio para uma inst&acirc;ncia SQL Server. Ao contr&aacute;rio do que muita gente pensa, logo ap&oacute;s a configura&ccedil;&atilde;o do <em>&ldquo;Min Server Memory&rdquo; </em>no sp_configure o SQL Server n&atilde;o ir&aacute; utilizar essa mem&oacute;ria imediatamente. Isso ocorrer&aacute; conforme os usu&aacute;rios utilizando os bancos de dados da inst&acirc;ncia e lendo as p&aacute;ginas do disco, at&eacute; que o consumo de mem&oacute;ria atinja o valor do <em>"Min Server Memory". </em></p>
<p style="text-align: justify;">Ap&oacute;s o consumo de memoria superar o &ldquo;Min Server Memory&rdquo; e se estabele&ccedil;a entre Min e Max , quando ocorrer uma press&atilde;o de mem&oacute;ria externa, o Memory Manager do Sistema Operacional ir&aacute; solicitar ao SQL Server que reduza seu consumo de mem&oacute;ria em uma situa&ccedil;&atilde;o de press&atilde;o de mem&oacute;ria externa o SQL Server n&atilde;o reduzir&aacute; sua utiliza&ccedil;&atilde;o<del cite="mailto:Alberto%20Lima" datetime="2014-12-04T11:56"> </del><ins cite="mailto:Alberto%20Lima" datetime="2014-12-04T11:55">&nbsp;</ins>abaixo do no estabelecido no <em>"Min Server Memory"</em> ou seja, n&atilde;o ceder&aacute; esse espa&ccedil;o para o sistema operacional ou qualquer outro processo que esteja rodando no Windows.</p>
<p style="text-align: justify;"><strong>H&aacute; alguma situa&ccedil;&atilde;o que SQL Server pode reduzir a utiliza&ccedil;&atilde;o de mem&oacute;ria RAM para abaixo do que o estabelecido em Min Server Memory?</strong></p>
<p style="text-align: justify;">Caso o sistema operacional precise que o SQL Server ceda mais mem&oacute;ria al&eacute;m do m&iacute;nimo e isso n&atilde;o ocorrer, o SQL Server poder&aacute; ter uma parte da mem&oacute;ria alocada em PagingFile, que funciona como uma extens&atilde;o da mem&oacute;ria RAM, por&eacute;m no disco. Essa extens&atilde;o em disco que por sua vez, possui o acesso muito mais lento.</p>
<p style="text-align: justify;">Nos contadores do SQL Server, mais especificamente no objeto "<em>Memory Manager</em>" do Performance Monitor, podemos visualizar esse consumo. Nele encontraremos os contadores:</p>
<ul style="text-align: justify;">
<li>"<em>Total Server Memory</em>": demonstra o total que a inst&acirc;ncia utiliza como mem&oacute;ria <em>Committed </em>pelo <em>Memory Manager</em> (representado na cor verde).</li>
<li>"<em>Target Server Memory</em>": demonstra o total de mem&oacute;ria que o SQL Server pretende atingir e normalmente ele est&aacute; alinhado com o "Max Server Memory" que foi atribuido &agrave; inst&acirc;ncia</li>
<li>"<em>Stolen Server Memory</em>" : &eacute; a quantidade de p&aacute;ginas "roubadas" do BufferPool.</li>
</ul>
<p style="text-align: justify;">Observe o seguinte racioc&iacute;nio:</p>
<p style="text-align: justify;">Imagine que voc&ecirc; possui uma inst&acirc;ncia SQL Server 2012, rodando em Windows Server 2012, com 100 GB de Mem&oacute;ria RAM e voc&ecirc; teve que reiniciar a inst&acirc;ncia ap&oacute;s efetuar atividade de manuten&ccedil;&atilde;o &agrave; meia noite. Os bancos de dados dessa inst&acirc;ncia possuem uma grande atividade durante o hor&aacute;rio regular do expediente de trabalho entre as 09:00 e 18:00 horas. Imagine tamb&eacute;m que voc&ecirc; configurou o "Min Server Memory" da inst&acirc;ncia para 30GB e o "Max Server Memory" para 80GB, consequentimente deixando 20GB para outros componentes, threads stack e outros processos no sistema operacional.</p>
<p style="text-align: justify;">Observe a imagem abaixo que ilustra o cen&aacute;rio descrito acima:</p>
<p style="text-align: justify;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6837.MineMaxServerMemory.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6837.MineMaxServerMemory.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/6837.MineMaxServerMemory.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/6837.MineMaxServerMemory.jpg" alt="" border="0" /></a></p>
<p style="text-align: justify;">No gr&aacute;fico acima, o &ldquo;Total Server Memory&rdquo; &eacute; o total de mem&oacute;ria que o SQL est&aacute; utilizando no momento. Observe que devido ao restart da inst&acirc;ncia que ocorreu a&nbsp; meia-noite, a utiliza&ccedil;&atilde;o da mem&oacute;ria come&ccedil;ou em zero e foi aumentando gradualmente de acordo com atividades que foram sendo executadas nos bancos. Podemos observar tamb&eacute;m que a quantidade de mem&oacute;ria sendo utilizada, atinge o estabelecido em &ldquo;Min Server Memory&rdquo; apenas quando o hor&aacute;rio de expediente come&ccedil;a, por volta das 9:00. Nesse nosso ambiente hipot&eacute;tico, ap&oacute;s o in&iacute;cio dos trabalhos, a quantidade de p&aacute;ginas lidas aumentou e atingiu o &ldquo;Target Server Memory&rdquo; ao meio dia - vale relembrar que comumente encontramos o &ldquo;Target Server Memory&rdquo; com o valor igual ao de &ldquo;Max Server Memory&rdquo;.</p>
<p style="text-align: justify;">Voltando a an&aacute;lise, imagine agora que um processo externo ao SQL come&ccedil;ou a ser executado ao meio dia, este processo consome muita mem&oacute;ria, o &ldquo;Memory Manager&rdquo; do Sistema operacional ir&aacute; solicitar que o SQL reduza seu consumo para dar espa&ccedil;o para esse processo. Uma vez que essa a&ccedil;&atilde;o seja tomada pelo SO, o SQL ir&aacute; devolver mem&oacute;ria at&eacute; que o limite de &ldquo;Min Server Memory&rdquo; seja atingido. Quando isso ocorrer, voc&ecirc; ver&aacute; que o &ldquo;Target Server Memory&rdquo; ser&aacute; reduzido e ter&aacute; um novo valor (no caso, 60GB). O SQL ent&atilde;o far&aacute; um <em>flush </em>de suas p&aacute;ginas em mem&oacute;ria e far&aacute; com que a mem&oacute;ria utilizada por ele chegue ao valor de &ldquo;Target Server Memory&rdquo; &ndash; o que ocorre as 16:00. &nbsp;</p>
<p style="text-align: justify;">Por fim, o processo externo que vinha consumindo muita mem&oacute;ria, termina sua execu&ccedil;&atilde;o. Ao t&eacute;rmino, o SQL poder&aacute; utilizar novamente o espa&ccedil;o solicitado anteriormente pelo SO e preencher o cache de dados com outras p&aacute;ginas. Essa a&ccedil;&atilde;o far&aacute; com que o &ldquo;Target Server Memory&rdquo; volte a crescer, at&eacute; que atinja o valor de &ldquo;Max Server Memory&rdquo; novamente.</p>
<p style="text-align: justify;"><strong>Como estimar a quantidade de mem&oacute;ria f&iacute;sica para uma inst&acirc;ncia SQL Server?</strong></p>
<p style="text-align: justify;">Essa &eacute; n&atilde;o uma pergunta simples de responder. Em um mundo perfeito, a quantidade ideal de mem&oacute;ria para uma inst&acirc;ncia SQL Server seria fazer com que a inst&acirc;ncia tenha espa&ccedil;o suficiente para colocar em cache de dados todas as p&aacute;ginas so seu banco de dados. Desta forma a inst&acirc;ncia n&atilde;o precisar&aacute; em momento algum trazer as p&aacute;ginas de dados do disco, pois as mesmas j&aacute; estariam no BufferPool. No ambiente corporativo<ins cite="mailto:Alberto%20Lima" datetime="2014-12-04T16:10"> </ins>e maior parte dos casos, obviamente n&atilde;o temos mem&oacute;ria suficiente para tal, por&eacute;m quanto mais mem&oacute;ria eu tiver para cache, melhor.</p>
<p style="text-align: justify;">O contador do Perfmon <em>"Page Life Expectancy"</em> &eacute; um 'indicador para visualizarmos quando h&aacute; uma press&atilde;o de mem&oacute;ria. Esse contador mostra uma m&eacute;dia de segundos em que suas p&aacute;ginas de dados permanecem em mem&oacute;ria, ou seja, por quanto tempo essas p&aacute;ginas est&atilde;o sendo reaproveitadas por outras consultas sem precisar ir ao sistema de discos. H&aacute; v&aacute;rios documentos que citam o n&uacute;mero m&aacute;gico de 300 segundos para esse contador. Na realidade n&atilde;o existe um n&uacute;mero exato, o que eu n&atilde;o se pode esperar deste contador &eacute; que haja quedas muito bruscas. O fato deste tempo diminuir &eacute; um ind&iacute;cio de que houve uma press&atilde;o interna ou externa de mem&oacute;ria, fazendo com que novas p&aacute;ginas tenham que vir de disco e varrendo as antigas do <em>BufferPool</em>.</p>
<p style="text-align: justify;"><strong>Quando habilito <em>Lock Pages In-Memory</em> (LPIM) o processo SQL Server pode ir para o <em>PagingFile</em>?</strong></p>
<p style="text-align: justify;">Quando &eacute; concedida de permiss&atilde;o de <em>"Lock Pages In Memory"</em> para conta de servi&ccedil;o, o SQL Server utilizar&aacute; mem&oacute;ria AWE (<em>Address Windowing Extention</em>) para aloca&ccedil;&atilde;o de p&aacute;ginas de at&eacute; 8KB e neste caso a mem&oacute;ria adquirida via AWE <strong>N&Atilde;O </strong>poder&aacute; ir para <em>PagingFile </em>pois n&atilde;o faz parte do <em>WorkingSet </em>do processo do SQL Server.</p>
<p style="text-align: justify;">Para maiores informa&ccedil;&otilde;es sobre <em>Lock Pages In-Memory</em> em 64 bits, veja o link abaixo:</p>
<p style="text-align: justify;"><a href="http://blogs.msdn.com/b/slavao/archive/2005/04/29/413425.aspx">http://blogs.msdn.com/b/slavao/archive/2005/04/29/413425.aspx</a></p>
<p style="text-align: justify;"><strong>Devo sempre atribuir o Min e Max Server Memory da minha inst&acirc;ncia?</strong></p>
<p style="text-align: justify;">A resposta &eacute; depende. Quando em um servidor a inst&acirc;ncia SQL Server n&atilde;o &eacute; compartilhada com mais nada, &eacute; muito mais dif&iacute;cil que os cen&aacute;rios de press&atilde;o de mem&oacute;ria mencionados aqui ocorram. No entanto, em uma inst&acirc;ncia SQL Server em cluster, &eacute; bastante importante que sejam atribu&iacute;dos o Max e principalmente o Min Server Memory. Suponha que voce possua dois servidores cada um com a instancia SQL Server, uma chamada de InstA e a outra de InstB e que possam fazer Failover entre eles. Em um dado momento occorre uma falha no Servidor da InstA e foi feito o Failvover para InstB. Ap&oacute;s o failover, as duas inst&acirc;ncias ter&atilde;o que compartilhar a mesma mem&oacute;ria. Caso o "Min Server Memory" tenha sido atribuido com um valor muito alto na InstB, poder&aacute; faltar uma mem&oacute;ria m&Iacute;nima para que a InstA consiga ser operacional. (Ex: Uma maquina de 100GB &nbsp;de Mem&oacute;ria RAM que possui uma inst&acirc;ncia com o "Min Server Memory" de 70GB e o "Max Server Memory" tamb&eacute;m com 70GB, o que chamamos de Mem&oacute;ria Est&aacute;tica), a inst&acirc;ncia InstA ter&aacute; apenas 30GB para dividir com as threads da outra inst&acirc;ncia e entre os processos do sistema operacional, porque a InstB j&aacute; utilizou 70GB e sobrar&aacute; pouca mem&oacute;ria para a inst&acirc;ncia e o servidor operarem.</p>
<p style="text-align: justify;">Espero essa s&eacute;rie de atigos tenha auxiliado a um melhor entendimento do que levar ou n&atilde;o em considera&ccedil;&atilde;o ao se configurar o Min e Max Server Memory de suas inst&acirc;ncias SQL Server<span style="color: #008000;">.</span></p>
<p style="text-align: justify;">At&eacute; a pr&oacute;xima pessoal.</p>
<p style="text-align: justify;">Para quem n&atilde;o viu a primeira parte:</p>
<p><a title="Configurando o Min e Max Server Memory &ndash; Parte 1" href="http://blogs.msdn.com/b/pfebrasilsql/archive/2014/10/03/configurando-o-min-server-memory-e-max-server-memory-parte-1.aspx">Configurando o Min e Max Server Memory &ndash; Parte 1</a></p>
<p><strong>Alberto Lima</strong></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Apresentação Troubleshooting com DMVS.</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/apresentao-troubleshooting-com-dmvs</link>
      <pubDate>Wed, 15 Oct 2014 11:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Freddie Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2014/10/15/apresentao-troubleshooting-com-dmvs/</guid>
      <description><![CDATA[Ol&aacute;.
Pessoal, gostaria de compartilhar minha apresenta&ccedil;&atilde;o sobre...]]></description>
      <content:encoded><![CDATA[<p><br />Ol&aacute;.</p>
<p>Pessoal, gostaria de compartilhar minha apresenta&ccedil;&atilde;o sobre Troubleshooting com DMVS, que fiz no SQL Saturday #325.</p>
<p>A id&eacute;ia foi demonstrar de forma r&aacute;pida quais DMVS mais utilizadas, entender como definir uma estrat&eacute;gia eficaz de troubleshooting, para isso eu demonstrei inicialmente como os componentes do SQL Server est&atilde;o distribu&iacute;dos e onde as DMVS entram nisso&hellip;</p>
<p><a title="https://skydrive.live.com/redir?resid=A909ABAAAF1D7D57!35163" href="https://skydrive.live.com/redir?resid=A909ABAAAF1D7D57!35163">https://skydrive.live.com/redir?resid=A909ABAAAF1D7D57!35163</a></p>
<p>Queria agradecer &agrave;queles que puderam assistir minha palestra, e &agrave;queles que n&atilde;o conseguiram &hellip; podem ter uma id&eacute;ia do conte&uacute;do.</p>
<p>Abra&ccedil;os</p>]]></content:encoded>
    </item>
    <item>
      <title>Configurando o Min e Max Server Memory – Parte 1</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasilsql/configurando-o-min-e-max-server-memory-parte-1</link>
      <pubDate>Fri, 03 Oct 2014 14:27:00 GMT</pubDate>
      <dc:creator><![CDATA[Alberto Lima (PFE)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasilsql/2014/10/03/configurando-o-min-e-max-server-memory-parte-1/</guid>
      <description><![CDATA[Configurando o Min e Max Server Memory &ndash; Parte 1
Hoje o acesso as p&aacute;ginas de dados em...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;"><strong>Configurando o Min e Max Server Memory &ndash; Parte 1</strong></p>
<p style="text-align: justify;">Hoje o acesso as p&aacute;ginas de dados em disco est&atilde;o na casa dos milissegundos, enquanto o acesso em mem&oacute;ria est&aacute; na casa dos nanossegundos. Partindo desse pressuposto, podemos dizer que o acesso a p&aacute;ginas em mem&oacute;ria &eacute; mais bem mais r&aacute;pido do que o acesso a disco, o que n&atilde;o &eacute; nenhum mist&eacute;rio para n&oacute;s. O SQL Server tamb&eacute;m sabe disso e tentar&aacute; o m&aacute;ximo poss&iacute;vel efetuar cache e colocar suas p&aacute;ginas em mem&oacute;ria. O <em>BufferPool</em> normalmente &eacute; o componente do SQL Server que mais utiliza mem&oacute;ria, pois nele ficam armazenadas as p&aacute;ginas de dados.</p>
<p style="text-align: justify;">Quando efetuamos uma Query(consulta) o <em>Storage Engine</em> utiliza o <em>Access Methods</em> para retornar as p&aacute;ginas de dados necess&aacute;rias para atender essa requisi&ccedil;&atilde;o,<em> </em>essas p&aacute;ginas podem estar no <em>cache</em> de dados, ou seja, no <em>BufferPool</em>, caso as p&aacute;ginas da tabela ou &iacute;ndice da opera&ccedil;&atilde;o (leitura/altera&ccedil;&atilde;o) n&atilde;o estiverem no <em>BufferPool</em>, o SQL Server acessar&aacute; o disco (Storage) e ir&aacute; trazer essas p&aacute;ginas para o BufferPool.</p>
<p style="text-align: justify;">O <em>BufferPool</em> &eacute; formado por buffers de 8KB para armazenar p&aacute;ginas de dados e ao contr&aacute;rio do que muitos pensam N&Atilde;O &eacute; lugar se armazena o <em>Procedure Cache.</em><br />Conforme os usu&aacute;rios acessam os dados em suas tabelas e &iacute;ndices, as p&aacute;ginas de dados v&atilde;o sendo armazenadas <em>no BufferPool </em>e com isso o consumo de mem&oacute;ria aumenta<em>, </em>at&eacute; chegar bem pr&oacute;ximo do limite f&iacute;sico da m&aacute;quina<em>.</em><strong> </strong>Cada p&aacute;gina no SQL Server tem o tamanho de 8KB, se voc&ecirc; acessar 1.000.000 de p&aacute;ginas (diferentes), voc&ecirc; ter&aacute; algo em torno de 7812 MB de cache de dados, sem um limitador, essas p&aacute;ginas consumir&atilde;o mem&oacute;ria do cache at&eacute; que ocorra uma press&atilde;o interna ou externa. Tal limitador &eacute; chamado de <em>Max Server Memory</em>. Al&eacute;m do <em>Max Server Memory</em>, que limita o m&aacute;ximo de mem&oacute;ria RAM que poder&aacute; ser consumida pelo <em>BufferPool</em>, temos o&nbsp; <em>Min Server Memory"</em>, que limita o m&iacute;nimo de mem&oacute;ria, cujo qual irei explicar a seguir.</p>
<p style="text-align: justify;"><strong>Min Server Memory e Max Server Memory</strong>.</p>
<p style="text-align: justify;">Em uma inst&acirc;ncia SQL Server podemos configurar por meio do sp_configure o Min e <em>Max Server Memory</em>. Quando os configuramos estamos atribuindo o &ldquo;m&iacute;nimo&rdquo; e o "m&aacute;ximo" de mem&oacute;ria que umainst&acirc;ncia SQL Server poder&aacute; utilizar, por&eacute;m existem algumas diferen&ccedil;as entre vers&otilde;es do SQL Server que irei explicar com mais detalhes a diante.</p>
<p style="text-align: justify;">&Eacute; comum configurarem o "<em>Max Server Memory</em>" pr&oacute;ximo do total de mem&oacute;ria f&iacute;sica do servidor, deixando um pouco de espa&ccedil;o para que o sistema operacional opere de forma satisfat&oacute;ria, sem que ocorra press&atilde;o de mem&oacute;ria externa por parte do OS. Para atribuir o "<em>Min Server Memory</em>" e o <em>"Max Server Memory</em>", devemos levar em conta as seguintes considera&ccedil;&otilde;es de acordo com as seguintes vers&otilde;es do SQL Server.</p>
<p style="text-align: justify;"><strong>SQL Server 2008 R2 - Max Server Memory.</strong></p>
<p style="text-align: justify;">Das vers&otilde;es anteriores at&eacute; a vers&atilde;o SQL Server 2008 R2, quando configuramos o <em>"Max Server Memory"</em> estamos atribuindo o total de mem&oacute;ria que o SQL Server utilizar&aacute; como cache de dados, ou seja, estamos atribuindo o total de mem&oacute;ria que apenas o <em>BufferPool</em> utiliza e tamb&eacute;m mem&oacute;ria que ele fornece para outras aloca&ccedil;&otilde;es (at&eacute; 8KB) que s&atilde;o para outro prop&oacute;sito ou para componentes na Engine que n&atilde;o s&atilde;o "<em>Database Pages"</em>. Essas p&aacute;ginas s&atilde;o chamadas de <em>Stolen Pages, </em>que traduzindo ao p&eacute; da letra s&atilde;o p&aacute;ginas roubadas<em>,</em> exatamente porque foram p&aacute;ginas roubadas do BufferPool para outras "funcionalidades" no SQL Server. Esse valor pode ser visualizado na stolen_pages_kb da DMV sys.dm_os_memory_clerks e esse consumo faz parte do <em>Max Server Memory</em>. Por&eacute;m h&aacute; uma outra s&eacute;rie de aloca&ccedil;&otilde;es de mem&oacute;ria, al&eacute;m das descritas acima que n&atilde;o faz parte da mem&oacute;ria que foi atribu&iacute;da no <em>Max Server Memory</em> e essas aloca&ccedil;&otilde;es s&atilde;o as seguintes:</p>
<ul style="text-align: justify;">
<li>Aloca&ccedil;&otilde;es Multi-Page, que s&atilde;o aloca&ccedil;&otilde;es que utilizam mais que 8K. Essas duas aloca&ccedil;&otilde;es podem ser visualizadas na coluna multi_pages_kb da DMV sys.dm_os_memory_clerks.</li>
<li>Aloca&ccedil;&otilde;es de CLR, que inclui as Heaps.</li>
<li>Aloca&ccedil;&otilde;es feitas para threads dentro do processo do SQL Server.</li>
<li>Aloca&ccedil;&otilde;es de Extended Store Procedures, objetos criados usando OLE Automation procedures(sp_OA calls) e Aloca&ccedil;&otilde;es de Linked Server.</li>
</ul>
<p style="text-align: justify;"><strong>SQL Server 2012 - Max Server Memory</strong>.</p>
<p style="text-align: justify;">No SQL Server 2012 o "<em>Max Server Memory</em>" n&atilde;o limita somente o total de mem&oacute;ria que o <em>BufferPool </em>utiliza, as aloca&ccedil;&otilde;es de mem&oacute;ria mudaram, este funcionamento tomaria uma outra s&eacute;rie de posts para explicar, mas basicamente o <em>BufferPool</em> &eacute; apenas um consumidor de mem&oacute;ria como todos os outros <em>&ldquo;Memory Clerks&rdquo;.</em> Desde do SQL Server 2012 todas essas aloca&ccedil;&otilde;es podem ser visualizadas atrav&eacute;s da coluna pages_kb da sys.dm_os_memory_clerks, que inclui as aloca&ccedil;&otilde;es de &ldquo;Stolen pages&rdquo; de &ldquo;Multipage&rdquo; das vers&otilde;es anteriores.</p>
<p style="text-align: justify;">Hoje o &ldquo;<em>Max Server Memory</em>&rdquo; limita "quase" toda a mem&oacute;ria do SQL Server e as exce&ccedil;&otilde;es s&atilde;o as seguintes:</p>
<ul style="text-align: justify;">
<li>Aloca&ccedil;&otilde;es feitas para threads dentro do processo do SQL Server.</li>
<li>Aloca&ccedil;&otilde;es de <em>Extended Stored Procedures</em>, objetos criados usando OLE Automation procedures(sp_OA calls) e Aloca&ccedil;&otilde;es de Linked Server.</li>
</ul>
<p style="text-align: justify;">Cada <em>Thread</em> tem 2MB de <em>Stack Size</em>, para calcular o m&aacute;ximo de <em>Worker Threads</em> que uma inst&acirc;ncia SQL Server poder&aacute; utilizar h&aacute; a seguinte formula:</p>
<p style="text-align: justify;"><strong>Maximum worker threads = (512+ (NumerodeProcessadoresdaMaquina - 4) * 16)</strong></p>
<p style="text-align: justify;"><strong>SQL Server 2014 &ndash; Max Server Memory</strong></p>
<p style="text-align: justify;">Os valores referentes a utiliza&ccedil;&atilde;o de mem&oacute;ria SQL Server 2012 tamb&eacute;m s&atilde;o v&aacute;lidos para o SQL Server 2014. Quando utilizamos a feature <em>In-Memory OLTP</em> adicionando uma tabela em mem&oacute;ria &ldquo;<em>Memory Optimized Tables&rdquo;</em>. Observe como ficaria uma divis&atilde;o de mem&oacute;ria na Imagem 1 do diagrama abaixo.<strong><br />&nbsp;<br />&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/7450.MaxServerMemory.JPG" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/7450.MaxServerMemory.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/93/79/7450.MaxServerMemory.JPG" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-93-79/7450.MaxServerMemory.JPG" alt="" border="0" /></a><br /><br /> <br /></strong>Conforme adicionamos outras tabelas em mem&oacute;ria, essas tabelas v&atilde;o ocupando espa&ccedil;o, por&eacute;m n&atilde;o devemos esquecer que mais tabelas vir&atilde;o do disco para mem&oacute;ria. Por isso, quando se for criar uma tabela <em>In-Memory</em> n&atilde;o se pode esquecer de provisionar seu tamanho inicial, dimensionando tamb&eacute;m seu crescimento para n&atilde;o causar um cen&aacute;rio como a imagem 2, na qual se possui algumas tabelas <em>In-Memory</em> que ocupam um grande espa&ccedil;o, porque nestes casos as tabelas ficam inteiras na mem&oacute;ria e pode faltar espa&ccedil;o para outras p&aacute;ginas que vir&atilde;o do disco.<strong></strong></p>
<p style="text-align: justify;">Veja um exemplo de como configurar &ldquo;Max Server Memory&rdquo; de uma inst&acirc;ncia com 40GB via linha de comando abaixo:<strong></strong></p>
<p style="text-align: justify;">sp_configure 'show advanced options', 1;</p>
<p style="text-align: justify;">GO</p>
<p style="text-align: justify;">RECONFIGURE;</p>
<p style="text-align: justify;">GO</p>
<p style="text-align: justify;">sp_configure 'max server memory', 40960;</p>
<p style="text-align: justify;">GO</p>
<p style="text-align: justify;">RECONFIGURE;</p>
<p style="text-align: justify;">GO</p>
<p style="text-align: justify;">Para maiores informa&ccedil;&otilde;es de como configurar o <em>Max Server Memory</em> acesse o link:</p>
<p style="text-align: justify;"><a href="http://msdn.microsoft.com/en-us/library/ms178067.aspx">http://msdn.microsoft.com/en-us/library/ms178067.aspx</a></p>
<p style="text-align: justify;">No pr&oacute;ximo post continuarei com <em>Min Server Memory</em> e alguns exemplos de como isso acontece em algumas inst&acirc;ncias.</p>
<p style="text-align: justify;"><a title="Configurando o Min e Max Server Memory &ndash; Parte 2" href="http://blogs.msdn.com/b/pfebrasilsql/archive/2014/12/04/configurando-o-min-e-max-server-memory-parte-2.aspx">Configurando o Min e Max Server Memory &ndash; Parte 2</a></p>
<p style="text-align: justify;"><strong>Alberto Lima</strong></p>]]></content:encoded>
    </item>
  </channel>
</rss>