Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
fankhm
Member

Откуда:
Сообщений: 87
День добрый.
При проведении работ с базами Firebird (2.1, win-x64) возник вопрос:
- база 19 Гб
- после backup-restore стала 18
18 авг 19, 13:13    [21951961]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
fankhm
Member

Откуда:
Сообщений: 87
fankhm
День добрый.
При проведении работ с базами Firebird (2.1, win-x64) возник вопрос:
- база 19 Гб
- после backup-restore стала 18


извините, не дописал:
- а после извлечения всех метаданных и данных в скрипт и восстановления из этого скрипта - 670 Мб

База работает нормально... Не понял, как ? Почему ?
18 авг 19, 13:15    [21951962]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
fankhm,

в первом приближении можно взять DBInfo отсюда https://ib-aid.com/en/ibsurgeon-free-tools/
и сравнить количество страниц разных типов.
Во втором приближении можно взять gstat -r обоих баз, и опять же сравнить.

По идее, размер базы вот прямо после backup/restore не должен отличаться от базы, созданной из скрипта, куда налиты абсолютно те же самые данные (причем налиты соответственно правильно - с выключенными индексами, после чего все индексы активированы, т.е. точно так же как при restore).
18 авг 19, 13:18    [21951965]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
fankhm,

совсем запутали. База была 19 гиг, а стала 670 мб?
18 авг 19, 13:19    [21951966]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
fankhm
Member

Откуда:
Сообщений: 87
именно так... счас накидаю скриншоты
18 авг 19, 13:22    [21951968]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
fankhm,

какие нафиг скриншоты. gstat -r надо снимать с оригинальной БД. и смотреть dbinfo.
18 авг 19, 13:28    [21951969]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
fankhm,

не надо скриншоты. Скорее всего в скрипт данных вы извлекли не всё. Например возможно туда не вошли BLOB поля
18 авг 19, 13:28    [21951970]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

fankhm
именно так...

Самый вероятный вариант: данные не влились (влились не полностью), но этого никто не заметил.
Второй по вероятности: в базе очень странный набор индексов, которые забыли создать.

Возьми уже в руки DBInfo в которую тебе ткнули пальцем.

Posted via ActualForum NNTP Server 1.5

18 авг 19, 13:29    [21951971]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
fankhm,

собственно, причины такого радикального (или кардинального) уменьшения БД можно по пальцам пересчитать
- удалили почти все данные (база не уменьшается после удалений, вообще не уменьшается никогда)
- была массовая операция, в которой генерились временные блобы
- обнулился TIP, правда, 2млрд транзакций для 2.1 это 8 млрд байт, т.е. 8 гиг всего

ну и да, перелили не все данные, которые были в базе. Так что сравнивать "скрипт" надо с базой, которая прошла backup/restore.
18 авг 19, 13:36    [21951973]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
fankhm
Member

Откуда:
Сообщений: 87
Dimitry Sibiryakov
fankhm
именно так...

Самый вероятный вариант: данные не влились (влились не полностью), но этого никто не заметил.
Второй по вероятности: в базе очень странный набор индексов, которые забыли создать.

Возьми уже в руки DBInfo в которую тебе ткнули пальцем.


таки да - блобы не выгрузились

спасибо за указку
18 авг 19, 13:43    [21951975]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
fankhm
таки да - блобы не выгрузились
спасибо за указку
Это то, о чём можно было догадаться ещё до попытки сделать backup/restore через скрипт, ибо BLOb'ов в скрипт можно засунуть только через преобразование к текстовому представлению, например к UUE или BASE64 и обратному преобразованию при создании из скрипта, для чего, естественно, необходим определённый инструментарий в виде UDF/UDR, но тут появляется ещё одна проблема - размер пакета запроса и необходимость собирать BLOb'ы из кусков, причём, желательно не средствами самой СУБД, из чего, опять же, следует, что собирать BLOb'ы должен соответствующий инструментарий где-нибудь в памяти или во временном файле ОС, а затем выдавать результат в СУБД, которая присвоит BLOB_ID.
18 авг 19, 18:45    [21952036]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
hvlad
Member

Откуда:
Сообщений: 10531
rdb_dev
BLOb'ов в скрипт можно засунуть только через преобразование к текстовому представлению
Та ты шо !
18 авг 19, 18:59    [21952043]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
hvlad, а шо? Ись ышо варианты?
18 авг 19, 22:01    [21952088]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 480
rdb_dev,

Как минимум hex-представление решает проблему двоичных блобов, а их конкантенация решает проблему максимального размера блоба
18 авг 19, 22:21    [21952093]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
hvlad
Member

Откуда:
Сообщений: 10531
rdb_dev
hvlad, а шо? Ись ышо варианты?
Посмотри на IBE
18 авг 19, 22:48    [21952095]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
hvlad, таки шо я там должен развидеть?
19 авг 19, 09:21    [21952194]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
Шавлюк Евгений
rdb_dev,

