E executar os passos de estratégia de otimização 2-8-SQL

etapas de execução de SQL

verificação de gramática: Verifique a ortografia SQL conformidade com a especificação sintaxe

verificações de semântica: Verifique se a presença ou ausência de acesso ao objeto e o usuário tem as permissões apropriadas

Análise: há uma verificação na piscina comum está totalmente resolvido antes o mesmo bem, se houver, optar por ignorar o plano de execução e programas produzem executado diretamente

Análise rígido: SQL é apresentar uma ação de sobrecarga completa re-analisado a partir do zero, criar uma árvore de análise, plano de execução para a implementação SQL é caro, em muitos projetos do mesmo código de função para ser consistente com a ligação variável

Resolução Soft: encontrada com exatamente o mesmo SQL parsing bons resultados vai saltar dois passos atrás da forte determinação na piscina comum (pool compartilhado) em

Plano de Implementação: A lista recuado das etapas exibidas instrução SQL

 


otimização de hardware:

1. acesso caminho: método de acesso B + índice de árvore, método de acesso do índice de hash, método de acesso do cluster

2. A disposição física dos dados: como armazenar

3. memória disponível

4. processador disponível

O armazenamento centralizado e armazenamento distribuído. Refere-se ao armazenamento centralizado de todos os dados são armazenados no mesmo nó. Isso ajudará a melhorar a eficiência do banco de dados consultas e modificações. Mas armazenamento centralizado tem um grande risco, se o nó aparece danos irreversíveis irá travar o banco de dados. Tais como terremotos causa corrupção de dados.

6. algoritmo razoavelmente eficiente operação: varredura completa da tabela, índice de digitalização, loop aninhado, tipo - junção de mesclagem

Um armazenamento de estado sólido

8.RAID

 

índice

5 tipos de índice vantagens

Ao criar um índice exclusivo, você pode garantir a singularidade de cada linha de dados em uma tabela de banco de dados.

Pode acelerar grandemente a velocidade de recuperação de dados, que é a principal razão para a criação do índice.

Você pode acelerar a conexão entre a mesa ea mesa, especialmente em referência ao interesse particular para os aspectos de integridade de dados.

Ao usar a recuperação de dados em pacotes e classificação cláusula, ele também pode reduzir significativamente o tempo de consulta agrupamento e classificação.

Usando o índice, você pode processar a consulta, use corretivo para otimizar e melhorar o desempenho do sistema.

 

Condições devem ser indexados

1) Na coluna muitas vezes precisam de procurar, você pode acelerar a busca;

2) numa coluna de chave primária, a estrutura de acordo somente obrigatória e organização dos dados na coluna da tabela;

3) na coluna com a conexão regular, que principalmente alguns coluna de chave estrangeira, você pode acelerar a conexão;

4) criado em colunas que são freqüentemente exigidos de acordo com o alcance do índice de pesquisa porque o índice foi classificado, suas escalas designadas são contínuas; chave estrangeira para acelerar a construção do índice porque a conexão também irá reduzir a chance de impasse.

5) muitas vezes precisam de criar um índice nas colunas de ordenação, porque o índice foi classificado, de modo que a consulta pode ser usado para classificar o índice para acelerar o tempo de consulta de triagem;

6) Criar um índice é muitas vezes usado na cláusula WHERE da coluna acima das condições de julgamento para acelerar a velocidade.


Sistema (Desenho)

1. Algébrica Optimization - otimizador heurística

Tabela 2. Contador

3. Resumo

4. A sub-tabela

5. Anti-Paradigma Modelo. modo de lógica bem concebido

6. indexação de chave estrangeira

7. possível, evite usar uma função personalizada. Deve escrever instruções SQL, tanto quanto possível para evitar o uso de funções personalizadas, porque para a função personalizada, o otimizador não pode fazer otimização, se o abuso excessivo da função personalizada vai levar a degradação do desempenho do banco de dados. No entanto, em alguns casos necessário, você só pode usar uma função personalizada para conseguir uma consulta particular.

 

otimizador de consulta heurística

1. Selecione a operação deve realizar, tanto quanto possível. O mais importante, o mais básico. redução de custos de execução pode, muitas vezes várias ordens de magnitude, de modo que o cálculo intermediário da muito reduzidos

2. A operação de projecção e operação de selecção em simultâneo. Se uma pluralidade de operações de projecção e de selecção, e que tem uma relação com a mesma operação, todas estas operações podem ser completado durante a verificação deste relacionamento, a fim de evitar a relação redigitalização

