Bonjour,
Je suis en train "d'auditer" un serveur SQL Server afin d'essayer de déterminer les potentielles causes de lenteurs aléatoires.
Évidemment, après deux clics dans SSMS je suis en train de me rouler par terre car la personne qui a fait l'installation a scrupuleusement respecté le manuel du serveur parfaitement mal installé.
J'ai quand même une question afin de savoir comment étayer mon discours face à des gens qui n'auront probablement aucun doute quant au bien-fondé de leurs (non)choix.
Par exemple, j'ai vingt bases de données sur le serveur, toutes plus ou moins grosses (quelques gigas en moyenne), toutes sont mono-fichier, tous les fichiers sont en croissance automatique entre 1 Mo et 50 Mo, et tous pleins.
Bref, l'apothéose.
Je ne peux donc que mettre en avant le désastre d'avoir des bases pleines et des accroissements incessants des fichiers.
A ça, on va probablement me répondre "nan mais c'était vrai en 1980 maintenant on a un disque SSD NVME la fragmentation ça gêne plus, et les accès disques s'ont presque aussi rapide qu'en RAM".
Par rapport aux index clustered, je voudrais être sûr de moi...
Si j'ai physiquement un disque dur comme ça :
Je ne sais pas si mes schémas sont clair...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Etape 1: deux bases vides, le reste du disque vide [ooooo][ooooo]oooooooooo Etape 2: Les deux bases se remplissement normalement. A: données de la table A de la base 1 B: données de la table B de la base 1 1: données de la table A de la base 2 2: données de la table B de la base 2 [AAoBB][11o2o]oooooooooo Etape 3: la table B base 1 arrive en fin de fichier. Il reste de la place dans le fichier entre A et B. Que se passe-t-il quand on tente d'insérer "b" dans la table B ? - SQL Server déplace toutes les données de la table B, pour se coller à la "fin" de la table A [AABBb][11o2o]oooooooooo - Il redimensionne le fichier pour ajouter "b" dans un nouveau fragment ? [AAoBB][11o2o][b]ooooooooo - Ou s'il écrit "b" là où il trouve de la place dans le fichier, faisant qu'au final l'index clustered ne respecte plus l'ordre des données sur le disque ? [AAbBB][11o2o]oooooooooo Je doute que ce soit la solution 2, puisque la croissance automatique du fichier se fait généralement quand il ne reste réellement plus de place dans le fichier, alors que dans ce cas le fichier ne serait jamais plein. Quant à la solution 3, à ce moment je me demande l'intérêt des index clustered si au final ils ne sont pas stockés physiquement dans l'ordre dans le fichier. Un traitement dans ce cas réorganise tout ce bordel en tâche de fond ? Lors d'un recalcul d'index ? Enfin, maintenant qu'on a notre disque dans cet état : [AABBb][11o2o]oooooooooo J'ajoute des données "aa" dans A. Que se passe-t-il ? - [AABBb][11o2o][aa]oooooooo ? - [AAaaB][11o2o][Bb]oooooooo ? - [AAaab][11o2o][BB]oooooooo ?
-- Edit: pas réveillé... je voulais dire "clustered" et non "partitionné"
Partager