Je voudrais créer intentionnellement de mauvaises conditions d'index sur une base de données de test SQL Server 2017, juste pour mieux comprendre ces scripts de maintenance? Maintenance de l'index et des statistiques SQL Server
Existe-t-il un moyen rapide / automatique de compromettre l'intégrité de l'index ou d'augmenter la fragmentation de l'index? Connaissez-vous une ressource utile que je peux consulter pour y parvenir?
sql-server
index
clustered-index
mororo
la source
la source
DBCC SHRINKDATABASE ([yourNONProdDB])
Réponses:
Une façon rapide que je peux imaginer est de créer une table avec
UNIQUEIDENTIFIER
comme clé primaire et d'insérer beaucoup de valeurs aléatoires. Cela pourrait être réalisé en utilisant ce script:Cela générera des millions de lignes.
Sachant que
NEWID()
cela ne garantit aucun ordre, SQL Server devra insérer dans des endroits aléatoires du tableau - cela va fragmenter la clé primaire.la source
INSERT dbo.Tests (Id) SELECT NEWID(); GO 1000000;
- cela prendra évidemment plus de temps. Voir pastebin.com/SVLtiRnP pour un exemple que j'ai jeté ensemble pour une autre question. L'utilisation de lignes de longueur variable et leur mise à jour au hasard pourrait-elle produire plus efficacement la fragmentation?Je voulais faire plusieurs index "Ugly", alors j'ai fait ce qui suit. Cela a bien fonctionné
la source
Habituellement, la fragmentation de l'index se produit lorsqu'il existe
Update
ouInsert
qu'une opération se produit sur la table.Si vous voulez produire rapidement le problème (fragmentation d'index), créez un
Index
dans votre table de test avec moinsfill factor
et effectuez des opérations lourdesUpdate
ouInsert
sur cette table. Vous pouvez travailler avec ces scripts ..la source
Vous pouvez également utiliser
CRYPT_GEN_RANDOM
comme je l'ai fait dans cette réponse: Filtrer le schéma dans un script d'optimisation d'index .Vous pouvez insérer des données dans une colonne numérique qui a un index dessus pour le fragmenter comme ceci:
Vous pouvez également mettre à jour les données ou les convertir en une chaîne au lieu d'un nombre si c'est ce dont vous avez besoin.
la source