3. A operação de projecção com os seus olhos, antes ou após a combinação. Não há necessidade de remover alguns dos campos e digitalizá-lo de novo relacionamento

4. Escolha Alguns o produto cartesiano o que precede, deve ser realizada para combinar em uma concatenação. relacionamento concatenação do que no mesmo produto cartesiano guardar um monte de tempo

5. Encontre subexpressão comum

 

1) Anti paradigma e o paradigma

O primeiro paradigma: cada coluna é um item de dados atômica indivisível.

O segundo paradigma: base dependente de uma primeira porção de alívio paradigma.

Terceiro Padrão: eliminação de base dependente a segunda transmissão de paradigma.

 

paradigma anti para o terceiro paradigma é por meio de adição de redundância destruiu a terceira forma normal, os primeiros dois paradigmas ainda tem que seguir.

 

vantagens de paradigma:

a. escrever rápido, porque há necessidade de escrever dados redundantes, reduzindo a carga da escrita.

b. Atualize o rápido porque geralmente apenas menos necessidades de dados a ser atualizado.

c. Como não há redundância, por isso não irá causar inconsistências de dados.

d., e menos necessidade de GROUP BY distintas.

A desvantagem é: a necessidade de associação.

 

Paradigma desvantagem é que as vantagens do anti-paradigma, qualquer correlação, e uma vez na mesma tabela pode ser concebido índice apropriado.

aplicações práticas normalmente não empregam paradigma completa, mas colocar alguma redundância para reduzir a tabela relacionada ea mesa, acelerar as consultas.

 

2) sub-tabela

Se os dados podem ser arquivados em um estado onde a tabela de dados, tais como a conclusão do modo de funcionamento e estado, ele pode ser considerado concluído e mesa o modo de operação em dados do estado, converter os dados para completar o Estado a tabela de estado de conclusão, uma vez que os dados são sempre operação estado de completa, para que o sistema está funcionando assim não importa quanto tempo as tabelas de dados estaduais prazo são quase constante, e o estado completo de dados, além de análise estatística, mas não exige quase nenhuma inquéritos, melhorando em muito a operação do sistema velocidade, a quantidade de dados na tabela sob o controle.

Além disso análise estatística Para a cena, a fim de reduzir a tabela união pode exigir consulta serviço a partir do modo de funcionamento e estado dos dois estados para completar uma segunda eleição.

 

Para alguns dos enormes quantidades de dados, você também pode considerar fazer o valor hash de um campo de acordo com o armazenamento pontos da tabela, naturalmente, aumentar a complexidade da aplicação, que é de jeito nenhum, de jeito nenhum normalmente é perfeita, a arquitetura é fazer trade-offs com base nos cenários de aplicação reais , o chamado lealdade e piedade filial não são atingidos, mas é mais apropriado, de alguma forma.

Outros problemas podem ser resolvidos por pontos distribuídos tabela de banco de dados, um banco de dados distribuído fundiu automaticamente armazenamento de tabela de consulta automática, protegido por uma complexidade middleware banco de dados distribuído, todos os tipos de sujo, ele quer o trabalho sujo.

 

3) Síntese

Para relatórios de estatísticas algum grande quantidade de dados, em tempo real, se não for necessário, ele pode ser resumido em uma base regular, como uma vez por hora, resumo ou resumo uma vez por dia, se você precisar de tempo real e, em seguida, para a vária grande mesa, vários grupos de, não só muito lentamente estatísticas e fácil de afetar as operações normais de negócios. O autor da empresa para ser antes, todas as noites abrir uma ampla variedade de tarefas regulares de coleta de dados, o banco de dados não é movimentada à noite, a partir das 12:00 até 6:00 da manhã, horário tarefa cronometrada está cheio, é realmente exausto ritmo ah, mas felizmente, o computador não será perder a paciência, aberração. . É claro que tais declarações são dados estatísticos a partir de ontem, a cada dia de atraso, geralmente isso é permitido.

 

4) tabela contador

aplicação web, a fim de cliques recordes, cliques podem projetar uma mesa,

criar hit_counter mesa (cnt int sem sinal não nulo);

 

Desde há apenas um registro para a disputa do bloqueio muito sério, pense no que solução fazer o mesmo com separação de bloqueio ConcurrentHashMap.

Tabela estrutura alterada da seguinte forma:

criar hit_counter mesa (slot tinyint sem assinatura não nulo chave primária, cnt int sem sinal não nulo);

100 avanço para os dados assim modificadas podem ser utilizadas quando a instrução seguinte,

