Design de banco de dados e verificação lógica para otimização de consultas SQL

Design de banco de dados e verificação lógica para otimização de consultas SQL

Normalization with SQL Server Query Optimization using Integer references
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


O design do banco de dados e a verificação lógica desempenham um papel vital no desempenho do banco de dados e na otimização da consulta SQL. Ambos têm parâmetros diferentes para tornar seu banco de dados e a consulta precisos.

Otimização de consulta SQL

Design do Banco de Dados

O design do banco de dados desempenha um papel essencial no lado do desempenho do banco de dados. Se a estrutura da tabela não estiver em termos adequados de distribuição de dados e de maneira normalizada, isso poderá gerar o desafio significativo de alterar a estrutura conforme e quando um problema aparecer na imagem. Discutiremos alguns parâmetros abaixo para ter em mente quando projetarmos o banco de dados.

Normalização

A normalização é uma técnica para estruturar dados relacionais na forma de esquema e tabela para reduzir a redundância de dados e evitar a anomalia de dados. A relação de dados pode ser projetada em 1NF, 2NF, 3NF, conforme necessário, com a natureza das informações. No lado do desempenho, a Normalização reduz as operações de E / S, evitando a inserção / atualização / exclusão de anomalia.
    A normalização da estrutura do banco de dados causa menos quantidade de armazenamento em comparação com dados não estruturados no SQL
    Banco de dados do servidor. Você pode entender mais aqui: o que é normalização de banco de dados no SQL Server?

Por exemplo:

Temos uma tabela com Merchant_stock com detalhes de Item, Comerciante, Quantidade disponível, Preço. O normalizamos para finalizar o nível com as referências da tabela de pesquisa no último formulário normalizado.

Normalização com otimização de consulta do SQL Server usando referências de número inteiro

Quando um usuário deseja obter detalhes do status do comerciante, da cidade e do comerciante com o item em estoque, ele pode
    junte várias tabelas com a cláusula de Chave Primária das tabelas de pesquisa.

A normalização do nível final reduz a redundância da tabela. Por exemplo: um usuário deseja alterar a cidade ou o status do comerciante, (n) o número de linhas será afetado na instrução de atualização com o primeiro caso da tabela de exemplo acima (merchant_stock). E no segundo caso, apenas uma linha será afetada no
Comerciante mesa. Novamente, a alteração do nome do status atualizará (n) linhas no segundo caso. Portanto, no terceiro caso, a referência Inteira é usada para o staus do comerciante para evitar as linhas de atualização (n) na tabela.

Os tipos estáticos de campos devem ser armazenados sempre na tabela de pesquisa, e usar a referência inteira na tabela de detalhes é a melhor prática para o design do banco de dados com a normalização.

Índices

Os índices são uma referência a uma pesquisa rápida nas informações. Um índice é uma ferramenta poderosa para localizar diretamente os dados de destino, em vez de varrer a tabela inteira e encontrar as linhas necessárias na tabela. O uso de um índice em cluster ou não em cluster é fazer padrões de correspondência rápida de dados. O índice melhora o desempenho geral da consulta com o uso inteligente dele. O SQL Server nos permite criar um índice com o número de opções abaixo, e cada uma delas tem um papel significativo no desempenho da consulta.

Leia Também  [Video] Assista ao trabalho de Brent no sp_Blitz

Opções de índice:

  • ALLOW_PAGE_LOCKS

  • ALLOW_ROW_LOCKS

  • COMPRESSÃO DE DADOS

  • DROP_EXISTING

  • FATOR DE PREENCHIMENTO

  • IGNORE_DUP_KEY

  • MAX_DURATION

  • MAXDOP (max_degree_of_parallelism)

  • CONECTADOS

  • OPTIMIZE_FOR_SEQUENTIAL_KEY

  • PAD_INDEX

  • RESUMABLE

  • SORT_IN_TEMPDB

  • STATISTICS_INCREMENTAL

  • STATISTICS_NORECOMPUTE

Partição de tabela

