powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как можно создать копии баз на одном сервере?
23 сообщений из 48, страница 2 из 2
Как можно создать копии баз на одном сервере?
    #34048109
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чемберлен vasilisТ.о. получается (а других идей у меня пока нет), что при создании ссылок на блоб-ы, которых то и нет на самом деле, идет жуткое торможение (как минимум на порядок) загрузки данных в таблицу.
Проверить загрузку той же таблицы без блоба я не смог - и так потеряли пару дней, да и софт надо проверить, как он без него будет обходится...
Какие у кого еще идеи ? Может, кто то сталкивался с похожими симптомами или грузил такие табблицы с пустыми блобами ?
А с какой скоростью логические журналы при этом заполнялись? Они реально копировались или фиктивно? Сколько места оказалось занято в blobspace (по onstat -d update)?
Так как загрузка шла dbexport то, естественно, логирования на базе не было.
В любом случае, все лог.журналы идут "в сад", т.е. nul.
В последнем варианте, где я замерил время загрузки, блобы уже грузились в собственное табличное пространство, а не в блобспейс.
Вот размеры занятого табличного пространства, но надо учитывать, что в таблицу продолжается загрузка и сейчас там уже 11 576 261 строка и размер строки (rowsize из tabinfo) =157 байт.
Код: plaintext
1.
tabname            num_rows total_p used_p data_p nodata free_p total_kb
cd_person           11576261   375000    350732   350688   44       24268    1500000 
ЧемберленИ что там вставлялось в столбец? Просто || в .unl-файле?
Хочу проверить идею, что по странице (4Кб) на каждое значение блоба таки выделялось...
Просто || в .unl-файле.
У меня была такая мысль, но, вроде, не подтверждается, т.к. только на эти пустые зарезервированные страницы ушло бы 11 милл.страниц, а их всего там 350 тыс.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34048449
Чемберлен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что показывает статистика по пространствам:

onstat -D

и

onstat -g iof
onstat -g iov

Понятно, что целиком страницы может и не меняются, но могут резервироваться отдельно, что может сильно нагружать логические журналы (независимо от режима журнализации базы)...
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34051570
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧемберленА что показывает статистика по пространствам:
onstat -D
и
onstat -g iof
onstat -g iov
Понятно, что целиком страницы может и не меняются, но могут резервироваться отдельно, что может сильно нагружать логические журналы (независимо от режима журнализации базы)...
Та статистика (для конкретного случая) уже "канула в лету".
А вот о нагрузке на логи мысль интересная. Надо бы помоделировать, да где же это время взять... :)
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34051812
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis vasilisПопытавшись объединить обсуждавшиеся вопросы и используя личный опыт попытался написать FAQ, который превратился в небольшую статью :)
Она, конечно, немного больше вопроса переименования и создания копии БД, тем не менее, надеюсь, будет интересна всем, кто с такими проблемами изредка (или, к сожалению, часто) сталкивается.
Читайте, обсуждайте, предлагайте, критикуйте...
Как создать копию БД с новым именем?
Как выгрузить базу утилитой dbexport и загрузить с новым именем утилитой dbimport?

http://www.sql.ru/faq/faq_topic.aspx?fid=710
А что, никто так и не почитал ? Вряд ли там совсем нет ошибок или неточностей :)

Читал, поставил высокую оценку. Раньше бы попалась - была бы очень познавательной :)
Кое-что выходит за пределы моего опыта, поэтому не могу ни покритиковать ни дополнить. Есть что добавить по поводу глюков dbexport/dbimport, но эти сведения выходят за рамки указанной темы.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34052449
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisНа днях наблюдал любопытную ситуацию при загрузке БД dbimport-ом на 4-х процессорный сервак с рейдом.
....
dbimport?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create database bt in dev1;
create table test_w_blob(a int, b byte );
create PROCEDURE sptest_w_blob2(cnt int);
define i int;
   FOR i in (1 to cnt)
     insert into  test_w_blob(a, b) values (1, null);
   END FOR
END PROCEDURE;

execute procedure sptest_w_blob2(500000)
 9 sec 

unload to '1.unl' select * from test_w_blob;
load from '1.unl' insert into test_w_blob;
 9 sec 

dbexport bt
drop database bt;
dbimport bt -d dev1
 40 sec. 


