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