2012-05-18 14 views
23

Mam tabelę z dużą ilością danych BLOB w kolumnie. Piszę narzędzie do zrzutu danych do systemu plików. Ale przed zrzutem, muszę sprawdzić, czy na dysku jest dostępna przestrzeń, aby wyeksportować wszystkie pola blobów w całej tabeli.Obliczanie całkowitego rozmiaru danych kolumny BLOB w tabeli

Proszę zaproponować skuteczne podejście do uzyskania rozmiaru wszystkich pól blob w tabeli.

Odpowiedz

30

Możesz użyć funkcji MySQL OCTET_LENGTH(your_column_name). Aby uzyskać więcej informacji, patrz here.

+9

OCTET_LENGTH() jest synonimem LENGTH() –

20
select sum(length(blob_column)) as total_size 
from your_table 
+0

Dzięki za odpowiedź. Rozmiar wskazany w powyższej kwerendzie jest niższy niż całkowity rozmiar porzuconych plików na dysku. Masz pojęcie o tym, co może być przyczyną? – jatinpreet

+1

@jatinpreet: Domyślam się, że wynika to z klastrowania plików w systemach plików. W zależności od plików systemowych pliki będą zapisywane na przykład w blokach 4KB. To może zaostrzyć sytuację. Ale to tylko domysły. –

2
select sum(length(blob_column_name)) from desired_tablename; 
1

Niestety jest to w najlepszym razie DB.

Aby uzyskać całkowity rozmiar tabeli z bloków BLOB w Oracle używam następujące: https://blog.voina.org/?p=374

Niestety to nie działa w programie DB2 wciąż muszę znaleźć alternatywę.

prostego

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

nie jest poprawna kwerendy nie będzie prawidłowo oszacować rozmiar blob na podstawie odniesienia do blob, które są przechowywane w kolumnie blob. Musisz uzyskać faktyczny przydzielony rozmiar na dysku dla obiektów typu blob z repozytorium obiektów blob.

Powiązane problemy