IBM Informix Dynamic Server Version 10.00.TC3
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34052560
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может я и ошибся.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
time echo "execute procedure sptest_w_blob2(5000000);" |dbaccess bt
real    2m42.688s

time echo "load from '1.unl' insert into test_w_blob;" |dbaccess bt
real    3m31.410s

time dbimport bt -d dev1
real    2m48.178s

IBM Informix Dynamic Server Version 10.00.UC3
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34056086
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис
Код: plaintext
1.
...
IBM Informix Dynamic Server Version 10.00.TC3
Это точно dbimport. Проверил на 5 млн, 6 мин. dbimport -- 1 мин load.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34057433
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисЭто точно dbimport. Проверил на 5 млн, 6 мин. dbimport -- 1 мин load.
А проверь теперь простую таблицу того же размера, но без Блоба.
Я подозреваю, что время будет примерно таким же.
Т.е. меня не интересует разница между dbimport и load. Интересует - есть ли разница в работе dbimport при загрузке таблиц с блобами и без них, т.к. в моем случае эта разница была просто огромной (хотя, возможно, причина и в другом...).
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34057453
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis Журавлев ДенисЭто точно dbimport. Проверил на 5 млн, 6 мин. dbimport -- 1 мин load.
А проверь теперь простую таблицу того же размера, но без Блоба.

Я менял прямо в .sql от экспорта byte на integer, время сокращалось (в шесть раз) до нормального -- 1 мин.


Баг виндового dbimport -- зуб даю.


Сегодня с утра подумал -- а может гипертрейдинг? А сейчас понял какой нафиг гипертрейдинг -- у меня-ж amd64.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34058667
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисЯ менял прямо в .sql от экспорта byte на integer, время сокращалось (в шесть раз) до нормального -- 1 мин.
О-о, вот это уже интереснее. Но все же разница (в шесть раз) не такая уж и значительная. Я могу ее хоть как то объяснить. Но в моем случае, эта разница просто огромная (15 минут и 8 часов)...
Журавлев ДенисБаг виндового dbimport -- зуб даю.
Очень на это похоже, тем более, что и версия IDS довольно старая (9.30.ТС2), да и глюков в этой версии тоже прилично...
Спасибо за помощь!
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34059235
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisО-о, вот это уже интереснее. Но все же разница (в шесть раз) не такая уж и значительная. Я могу ее хоть как то объяснить. Но в моем случае, эта разница просто огромная (15 минут и 8 часов)...
Всего-то в 32 раза ;), я думаю разница зависит от железа.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34088455
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойП.С.: (OFFTOP: при загрузке на ДРУГОЙ сервер) - исправить возможно упоминающиеся названия dbspace, в которых хранились индексы и фрагменты таблиц...
Раз пошла такая пьянка - неплохо бы поправить в FAQ
Как создать копию БД с новым именем?
следующим образом:
вместо
авторнужно исправить, возможно упоминающиеся, названия dbspace, в которых хранились индексы и фрагменты таблиц
на
АнатоЛойнужно заменить возможно упоминающиеся названия отсутствующих dbspace, в которых хранились индексы и фрагменты таблиц, на названия существующих dbspace. Удалять такие названия не рекомендуется, поскольку: индексы, существовавшие как detached, после удаления ссылки на dbspace будут создаваться как attached, что может привести к ошибке "-212 Cannot add index. -142 ISAM error: overflow of tblspace page"
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34093991
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему "заменить" лучше, чем "исправить" ? Тем, что "исправить" может подразумевать "удалить" упоминание ДБ-пространства ?
А если у него все таки других пространств нет - мы ведь говорим о случае, когда надо создать копию для тестирования да еще и на другом сервере, возможно уменьшенную.
А на ошибку "142 ISAM error: overflow of tblspace page" я никогда не наталкивался. Это что, часто бывает ?
Короче, если настаиваешь на исправлении данного FAQ, то я исправлю :)
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34099236
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisА почему "заменить" лучше, чем "исправить" ? Тем, что "исправить" может подразумевать "удалить" упоминание ДБ-пространства ?
Да, именно это я и имел ввиду

vasilisА если у него все таки других пространств нет - мы ведь говорим о случае, когда надо создать копию для тестирования да еще и на другом сервере, возможно уменьшенную.