A Partição de Tabela do SQL Server é uma maneira de distribuir os dados pelo sistema de arquivos com o conjunto de configurações definidas pelo usuário.
    regras. Quando estamos trabalhando em uma tabela de tamanho grande, a opção de filtro de linha também está disponível; no entanto, é comparativamente mais lento em comparação com a opção Partição de tabela. Quando usamos a Partição da tabela na tabela, o
    O filtro de consulta terá como alvo a parte necessária da tabela e retornará o conjunto de resultados com relativa rapidez. Um filtro de consulta decidirá se concentrar em uma parte ou partição específica da tabela pelo esquema de partição. O uso adequado da partição da tabela e o design da tabela oferecem excelente desempenho de consulta na tabela grande.

Os usuários podem adicionar o grupo de arquivos e os arquivos ao banco de dados para usar a partição com a tabela. Por exemplo:

Balanceamento de linhas

Manter linhas em uma única tabela para todos os clientes não é a única solução em uma solução de banco de dados baseada em produto. Para as diferentes bases geográficas de clientes, os dados precisam ser armazenados no banco de dados de acordo com a geografia do cliente para atender aos problemas de latência e melhor otimização da Consulta SQL. Um aplicativo pode ser implantado em vários locais para executar atividades diferentes; no entanto, o local de inserção do banco de dados será único. Portanto, podemos ter um
    banco de dados configurado com as mesmas tabelas em vários sites e, de acordo com o cliente, as solicitações de geografia podem ser atendidas no banco de dados de destino.

Restrições

O SQL Server Query Optimizer sempre verifica a chave estrangeira e as restrições para preparar um plano de execução de consultas eficiente, e cada execução é executada no plano de execução. O otimizador do SQL Server é muito confiável e inteligente; se houver alguma restrição na coluna, o plano de execução ignorará a parte desnecessária das verificações de manipulação de dados.

Confirmação lógica

A verificação lógica faz parte do processo de consulta e dos parâmetros de desempenho relacionados. Estratégias de consulta diferentes
    com a maneira mais eficiente, são as soluções certas para o SQL Query Optimization. Aqui vamos discutir alguns
    parâmetros abaixo para ter em mente quando escrevemos uma consulta, Procedimento, Função ou Acionador.

Estrutura JOIN

JUNTE-SE estrutura com a ordem incorreta da tabela afeta o desempenho da consulta quando várias tabelas são
    presente em junções com várias condições na cláusula “Onde”. O otimizador de consulta sempre se refere à ordem da tabela nas junções e a altera de acordo para preparar o plano de execução. No entanto, o otimizador não seguirá todos os pedidos possíveis com a instrução de consulta. Portanto, os desenvolvedores precisam tentar ordenar a tabela na consulta preparada com um mapeamento individual. A ordem incorreta das tabelas na consulta de junção consome mais recursos no servidor e afeta outras consultas também no SQL Server.

Otimização de consultas SQL com pedidos JOIN adequados

Expressão de relação

A expressão relacional na cláusula WHERE é significativa para a otimização da consulta SQL. SE EXISTE, SE NÃO EXISTE, NÃO
    IN, IN, CASE WHEN e muitas outras condições podem ser usadas na cláusula WHERE. O uso sem visão das condições faz com que
    tempo de execução surpreendente e plano de execução também. Mesmo NOT IN pode ser substituído por LEFT JOIN por IS NULL
    condição também, que não é conhecida por muitos desenvolvedores. Que tipo de expressão pode ser usada e quando isso depende da natureza e dos tipos de dados? Para tornar sua consulta rápida e otimizada, depende da lógica que está sendo
    escrito pelo desenvolvedor.

Por exemplo:

Ou

3. Classificação de Dados

A classificação de dados é uma parte cara da execução da consulta no SQL Server. Os usuários podem evitar o uso de classificação desnecessária no programa SQL Server porque ele armazena o resultado da consulta definido no buffer para classificá-lo em uma referência de ordem específica. Mesmo uma opção de índice do SQL Server fornece uma opção para armazenar dados com a classificação, mais uma vez, é o trabalho do otimizador de consultas fazer um plano perfeito de execução de consultas.

