web-dev-qa-db-fra.com

FILLFFACTOR: Script de l'indexOptimize de OLA HALLENGREN

Nous utilisons le script IndexOptimize de OLA Hallengren pour l'index de reconstruction de SQL Server 2008 et 2012. Ces scripts de maintenance sont très bons et ont travaillé pour nos DBS pendant des mois maintenant. Cependant, très récemment, j'ai remarqué que cela a changé la facturation à 90 après avoir exécuté l'index de reconstruction sur la base de données, même lorsque le paramètre Fillactor était NULL.

Avant d'exécuter le script, j'ai vérifié sys.indexes avait obtenu Frottant de 0 pour tous les index mais je ne sais pas pourquoi le script a changé de remplissage à 90 après le remplissage. Cela a causé beaucoup de problèmes sur la base de données.

Savez-vous si c'est le comportement prévu dans le script IndexOptimize où le remplisseur est-il changé à 90?

Voici ce que j'ai exécuté:

EXECUTE dbo.IndexOptimize
 @Databases = 'dbname',
 @FragmentationLow = NULL,
 @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
 @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
 @FragmentationLevel1 = 5,
 @FragmentationLevel2 = 30,
 @LogToTable = 'Y'
6
Nancy

Le script de OLA ne changera que le facteur de remplissage si vous attribuez une valeur à la @FillFactor variable.

IF @FillFactor IS NOT NULL AND @CurrentIsPartition = 0 AND @CurrentIndexType IN(1,2,3,4) SET @CurrentCommand13 = @CurrentCommand13 + ', FILLFACTOR = ' + CAST(@FillFactor AS nvarchar)

Ce qui signifie quelqu'un:

  1. Modifié la procédure stockée pour utiliser 90 comme valeur par défaut;
  2. A couru hors de la bande de la maintenance; ou alors
  3. Modification des valeurs à l'aide d'un script différent ou de l'interface graphique.

Vous pouvez scripter la procédure stockée pour voir si une personne a changé la valeur par défaut,

NUTS

Ou vous pouvez interroger le dbo.CommandLog Tableau pour voir si une commande REBUILD _ a été exécutée avec un facteur de remplissage de 90.

SELECT *
FROM dbo.CommandLog AS cl
WHERE cl.CommandType = 'ALTER_INDEX'
AND cl.Command LIKE '%FILLFACTOR%'

Si quelqu'un l'a changé en utilisant un script différent ou l'interface graphique, qui serait beaucoup plus difficile à suivre.

13
Erik Darling