Других пространств возможно и нет - но раз пространство было ЯВНО прописано в старой схеме - лучше ЯВНО написать имя хотя бы того же пространства, в которое грузится БД (оно же есть - значит есть что написать :). Это приведёт к созданию detached индекса и позволит избежать пресловутой -142. Кстати, такое создание в большей степени воспроизведёт "похожесть" БД :)

vasilis
А на ошибку "142 ISAM error: overflow of tblspace page" я никогда не наталкивался. Это что, часто бывает?

Для меня - часто :)
Пример, где бывает:
поля: около 50 integer , пару DATE, пару DATETIME, 8 FLOAT
2 млн. записей,
EXTENT SIZE 1500000 NEXT SIZE 100000,
около 80 индексов: 30 по одному полю, 2 по двум, 16 по трём и 24 по 4-ём...

vasilis
Короче, если настаиваешь на исправлении данного FAQ, то я исправлю :)
Хм... Да честно говоря, даже интересно стало...Ау, неужто никто больше не натыкался?
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34101542
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой
Хм... Да честно говоря, даже интересно стало...Ау, неужто никто больше не натыкался?

ну почему же сразу - никто?! я вот, к примеру, не натыкался... :)
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34108937
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойДругих пространств возможно и нет - но раз пространство было ЯВНО прописано в старой схеме - лучше ЯВНО написать имя хотя бы того же пространства, в которое грузится БД (оно же есть - значит есть что написать :). Это приведёт к созданию detached индекса
detached индексы создаются по умолчанию во всех версиях, начиная с 9.3 (если не ошибаюсь). Неужели ваше замечание актуально и для этих версий ?

АнатоЛой
поля: около 50 integer , пару DATE, пару DATETIME, 8 FLOAT
около 80 индексов: 30 по одному полю, 2 по двум, 16 по трём и 24 по 4-ём...

Мда, а я то ругал наших проектировщиков и девелоперов :))
Такого я даже на наших монстровидных структурах с серверами приложений и объектным хранилищем не видел...
И большая часть индексов автоматические, из справочников ?
Это с какой же скоростью вставляются записи в такую табличку ?

АнатоЛой vasilis
Короче, если настаиваешь на исправлении данного FAQ, то я исправлю :)
Хм... Да честно говоря, даже интересно стало...Ау, неужто никто больше не натыкался?
Пока молчат... Значит, пока не исправляю. :)
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34113552
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis АнатоЛойДругих пространств возможно и нет - но раз пространство было ЯВНО прописано в старой схеме - лучше ЯВНО написать имя хотя бы того же пространства, в которое грузится БД (оно же есть - значит есть что написать :). Это приведёт к созданию detached индекса
detached индексы создаются по умолчанию во всех версиях, начиная с 9.3 (если не ошибаюсь). Неужели ваше замечание актуально и для этих версий ?

Виноват. Каюсь. Речь шла, конечно же, об IDS 7.31
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34113693
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой
поля: около 50 integer , пару DATE, пару DATETIME, 8 FLOAT
около 80 индексов: 30 по одному полю, 2 по двум, 16 по трём и 24 по 4-ём...


vasilis
Мда, а я то ругал наших проектировщиков и девелоперов :))


Это отдельная тема для разговора... Но ведь мы предлагаем советы для ВСЕХ, а не только для админов отруганных, внявших и исправившихся разработчиков?! :)

vasilis
Такого я даже на наших монстровидных структурах с серверами приложений и объектным хранилищем не видел...


Тю... Может я чего не понимаю, но это типичная схема с таблицей фактов (типа "звезда" :), даже в доке по информиксу такое упоминается)... Хотя если вопрос не к таблице, а к индексам: буду только рад высказанным советам (а я ведь ещё ничего и не спрашивал :( :) )

vasilis
И большая часть индексов автоматические, из справочников?


Таки да (см.выше) - "звезда"...

vasilis
Это с какой же скоростью вставляются записи в такую табличку ?


Штук 70 в сек... Средняя ("по больнице":) требуемая скорость вставки (исходя из объёмов):1 запись в 2 сек... Т.е., может и на пределе - надо замыслиться :)
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34113900
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой


Тю... Может я чего не понимаю, но это типичная схема с таблицей фактов (типа "звезда" :), даже в доке по информиксу такое упоминается)... Хотя если вопрос не к таблице, а к индексам: буду только рад высказанным советам (а я ведь ещё ничего и не спрашивал :( :) )




