|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : août 2004 Messages : 49 ![]() |
Bonjour,
j’effectue quelques tests d'optimisation sur ma bdd : j'ai inséré un jeu de test, que j'ai ensuite supprimé. Je constate dans les propriétés de ma table que la valeur dataSpace est identique à la taille que j'avais avant mon delete. Est ce normal ? Je précise que j'avais un unique champ en nvarchar.. Merci |
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() ![]() Hamid MIRAIngénieur développement logiciels Inscription : septembre 2003 Messages : 177 ![]() |
La requête envoyée par SSMS pour calculer la valeur "Espace de données" dans la page propriété d'une table, est la suivante:
Code :
Il est par ailleurs, mentionné dans la documentation MSDN ceci : "Lorsque vous supprimez ou reconstruisez des index volumineux ou lorsque vous supprimez ou tronquez des tables volumineuses, le Moteur de base de données diffère les désallocations des pages actives et de leurs blocs associés jusqu'à ce que la transaction soit validée. Les opérations de suppression différées ne libèrent pas immédiatement l'espace alloué. Par conséquent, il se peut que les valeurs renvoyées par sys.allocation_units immédiatement après la suppression ne reflètent pas l'espace disque réellement disponible. Cette implémentation prend en charge les transactions à validation automatique et explicites dans un environnement multi-utilisateur et s'applique aux tables et index volumineux qui utilisent plus de 128 extensions". A+ |
||
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() |
Citation:
Votre table a t'elle un index cluster sur la PK? Si oui reconstruisez le après votre DELETE vous verrez que le space_used reviens à sa valeur initiale.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
La reconstruction de l'index ne changera pas grand chose ici par qu'il n'existera plus de données (suite au DELETE). EDIT : Mal lu la réponse précédente .. la reconstruction d'index ici peut résoudre le problème .. Vous pouvez utiliser la procédure stockée sp_spaceused 'table' et vous verrez qu'il n'existe plus d'espace alloué pour la table. Il faut également employer la commande DBCC UPDATEUSAGE('database', 'table') pour corriger le nombre de pages et de lignes de votre table concernée dans les vues systèmes. Vous verrez par la suite via l'interface graphique que DATASPACE = 0 ++ |
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Inscription : août 2004 Messages : 49 ![]() |
Merci à tous pour vos réponses.
@MikeDaven ==> je viens de tester les commandes Code :
|
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
vous devez faire le DBCC UPDATEUSAGE en premier.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : août 2004 Messages : 49 ![]() |
Ca ne change rien. Je précise que j'ai un champs nvarchar(max). Mais je ne pense pas que ça ait une incidence..?
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
Normal un spaceused ne retourne jamais 0...
Quel est votre valeur de space?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : août 2004 Messages : 49 ![]() |
valeur "data" renvoyé par la procédure ==> 1656kb
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com