Как минимум hex-представление решает проблему двоичных блобов, а их конкантенация решает проблему максимального размера блоба
hex-представление, это тоже текстовое представление, причём, одно из наимение компактных.
19 авг 19, 09:23    [21952197]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
rdb_dev,

ну ты попробуй табличку с блобами в эксперте экспортировать.

SET BLOBFILE 'C:\Users\Developer\Downloads\23.lob';

INSERT INTO MYTABLE (ID, REMARK)
VALUES (742367, :h00000000_00000034);
19 авг 19, 09:30    [21952202]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
Симонов Денис, в "Инструментах" вижу только "Извлечение метаданных" и "Импорт данных". "Экспорта данных" не вижу.
19 авг 19, 09:51    [21952209]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
rdb_dev,

выполни любой SELECT запрос. Там есть кнопка экспортировать данные в скрипт.

В извлечении метаданных. Выбираем таблицы данных таблицу с блобами. В настройках ставим галку "извлечение из BLOB полей"

Вот кусок скрипта

CREATE TABLE NOTE (
    CODE_NOTE      INTEGER NOT NULL,
    CODE_HORSE     INTEGER NOT NULL,
    CODE_NOTETYPE  INTEGER NOT NULL,
    REMARK         BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    REMARK_EN      BLOB SUB_TYPE 1 SEGMENT SIZE 80
);


SET BLOBFILE 'C:\Users\Developer\Downloads\44.lob';

INSERT INTO NOTE (CODE_NOTE, CODE_HORSE, CODE_NOTETYPE, REMARK, REMARK_EN) VALUES (2028820, 1064189, 1, :h0_A3, :hA3_92);
INSERT INTO NOTE (CODE_NOTE, CODE_HORSE, CODE_NOTETYPE, REMARK, REMARK_EN) VALUES (2028821, 1064189, 2, :h135_27, :h15C_29);
INSERT INTO NOTE (CODE_NOTE, CODE_HORSE, CODE_NOTETYPE, REMARK, REMARK_EN) VALUES (2028822, 1064189, 3, NULL, NULL);
19 авг 19, 10:01    [21952218]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
Симонов Денис, неплохо! Раньше не замечал такой фичи...
Как прогнать полученный скрипт через isql на Линухе, где нет IBExpert'а в Вайне или виртуалке?
19 авг 19, 10:13    [21952226]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
rdb_dev,

никак. Это просто ответ на твою категоричность, мол блобы можно только в текст скрипта экспортировать.
Не только как оказалось. Это вопрос реализации.
19 авг 19, 10:22    [21952230]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
Симонов Денис, таки да - в текстовый скрипт, который можно прогнать штатными средствами FirebirdSQL, BLOb можно засунуть только в текстовом виде. Мне даже как-то в голову не пришло рассматривать фичи third-party инструментария...
19 авг 19, 10:36    [21952249]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2929
Симонов Денис
rdb_dev,
Не только как оказалось. Это вопрос реализации.
Надо признать, реализация весьма забавная - загнать все блобы в один файл а именем параметра передавать смещение и размер.
19 авг 19, 10:46    [21952260]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
rdb_dev,

этой реализации 100 лет в обед. Как раз реализацию через hex литералы добавили совсем недавно
19 авг 19, 10:53    [21952272]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Arioch
Member

Откуда:
Сообщений: 10967
Симонов Денис
ну ты попробуй табличку с блобами в эксперте экспортировать.

SET BLOBFILE 'C:\Users\Developer\Downloads\23.lob';

INSERT INTO MYTABLE (ID, REMARK)
VALUES (742367, :h00000000_00000034);


Это всё таки не подходит к формулировке
ибо BLOb'ов в скрипт можно засунуть


Это вне скрипта.

С таким же успехом можно в скрипт воткнуть SELECT к external database, выкачать из неё пару гигов чисто Integer данных, а потом говорить, что "в скрипт" размером в пару КБ засунули гигабайты несжимаемых данных
19 авг 19, 14:09    [21952502]     Ответить | Цитировать Сообщить модератору
 Re: Разница между backup/restore и извлечение всех метаданных и восстановление из скрипта  [new]
Arioch
Member

Откуда:
Сообщений: 10967
rdb_dev
hex-представление, это тоже текстовое представление, причём, одно из наимение компактных.


зато оно уже встроенно в Firebird, в отличие от всяких yEnc

т.е. если цель - выгрузить данные включая BLOBы в ISQL-совместимый скрипт, то таки да, рубить блобы на части порядка 32КБ (чуть меньше), переводить в hex и склеивать их вместе UPDATE'ами.

это с бинарными блобами. С текстовыми теоретически так же, но это если никто не отредактирует в начале скрипта default charset :-) А перелив данных иногда используется именно для изменения "основнoй кодировки" БД.
19 авг 19, 14:13    [21952510]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Firebird, InterBase Ответить