Если на таблице построены индексы

create index ..... on table (filed1);
create index ..... on table (field1,field5);
create index ..... on table (field1,field5,field28);

можно смело отказаться всех кроме последнего.
Он полностью их заменит.

Порядок полей в индексе имеет большое значение.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34115021
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-

Если на таблице построены индексы

create index ..... on table (filed1);
create index ..... on table (field1,field5);
create index ..... on table (field1,field5,field28);

можно смело отказаться всех кроме последнего.
Он полностью их заменит.

Порядок полей в индексе имеет большое значение.

Это я понимаю... Также, насколько я понимаю, советом воспользоваться можно наполовину, поскольку

АнатоЛой vasilis
И большая часть индексов автоматические, из справочников?


Таки да (см.выше) - "звезда"...

и нет возможности отказаться от

Код: plaintext
create  index ..... on table (filed1);

который построен для поддержки внешнего ключа, поскольку полученный эффект не стоит эффекта от удаления самого внешнего ключа... :) :(
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34119732
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойМожет я чего не понимаю, но это типичная схема с таблицей фактов (типа "звезда" :), даже в доке по информиксу такое упоминается)... vasilis
Это с какой же скоростью вставляются записи в такую табличку ?

Штук 70 в сек... Средняя ("по больнице":) требуемая скорость вставки (исходя из объёмов):1 запись в 2 сек... Т.е., может и на пределе - надо замыслиться :)
Учти, что скорость будет падать нелинейно (в зависимости от кол-ва строк).
И вот когда она станет совсем плохой вы сначала будете усиливать железо, а уже потом задумаетесь о той самой "типичной схеме" ?
В хранилищах данных (OLAP, DSS) уже свои правила и типичные приемы работы и массовые индексы там больше мешают. И часто делается ДЕнормализация... И таблица может делиться по ширине на часто и редко используемые данные...
Разве вы, кроме вставки, больше ничего с этими данными не делаете ?
И вот для того, чтобы взять пару столбцов для обработки вы вынуждены тянуть с дисков всю длину строки... А апдейт строки сколько будет менять в многочисленных индексах...
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34119753
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой onstat-
Если на таблице построены индексы
create index ..... on table (filed1);
create index ..... on table (field1,field5);
create index ..... on table (field1,field5,field28);
можно смело отказаться всех кроме последнего.
Он полностью их заменит.

Это я понимаю... Также, насколько я понимаю, советом воспользоваться можно наполовину, поскольку
...нет возможности отказаться от
....
который построен для поддержки внешнего ключа
Если такие автоиндексы все же есть (как указал onstat-), то можно уменьшить их число - просто сначала надо самому (вручную) создать такой составной индекс, а уже потом включить связные ограничения. Сервер достаточно умный, чтобы определить, что нужный индекс для реализации внешнего ключа уже есть и строить новый нет необходимости.
...
Рейтинг: 0 / 0
Как можно создать копии баз на одном сервере?
    #34120360
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis АнатоЛой onstat-
Если на таблице построены индексы
create index ..... on table (filed1);
create index ..... on table (field1,field5);
create index ..... on table (field1,field5,field28);
можно смело отказаться всех кроме последнего.
Он полностью их заменит.

Это я понимаю... Также, насколько я понимаю, советом воспользоваться можно наполовину, поскольку
...нет возможности отказаться от
....
который построен для поддержки внешнего ключа
Если такие автоиндексы все же есть (как указал onstat-), то можно уменьшить их число - просто сначала надо самому (вручную) создать такой составной индекс, а уже потом включить связные ограничения. Сервер достаточно умный, чтобы определить, что нужный индекс для реализации внешнего ключа уже есть и строить новый нет необходимости.
onstat- говорил о том, что можно отказаться от create index ..... on table (filed1); , я же говорю, что если я хочу сохранить констрейнт (а я хочу, и думаю никто не будет спорить, что не стоит удалять констрейнт), то избавиться от индекса не получиться, хоть я его сам создам до наложения констрейнта, хоть это сделает информикс автоматически при создании констрейнта...
...
Рейтинг: 0 / 0
23 сообщений из 48, страница 2 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как можно создать копии баз на одном сервере?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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