Por exemplo: um índice é definido com a opção da coluna de classificação e os retornos das linhas da tabela também estarão em ordem; no entanto, a instrução SQL pode ter vários campos na cláusula ORDER BY. Portanto, isso pode fazer com que vários problemas processem os dados para classificar na ordem das colunas no termo ORDER BY. O usuário precisa usar os campos obrigatórios apenas para ter a classificação de dados em um conjunto de resultados específico apenas para evitar a classificação desnecessária de dados no procedimento.

Opções SET

Quando estamos trabalhando em um banco de dados de tamanho grande ou com uma boa experiência em SQL Query Optimization, definitivamente nós
    podem enfrentar problemas como: plano de execução múltipla para o procedimento único no SQL Server, consulta ou procedimento
    acelerar a execução no SSMS, mas não no aplicativo, os erros podem ser retornados pelo aplicativo para o
    procedimento (procedimento aninhado), mas funciona bem usando o SSMS, e muitos outros problemas podem ser resolvidos com a ajuda da declaração SET Options no SQL Server.

Quando executamos uma consulta usando o SSMS, ele usa as Opções SET configuradas padrão do SSMS. Se o aplicativo usa SET
    Opções, definidas no procedimento ou definidas na Conexão SQL, portanto, pode haver diferentes
    maneiras de execução para o mesmo procedimento pelo otimizador de consultas do SQL Server e para fazer vários planos de execução com
    um conjunto de opções SET.

Por exemplo:

DEFINIR ARITHABORT EM A instrução é necessária com a instrução ou procedimento de consulta 0 quando a operação aritmética está sendo usada
    na consulta.

NÍVEL DE ISOLAMENTO

SQL Server ISOLATION LEVEL significa controle de simultaneidade da transação e
    ÁCIDO (Atomicidade, Consistência, Isolamento e Durabilidade). NÍVEL DE ISOLAMENTO para cada transação determina a integração de dados com o bloqueio no nível da linha para usuários com nível diferente e por quanto tempo a transação deve reter bloqueios para proteger os dados contra essas alterações. O usuário pode definir o NÍVEL DE ISOLAMENTO nas conexões do banco de dados,
    e solicitações com o comando de SET TRANSACTION ISOLATION LEVEL LEIA NÃO COMPROMISSO / LEIA COMPROMISSO / REPETÍVEL LEIA / SERIALIZABLE. Até o usuário pode alterar o ISOLATION LEVEL no mesmo comando entre a execução para diferentes finalidades, para visibilidade de dados e otimização de consultas SQL.

Por exemplo:

Os usuários podem usar WITH (NOLOCK) com o nome da tabela na consulta para buscar dados não confirmados lidos. Para o procedimento, o
    A instrução SET pode ser escrita com ISOLATION LEVEL para ser aplicada a todas as tabelas do procedimento.

Chamada remota

A chamada remota a é uma consulta ou procedimento cruzado do SQL Server para solicitar ou executar operação no site remoto. Os usuários podem executar qualquer uma das operações INSERT / UPDATE ou DELETE usando consultas remotas com a ajuda do Servidor Vinculado. Até o usuário pode ingressar na tabela remota na tabela de banco de dados do servidor local também. Uma consulta remota não é considerada uma coisa ruim no SQL Server; no entanto, se filtrarmos ou manipularmos os dados remotos no servidor local que afeta o desempenho da consulta, para obter melhor desempenho, o usuário poderá executar o procedimento remoto no servidor local.

O procedimento remoto é uma boa opção para a otimização da Consulta SQL, escreva sua lógica no procedimento no
    servidor remoto finalize e execute esse procedimento com o servidor vinculado no SQL Server local.

Conclusão

A otimização de consultas do SQL Server pode ser uma tarefa difícil, especialmente quando se lida com um banco de dados grande, em que mesmo as pequenas alterações podem ter um impacto negativo no desempenho existente da consulta e do banco de dados.

Os parâmetros discutidos acima são relevantes para o design do banco de dados e a gravação da consulta. O produto e o banco de dados serão confiáveis ​​e melhores, pois os parâmetros acima são definidos e usados ​​com precisão no seu banco de dados.

Jignesh Raiyani
Últimas mensagens de Jignesh Raiyani (ver todos)

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