actualização conjunto hit_counter CNT CNT + 1 = onde ranhura = RAND () * 100;

Quando soma get sobre ele, select sum (cnt) cnt de hit_counter;

 


Sistema (aplicação)

1. a utilização racional e eficiente de instruções SQL e métodos, sugerindo que optimize optimizador SQL

boa consulta

Siga o tamanho conjunto de resultados e o conjunto de dados intermediário

2. Observe o número de usuários, a simultaneidade. E, consequentemente, para verificar a sua concepção física, projeto de sistema

3. Optimize Configuração do servidor

 

instrução SQL usando os fatores a serem considerados

1) a quantidade total de dados

SQL considerar os fatores mais importantes: a quantidade de dados que deve ser acessado; a ausência de capacidade meta estabelecida, é difícil julgar a eficiência da execução da consulta

Consulta 2) definir o conjunto de resultados

Boa consulta: esta condição é satisfeita poucos dados, é possível filtrar um monte de dados

Onde as palavras: especialmente na sub-consulta ou exibição, onde pode haver várias palavras

A eficiência de filtragem, alta e baixa, afectada por outros factores

Fatores: as condições do filtro, a instrução SQL principal, consulta um enorme impacto sobre os dados

Tamanho 3) conjunto de resultados

A quantidade de dados retornados pela consulta, é importante para ser ignorado

Tamanho depende dos detalhes da mesa e filtros

Uma excepção é o número de uso ineficiente independente da combinação de condições é muito eficiente

De um ponto de vista técnico, o tamanho do conjunto de resultados da consulta não é importante, importante é o sentimento de usuário

desenvolvedores qualificados deve se esforçar para fazer o tempo de resposta é proporcional ao número de registros retornados

Número 4) para obter uma mesa conjunto de resultados envolvidos: o número de mesas podem afetar o desempenho de

Conexão: Too many junções de tabela (oito) em relação a questionar a justeza do projeto; Para Optimizer, com o aumento do número de mesas, a complexidade do crescimento exponencial, o tempo de escrever consultas complexas são muitas mesas, opções multi-ligados probabilidade de falha é muito alta

Ver: obscurecer o fato de que multi-table junta

Reduzir consultas complexas e visão complexa

5) o número de utilizadores simultâneos (o número de utilizadores em simultâneo modificar dados)

Preste atenção ao projeto: acesso contenção bloco, bloqueio, bloqueio, a coerência leitura

Em, o rendimento global geral do> tempo de resposta individual

O armazenamento de dados usando blocos de tamanho fixo, o acesso a múltiplos discos, I / O interacções é simples, e a memória tampão no processo, no entanto, quando os dados modificados é demasiado longo, irá ser migrada para outro bloco de armazenamento; blocos de dados em excesso pode causar problemas para acessar a contenção bloco de dados, o impacto do desempenho simultâneo

 


otimizador e conceitos SQL

 

Optimizer: Com a teoria relacional consulta original (álgebra relacional) prever a transformação semântica equivalente eficaz e correcta, para encontrar o caminho ideal, pode gerar nova aplicação óptima do programa

Otimização: processamento de dados em tempo real para ser executado acontecer

fatores de otimização de influência: o índice, o layout físico dos dados, tamanho da memória disponível, o número de processadores disponíveis, a quantidade de envolvidos direta ou indiretamente na tabela de índice e de dados

instrução SQL operação de relações executado, em seguida, executar operações não-relacionais (ordem por)

 

Sobre fases de processamento de consultas lógicas (na Internet para encontrar, compreendê-lo)

A PARTIR DE: cláusula FROM das duas tabelas no produto cartesiano execução anterior (produto cartesiano) (cross-acoplamento), para gerar um VT1 tabela virtual

ON: Filtros para aplicações VT1 ON. Apenas aqueles que fazem <condição_de_junção> true linha só foi inserido VT2.

