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

Надеюсь, ты понимаешь, что блоб - это не совсем часть записи?
...
Рейтинг: 0 / 0
18.10.2016, 15:40
    #39329047
kdv
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
18.10.2016, 15:50
    #39329061
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рассчитать размер одной записи в БД
Abraziv,
в общем, прямо точно конкретный блоб можно посчитать например так
select octet_length(blob_column) from table

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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


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