web-dev-qa-db-fra.com

Calcul de la taille totale des données de la colonne BLOB dans une table

J'ai une table avec de grandes quantités de données BLOB dans une colonne. J'écris un utilitaire pour vider les données dans le système de fichiers. Mais avant de vider, je dois vérifier si l'espace nécessaire est disponible sur le disque pour exporter tous les champs d'objets blob dans la table.

Veuillez suggérer une approche efficace pour obtenir la taille de tous les champs d'objets blob du tableau.

30
jatinpreet

Vous pouvez utiliser la fonction MySQL OCTET_LENGTH(your_column_name). Voir ici pour plus de détails.

39
bodi0
select sum(length(blob_column)) as total_size 
from your_table
24
juergen d
select sum(length(blob_column_name)) from desired_tablename;
4
Olofu Mark

Malheureusement, c'est au mieux DB spécifique.

Pour obtenir la taille totale d'une table avec des blobs dans Oracle, j'utilise ce qui suit: https://blog.voina.org/?p=374

Malheureusement, cela ne fonctionne pas dans DB2, je dois encore trouver une alternative.

Le simple

select sum(length(blob_column)) as total_size 
from your_table

n'est pas une requête correcte car ne va pas estimer correctement la taille du blob en fonction de la référence au blob qui est stockée dans votre colonne de blob. Vous devez obtenir la taille réelle allouée sur le disque pour les objets blob à partir du référentiel d'objets blob.

2
voinageo