EXTERIOR (JOIN): Se EXTERIOR junção especificada (transversal relativa JOIN ou (INNER JOIN), mesa de reserva (tabela preservada: LEFT OUTER JOIN tabela esquerda marcado como reservados mesa, a junção externa direita da tabela da direita marcado como reservados mesa, totalmente a junção externa duas tabelas são marcadas como mesa reservada) correspondência for encontrada como uma fileira fileiras externos são adicionados a VT2, VT3 gerado. Se a cláusula FROM contém dois ou mais tabelas, um acoplamento é gerado na mesa e os resultados uma repetição mesa os passos 1 a 3 até que todas as tabelas completamente processado.

ONDE: ONDE filtros para aplicações VT3. Só quando a linha <where_condition> verificava-se apenas de VT4 inserção.

GROUP BY: uma lista de colunas na cláusula GROUP BY para agrupar linhas em VT4, gerado VT5.

CUBE | ROLLUP: o super-grupo (Suppergroups) Insira VT5, gerar VT6.

TENDO: ter filtros para aplicações VT6. Somente quando o <having_condition> é definido como verdadeiro será inserido

VT7.

SELECT: processamento de lista SELECT, produzir VT8.

Distintas: a remoção de linhas duplicadas de VT8, resultando VT9.

ORDER BY: as linhas vt9 lista de colunas classificadas na cláusula ORDER BY, gerar um cursor (VC10).

TOP: selecionar um número específico ou porcentagem de linhas desde o início do VC10, VT11-mesa, e retornado ao chamador.

 

Effective Range Optimizer

O otimizador precisa a informação encontrada no banco de dados

transformação equivalente pode ser realizado em um sentido matemático

Optimizer considera o tempo de resposta global

Optimizer melhoria é independente da consulta

Estratégia é: Se é um pequeno número de consultas, o otimizador irá otimizar tudo, se ele é um grande otimizador de consulta irá otimizá-lo como um todo

 

filtração

1) Como para definir o factor mais importante para o conjunto de resultados, usando uma variedade de técnicas de determinação de factor de SQL

2) condições de filtro significados:

Onde as palavras e com palavras

Junte-se a condições de filtro

Selecione os critérios de filtro

3) A qualidade das condições do filtro, dependendo

Que dados são em última análise, necessário é uma tabela a partir do qual

O valor de entrada é passado para o motor DBMS

Pode filtrar dados indesejados de condições que

o filtro de alta eficiência condição é a principal força motriz da consulta

 

consulta SQL resumo otimização

1. Como sugerindo que a otimização de consulta otimizador

Use juntar a tabela de junção para sugerir que quando a tabela múltipla operação de junção, considere usar existe e em operação para otimizar, se você não usar a junção é permitir que o otimizador de consulta para otimizar seus próprios, os seus próprios quadros para determinar a ordem de conexão (começar com uma pequena mesa, e, em seguida, um grande tabela), pode ser menos eficiente

2. O multidimensional-redução consulta dimensionalidade, uma tabela Não ligue mais do que três, mais do que a subconsulta não correlacionada se tornará visão incorporada, redução de dimensionalidade

3. estudar a proporção dos dados extraídos na tabela, quando a consulta retorna a quantidade total de dados gravados mais de 10% de não usar o índice, o resultado da consulta a menos de 10% é um bom consulta

4. Evite usar distinta no topo, e em uso existe para lidar com

5. Evite usar select * no topo, isso irá produzir uma redundância conjunto de resultados, reduzir o desempenho

 

Grande quantidade de princípio Consultas de dados

Princípio: não chutar mais rápido a dados, a quantidade de dados consulta fase posterior tem de lidar com a falta, maior a eficiência da consulta

aplicação:

operações, como a declaração da União definir, mas não cut-and-paste

Grupo de & ter 字句

Todas as condições resultados de polimerização afetam a função da frase deve ser colocado hanving

Quaisquer condições de polimerização independentes deve ser colocado onde cláusula

Grupo através da redução da quantidade de dados que deve executar a operação de processamento de ordenação

 

Não-correlacionadas subconsultas se tornar visão incorporada - redução de dimensões consulta

Exemplos:

''

 


 

seqüência de processamento de imagem de declarações

1. mesa combinada na cláusula FROM (produto cartesiano)

2. Use a seleção cláusula tuple onde as condições cláusula tuplos selecionados, a condição de descarte não está satisfeito descartar aqueles que não satisfazem a condição WHERE tupla

3. retidos agrupados de acordo com a cláusula GROUP BY tupla

4. Utilização das condições cláusula HAVING agrupados conjunto de condições cláusula tuplos tuplos (grupo) após um pacote é seleccionados, descartar essas condições não é satisfeita TENDO tupla

5. A cláusula select cálculos estatísticos para gerar cálculos estatísticos resultados relação cláusula tuplo para gerar resultados relação tupla

6. Organizar os resultados de acordo com a cláusula ORDER BY

 

Publicado 137 artigos originais · ganhou elogios 2 · vê 20000 +

Acho que você gosta

Origin blog.csdn.net/m0_37302219/article/details/104856963
Recomendado
Clasificación