23.08.2011 14:29
OlegON
 
Достаточно часто заходит разговор о размере используемой базы данных и не менее часто неподготовленный народ без уточнений начинает сравнивать теплое с мягким.
Нельзя забывать, что есть понятие занятого места, которое используется файлами, а есть понятие места, занятого данными. Это не одно и то же. Дело в том, что базе можно выдать файл на 100Гб, но он внутри будет пустой. Оптимизатор выдает занятое данными место, можно его посмотреть и самостоятельно запросом:
Код:
select sum(bytes)/power(1024,3) totalsum from dba_segments;
это наиболее правильный на мой взгляд подход.
Конечно, его тоже можно обмануть, изуродовав БД выделением гигантских кусков таблицы заранее, до ее заполнения, кроме того, этот запрос учитывает размер временных сегментов, что тоже не очень правильно.
Для того, чтобы понять, насколько различаются эти данные можно зайти на сервер и посмотреть объем файлов или полениться и продолжить запросом:
Код:
select (select sum(bytes)/power(1024,3) from v$datafile)+(select sum(bytes)/power(1024,3) from v$tempfile) from dual;
который дает приблизительное понятие, сколько файлами занято. Приблизительное, потому, что в запросе не выдаются файлы повтора (redo) и контрольники. Разница, как видите, налицо.
Поэтому предлагаю не путаться и всегда, когда речь идет о размере БД, предоставлять данные из лога оптимизатора или первого запроса в этой теме.
Часовой пояс GMT +3, время: 10:48.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.