Quelle est la taille d'échantillon par défaut des statistiques dans SQL Server?

11

Depuis MSDN :

Lorsqu'aucune des options d'échantillon (SAMPLE, FULLSCAN, RESAMPLE)n'est spécifiée, l'optimiseur de requête échantillonne les données et calcule la taille de l'échantillon par défaut.

Comment identifier la taille d'échantillon par défaut des statistiques?

J'ai parcouru MSDN mais je n'ai trouvé aucune formule ou méthode pour identifier la taille d'échantillon par défaut. Partout, il n'y a que des formules pour déclencher la mise à jour automatique des statistiques. Tout pointeur sera utile.

P ரதீப்
la source

Réponses:

20

Comment identifier la taille d'échantillon par défaut des statistiques?

Je citerai un article de Blogs.msdn

Algorithme de mise à jour automatique des statistiques:

Ainsi, les statistiques de mise à jour automatique se déclencheront pour chaque changement de 500 + 20% dans les lignes du tableau. Bien sûr, nous avons un algorithme amélioré dans SQL 2012 qui est SQRT (1000 * lignes de table), ce qui est beaucoup mieux.

Lorsqu'il se déclenche, il utilise le taux d'échantillonnage par défaut et voici l'algorithme de calcul du taux d'échantillonnage.

1) Si la table <8 Mo, il met à jour les statistiques avec un balayage complet.

2) Si le tableau> 8 Mo, il suit un algorithme. Cela réduit le taux d'échantillonnage car le nombre de lignes dans le tableau augmente pour nous assurer que nous n'analysons pas trop de données. Ce n'est pas une valeur fixe mais est sous le contrôle de l'optimiseur. Ce n'est pas non plus un algorithme linéaire.

Exemple: si nous avons 1 000 000 de lignes, il utiliserait un taux d'échantillonnage de 30%, mais lorsque le nombre de lignes augmenterait à 8 000 000, cela réduirait le taux d'échantillonnage à 10%. Ces taux d'échantillonnage ne sont pas sous le contrôle des DBA mais l'optimiseur le décide.

Pour mieux comprendre je vous suggère de lire

Shanky
la source