Suppression des BLOB mais espace du chunk non libéré
Posted in 2004
Topics:
Storage & Space Management
Translated from English by DrWatson
— View original
Petite question :
J'ai une base de données simple avec une table qui comporte un champ BLOB. Il n'y a
aucun blobspace.
Lorsque je supprime une ligne de la table contenant le champ BLOB, l'espace utilisé dans
le chunk tel que rapporté par onstat -d does ne diminue pas.
L'espace est-il alloué de façon permanente aux BLOB lorsqu'on ne dispose pas d'un blobspace
pour ceux-ci ?
--
John Hardin KA7OHZ <johnh@aproposretail.com>
Administrateur des systèmes internes voix : (425) 672-1304
Apropos Retail Management Systems, Inc. fax : (425) 672-0192
-----------------------------------------------------------------------
Le défaut d'anticipation chez autrui ne constitue pas une
urgence pour moi.
- David W. Barts dans a.s.r
↪ replying to John Hardin
John Hardin a écrit :
> Question rapide :
>
> J'ai une base de données simple avec une table contenant un champ BLOB. Il n'y a
> aucun blobspace.
>
> Lorsque je supprime une ligne de la table comportant le champ BLOB, l'espace utilisé dans
> le chunk tel que rapporté par onstat -d does ne diminue pas.
>
> L'espace est-il alloué de façon permanente aux BLOB lorsqu'on n'a pas de blobspace
> pour eux ?
Non, mais il est alloué de façon permanente à la table — jusqu'à ce que vous modifiiez son
fragmentation, ou que vous modifiiez un index en cluster, ou que vous effectuiez un alter table qui
ne peut pas être réalisé sur place.
--
Jonathan Leffler #include <disclaimer.h>
Email : jleffler@earthlink.net, jleffler@us.ibm.com
Gardien de DBD::Informix v2003.04 -- http://dbi.perl.org/
↪ replying to John Hardin
Il s'agit d'un comportement normal. L'espace est alloué au « tablespace » par extents, et non ligne par ligne. L'espace n'est pas libéré du tablespace au fur et à mesure de la suppression des données.
Les extents sont généralement plus grands qu'une seule ligne, mais l'espace n'est même pas libéré lorsqu'un extent entier est vide.
Le principe est que la table aura probablement besoin de cet espace à nouveau, les tables ne se réduisent généralement pas. Donc, pour gagner du temps en évitant de réallouer l'espace à la table plus tard, Informix ne le supprime pas.
Si vous avez exécuté une suppression massive et que vous souhaitez récupérer l'espace du tablespace qui avait été alloué à la table, le fait de clusteriser l'un de vos index, de sorte que les données soient physiquement réordonnées, libérera l'espace non utilisé.
La plupart de ces points, sinon tous, sont traités dans le cours Informix System Administrators, que je vous recommande si vous ne l'avez pas encore suivi.
« John Hardin » <johnh@aproposretail.com> a écrit dans le message news:<pan.2004.05.21.23.53.39.40504@aproposretail.com>...
> Petite question :
>
> J'ai une base de données simple avec une table qui comporte un champ BLOB. Il n'y a aucun
> blobspace.
>
> Lorsque je supprime une ligne de la table contenant le champ BLOB, l'espace utilisé dans
> le chunk tel que rapporté par onstat -d does ne diminue pas.
>
> L'espace est-il alloué de façon permanente aux BLOB lorsqu'on ne dispose pas d'un blobspace
> pour eux ?
Related threads
Glossary