Pergunta

Eu com pouca freqüência (mensais/trimestrais) gerar centenas de Relatórios Crystal reports, utilizando o Microsoft SQL Server 2005 exibições de banco de dados.São esses pontos de vista desperdício de ciclos de CPU e RAM durante todo o tempo em que eu não estou lendo deles?Devo, em vez de usar procedimentos armazenados, tabelas temporárias, ou de curta duração normal tabelas desde que eu raramente leitura de meus pontos de vista?

Eu não sou um DBA, então eu não sei o que está acontecendo por trás das cenas dentro do servidor de banco de dados.

É possível ter muitas exibições de banco de dados?O que é considerado como a melhor prática?

Foi útil?

Solução

Para a maior parte, não importa.Sim, o SQL Server vai ter mais opções quando se analisa SELECT * FROM tabela (ele vai ter que procurar nos catálogos de sistema para 'tabela'), mas é altamente otimizado para que, e desde que você tenha memória RAM suficiente (a maioria dos servidores de hoje em dia), você não vai notar a diferença entre 0 e 1.000 pontos de vista.

No entanto, a partir de uma perspectiva, tentando gerenciar e descobrir o que "centenas" de pontos de vista estão fazendo é provavelmente impossível, então você provavelmente tem um monte de código duplicado lá.O que acontece se algumas mudanças de regras de negócio que são incorporados a estes redundante pontos de vista?

O principal ponto de vista é encapsular a lógica de negócios em um pseudo tabela (assim você pode ter uma tabela pessoa, mas, em seguida, um modo de exibição chamado "active_persons", que faz um pouco de magia).Criar um modo de exibição para cada relatório é uma espécie de bobo, a menos que cada relatório é tão isolado e único, que não há possibilidade de re-utilização.

Outras dicas

Uma view é uma consulta que você executa, muitas vezes, com parâmetros predefinidos.Se você sabe que vai estar olhando para a mesma data o tempo todo, você pode criar um modo de exibição para facilitar o uso e para a ligação de dados.

O que está sendo dito, quando você selecionar um modo de exibição a exibir a definição de consulta é executada juntamente com a consulta que você está executando.

Por exemplo, se vwCustomersWhoHavePaid é:

Select * from customers where paid = 1

e a consulta que você está executando retorna clientes que tenham pago a partir de agosto o primeiro é formatado como este:

Select * from vwCustomersWhoHavePaid where datepaid > '08/01/08'

A consulta que você está executando, na verdade, é:

Select * from (Select * from customers where paid = 1) where datepaid > '08/01/08'

Isso é algo que você deve ter em mente ao criar modos de exibição, eles são uma forma de armazenamento de dados que você olhar muitas vezes.É apenas uma forma de organização de dados, assim é mais fácil acesso.

As vistas são só vai ocupar cpu e recursos de memória quando são chamados.

De qualquer maneira, a melhor prática seria a de consolidar o que pode ser consolidado, remover o que pode ser removido, e se é, literalmente, apenas usado por seus relatórios, escolha um consistente padrão de nomenclatura para os pontos de vista, de modo que eles podem ser facilmente agrupados ao olhar para um determinado ponto de vista.

Também, a menos que você realmente precisa de isolamento transacional, considere utilizar a sugestão de tabela NOLOCK em suas consultas.

-- Kevin Fairchild

Você pergunte:O que está acontecendo por trás das cenas?

Uma view é um monte de texto SQL.Quando utiliza uma consulta um modo de exibição, o SQL Server coloca que o texto SQL para a consulta.Isso acontece ANTES da otimização.O resultado é que o otimizador pode considerar o código combinado, em vez de dois pedaços de código para o melhor plano de execução.

Você deve olhar para os planos de execução de consultas!Há muito para aprender ali.

O SQL Server também tem o conceito de um cluster vista.Um cluster vista é um sistema mantido conjunto de resultados (cada um insert/update/delete em tabelas subjacentes podem causar inserir/atualizar/excluir exclui o cluster vista's de dados).É um erro comum pensar que os modos de exibição de operar da maneira que cluster vistas operar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top