Download Trabalho de Sistemas de Base de Dados

Transcript
5.3 Estatísticas[6]
O SQL Server mantém estatísticas sobre índices de colunas actualizadas.
Esta opção está ligada por omissão.
Para se poder desligar esta opção,
temos que fazer:
ALTER DATABASE u n i v e r s i d a d e
SET AUTO_UPDATE_STATISTICS OFF;
Para optimizar essas actualizações o SQL Server usa um algoritmo para
actualizar as estatísticas que é executado quando existe um grande número
de modicações na determinada coluna ou quando o tamanho da tabela
aumenta. Por exemplo, o SQL Server actualiza as estatísticas quando uma
tabela que não tinha tuplos, passa a ter mais que 1; quando o tamanho
da tabela é menor que 500 tuplos e aumenta, pelo menos, para o dobro; e
quando uma tabela que tenha mais que 500 tuplos aumenta em 20% da sua
capacidade. Nestas situações, as estatísticas são actualizadas.
As estatísticas também podem ser actualizadas assincronamente. Isto é,
as consultas são compiladas com estatísticas existentes mesmo que as estatísticas estejam desactualizadas.
O query optimizer poderá escolher um
plano de execução com maior custo se as estatísticas estiverem desactualizadas na compilação da consulta. Se essa consulta provoca actualização das
estatísticas, essas estatísticas poderão ser actualizadas depois de a consulta
ser executada. Se fosse feito de forma síncrona, isto não aconteceria, ou seja,
o optimizador procuraria sempre actualizar as estatísticas antes da execução
da pergunta. A opção de actualizar as estatísticas de forma assíncrona está
desactivada por omissão. O SQL Server também cria estatísticas para atributos sem índices associados. Essa opção está activa por omissão, mas poderá
ser desactivada. É aconselhável ter essa opção activa. Só faria sentido desactivar, se não valesse a pena, tal como fazer sempre consultas diferentes
(não habitual).
5.3.1 Tipo de Estimativas
O SQL Server guarda várias informações relativamente às estatísticas de uma
tabela. Ele guarda informação sobre quantas linhas tem a tabela, a última
data de actualização das estatísticas, o tamanho médio da chave, a densidade
de combinações das colunas.
O SQL Server guarda também várias estruturas internas chamadas histogramas. Esta estrutura consiste na amostra de uma distribuição de dados
sobre uma coluna ou indexes.
Para se perceber um pouco melhor, o his-
tograma é um gráco de barras, onde no intervalo X, o intervalo entre X e
55