powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Рассчитать размер одной записи в БД
21 сообщений из 21, страница 1 из 1
Рассчитать размер одной записи в БД
    #39329002
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Есть глупый вопрос, но всё же. Как рассчитать размер одной записи в БД с блобами ?
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329013
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gstat -r -t
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329038
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

Надеюсь, ты понимаешь, что блоб - это не совсем часть записи?
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329047
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

с блобами никак не расчитать, потому что блобы хранятся отдельно от записи - либо на той же странице данных, либо на отдельных страницах.
gstat покажет разве что вот такое
Average record length: 35.67, total records: 469
здесь пишется средний размер записи, куда входит указатель на блоб (8 байт), но не сама длина блоба.
"Опознать" наличие блобов можно только
- до ФБ 3.0 - по косвенным признакам. Например, Data pages в той же статистике куда больше чем влезло бы записей указанного среднего размера. Значит, записи "разбавлены" блобами, которые влезают на страницы данных.
Объяснение этому есть в справке IBAnalyst, "дополнительные вопросы и ответы", пункт 5.

- в ФБ 3.0 - вывод gstat содержит
Blobs: 463, total length: 248371310, blob pages: 15410
с указанием уровней блобов, но здесь все блобы таблицы собраны в кучу (если есть несколько столбцов блоб), и отдельно по ним увидеть ничего нельзя.

- в InterBase XE - вывод gstat содержит спец-раздел для каждого столбца блоба, с информацией
Average blob length: 129.95, total blobs: 39, max blob length: 273
и далее.

Еще я по крайней мере у InterBase XE7 заметил такую штуку, что если запись превышает размер страницы (например varchar(32000) с содержимым около 30к байт, и страницей 8к), то страницы фрагментов не показываются. В итоге, для приведенного случая, по сумме data pages размер таблицы будет в 4 раза меньше. Как с этим у FB - не проверял еще.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329061
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,
в общем, прямо точно конкретный блоб можно посчитать например так
select octet_length(blob_column) from table

вроде бы бинарного lenght нету, так что можно и какую-нибудь внешнюю udf типа blob_size использовать (например B_Total_Length(B) из rfunc).
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329854
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за ответы. Особенно kdv за расширенный и подробный ответ. Вопрос я скорее всего не правильно сформулировал. Необходимо определить размер одной записи в БД, длины блобов мне известны (самих данных), как быть с другими полями, не блобами? Есть ли запрос который вернёт этот размер. Я считаю по размерам типов полей, но почему то получается неправильно.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329856
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

там ещё заголовок записи есть. А зачем это потребовалось?
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329867
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо мониторить размер файла БД. Если каждый раз проверять средствами файловой системы, насколько это повлияет на производительность?
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329868
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Abraziv!
You wrote on 19 октября 2016 г. 14:25:15:

Abraziv> Необходимо мониторить размер файла БД. зайчем? (с)
Abraziv> Если каждый раз проверять средствами файловой системы, насколько это повлияет на производительность?на 0.3%
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329873
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если размер файла превысит порог, создать новый и продолжить писать в него.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329876
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

А никакого порога нет.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329877
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой порог.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329883
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Abraziv!
You wrote on 19 октября 2016 г. 14:34:38:

Abraziv> создать новый и продолжить писать в негозачем?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329884
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

Это всё объясняет.

В любом случае, размер файла не измеряется размерами записи. Есть резерв под версии, да и увеличение файла идёт кусками кратными странице.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329889
Abraziv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHello, Abraziv!
You wrote on 19 октября 2016 г. 14:34:38:

Abraziv> создать новый и продолжить писать в негозачем?



Люди контролирующие мой разум приказали сделать это.
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329901
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Abraziv!
You wrote on 19 октября 2016 г. 14:41:50:

Abraziv> Люди контролирующие мой разум приказали сделать это.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329905
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbrazivЛюди контролирующие мой разум приказали сделать это.

Ну так делай. Мы-то тут при чём? Средствами SQL твоя задача не решается, иди к системным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329915
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbrazivЛюди контролирующие мой разум приказали сделать это.Зачем? Они хотят приобрести для хранения этой базы жесткий диск объемом в точности до байта под размер БД?
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329929
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abraziv,

возможно, автору хватит этого
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
execute block
returns(
    DATABASE_NAME type of column mon$database.mon$database_name,
    DATABASE_SIZE_MB NUMERIC(18,2)
)
as
begin
  in autonomous transaction do
    select
        mdb.mon$database_name,
        mdb.mon$page_size * mdb.mon$pages/1024.0/1024.0
      from mon$database mdb
    into :DATABASE_NAME, :DATABASE_SIZE_MB;

  SUSPEND;
end
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329930
DelphiZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

да пиздит просто по глупости
...
Рейтинг: 0 / 0
Рассчитать размер одной записи в БД
    #39329932
DelphiZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiZrdb_dev,

да пиздит просто по глупости

извиняюсь за резкость
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Рассчитать размер одной записи в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]