Índices de tabela na memória – Uma dose de SQLEspresso

Índices de tabela na memória – Uma dose de SQLEspresso

Índices de tabela na memória - Uma dose de SQLEspresso
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Agora que escrevi sobre tabelas na memória e migração para tabelas na memória, vamos ver os índices e como eles são criados e como eles funcionam nessas tabelas. Como você pode imaginar índices, chamados de índices otimizados para memória, são diferentes para esses tipos de tabelas, então vamos ver o quão diferentes são das tabelas regulares.

Antes de mergulharmos nesse assunto, é MUITO importante observar as maiores diferenças.

Primeiro, TODOS os índices otimizados de memória DEVEM ser criados quando a tabela é criada ou migrada. Você não pode adicionar índices em uma tabela existente sem soltar e recriar a tabela.

Em segundo lugar, atualmente você pode ter apenas 8 índices por tabela, incluindo sua chave primária. Lembre-se de que todas as tabelas devem ter uma chave primária para impor uma cópia secundária para um mínimo de durabilidade do esquema. Isso significa que você pode realmente adicionar apenas 7 índices adicionais, para entender suas cargas de trabalho e planejar a indexação de acordo.

Terceiro, os índices otimizados para memória existem apenas na memória, não são mantidos no disco e não são registrados nos logs de transações. Portanto, isso significa que eles também são recriados na inicialização do banco de dados e sofrem um impacto no desempenho à medida que são reconstruídos.

Em seguida, não existem pesquisas de chave em uma tabela In-Memory, pois todos os índices são por natureza um índice de cobertura. O índice usa um ponteiro para as linhas reais para obter os campos necessários em vez de usar uma chave primária, como fazem as tabelas físicas. Portanto, eles são muito mais eficientes no retorno dos dados adequados.

Por fim, também não existe fragmentação para esses índices, pois eles não são lidos no disco. Diferentemente dos índices de disco, eles não possuem um comprimento de página fixo. No índice de disco, use estruturas físicas de página na Árvore B, determinando quanto da página deve ser preenchida e o que o Fator de preenchimento faz. Como isso não é um requisito, a fragmentação não existe.

Leia Também  Um guia abrangente para a função Formato SQL

Ok, agora que fizemos tudo isso, vejamos os tipos de índices que você pode criar e entenda o que são e como são criados.

Índice HASH não clusterizado – Este índice é usado para acessar a versão In-Memory da tabela, chamada Hash. Eles são ótimos para predicados que são pesquisas únicas e não intervalos de valores. Estes são otimizados para buscas de valores de igualdade. Por exemplo, WHERE Name = “Joe”. Algo a ter em mente ao determinar o que incluir em seus índices é este; se sua consulta tiver dois ou mais campos como seu predicado e seu índice consistir apenas em um desses campos, você fará uma varredura. Ele não procurará nesse campo que foi incluído. É importante entender suas cargas de trabalho e indexação nos campos apropriados (ou uma combinação deles), pois você está limitado a apenas 7 índices adicionais. Dado que esse OLTP na memória está focado principalmente em cargas de trabalho pesadas de inserção / atualização e, menos ainda, na leitura, isso deve ser menos preocupante.

Esses tipos de índices são altamente otimizados e não funcionam muito bem se houver muitos valores duplicados em um índice, quanto mais exclusivos forem seus valores, melhores serão os ganhos de desempenho do índice. É sempre importante conhecer seus dados.

Quando se trata desses índices, saber que seu consumo de memória é importante. O tipo de índice de hash é um comprimento fixo e consome uma quantidade fixa de memória determinada na criação. A quantidade de memória é determinada pelo valor de Bucket Count. É extremamente importante garantir que esse valor seja o mais preciso possível. O dimensionamento correto desse número pode prejudicar o desempenho, número muito baixo, de acordo com a Microsoft “pode afetar significativamente o desempenho da carga de trabalho e o tempo de recuperação de um banco de dados. Procure meu próximo blog sobre como determinar contagens de bucket para obter mais informações. Enquanto isso, você pode aprender mais sobre índices de hash em docs.microsoft.

Leia Também  Webcast gratuito hoje: como medir seu SQL Server

Usando T-SQL (ambos os métodos dão o mesmo resultado)

Exemplo Um (Observe que o índice vem após os campos da tabela)

Exemplo dois (observe que o índice vem após o campo)

Índice não clusterizado – Eles também são usados ​​para acessar a versão In-Memory da tabela, no entanto, eles são otimizados para valores de intervalo como menores que e iguais a, predicados de desigualdade e ordens de classificação. Os exemplos são WHERE DATE entre ‘20190101’ e ‘20191231’ e WHERE DATE <> ‘20191231’. Esses índices não requerem uma contagem de buckets ou uma quantidade fixa de memória. A memória consumida por esses índices é determinada pelas contagens de linhas reais e pelo tamanho das colunas-chave indexadas, o que facilita a criação.

Além disso, ao contrário dos índices de hash que precisam de todos os campos necessários para que seu predicado faça parte do seu índice para obter uma busca, eles não precisam. Se seus predicados tiverem mais de um campo e seu índice tiver um deles como seu principal valor de chave de índice, você ainda poderá obter uma busca.

Usando T-SQL (ambos os métodos dão o mesmo resultado)

Exemplo Um (Observe que o índice vem após os campos da tabela)

Exemplo dois (observe que o índice vem após o campo)

Determinar qual tipo de índice usar pode ser complicado, mas a Microsoft nos deu um ótimo guia no gráfico abaixo.

Índices de tabela na memória - Uma dose de SQLEspresso 1

Como você pode ver, existem algumas diferenças importantes em como os índices da tabela In-Memory, índices otimizados para memória, funcionam em comparação com os índices normais de disco aos quais estamos acostumados. Como em qualquer outro design de tabela, é importante considerar suas necessidades de índice antes de criar ou migrar para tabelas otimizadas para memória. Você será feliz que você fez.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br