Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / альтер таблица / 25 сообщений из 31, страница 1 из 2
06.03.2009, 11:38
    #35855366
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
IDS 7.31 FD10
ребуется расширить чаровую колонку в таблице лежащей в 12-и фрагментах с круговой фрагментацией.

Если кто уже сталкивался прошу подсказать
1. Требуется ли в каждом фрагменте запас свободного пространства не менее чем уже занято?
2. Требуется ли снимать журнализацию, т.е. выполняется ли альтер в транзакции или нет?
...
Рейтинг: 0 / 0
06.03.2009, 11:47
    #35855418
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
и может ли PDQ запараллелить процесс?
...
Рейтинг: 0 / 0
06.03.2009, 12:57
    #35855717
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
вот здесь

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.perf.doc/perf194.htm

написано, что для char(m) to char(n) для n>m будет использоваться inplace алгоритм.
Но это для 10-й версии.

Для 7.31 FD 10 как это будет выглядеть?
...
Рейтинг: 0 / 0
06.03.2009, 13:39
    #35855868
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprвот здесь

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.perf.doc/perf194.htm

написано, что для char(m) to char(n) для n>m будет использоваться inplace алгоритм.
Но это для 10-й версии.

Для 7.31 FD 10 как это будет выглядеть?
обычный альтер
в транзакции, с перекладыванием таблицы
...
Рейтинг: 0 / 0
06.03.2009, 16:34
    #35856365
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
докладаю :-)

IDS 7.31 FD10

Альтер табле на таблицу 111600000 килобайт в 12-и фрагментах прошел очень быстро при включенной журнализации.
Записано-прочитано Informix было очень немного. Судя по всему это таки inplace алгоритм.
Но по oncheck ничего такого не видно.

Еще очень интересно как это будет выглядеть в HADR
...
Рейтинг: 0 / 0
06.03.2009, 16:49
    #35856423
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
еще один вопрос

может ли эта операция повлиять на производительность при работе с этой таблицей?

Поле char(160) было расширено в char(300).
В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет.
...
Рейтинг: 0 / 0
06.03.2009, 18:30
    #35856626
zaiets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprеще один вопрос

может ли эта операция повлиять на производительность при работе с этой таблицей?

Поле char(160) было расширено в char(300).
В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет.

Влияет, так как при обращении к данным нужно преобразовывать страницу.
т.е. если курсор будет обращаться и к старой странице и к новой при приобразовании на выходе будут некие замедления.
Как измерить это влияние - не знаю. Не измерял.

Но в Perfomance Guide об этом говорится.

Недавно в рассылке IBM проскакивало сообщение на эту тему со ссылкой на скрипт.
Скрипт назывался inplacealter.ksh
...
Рейтинг: 0 / 0
06.03.2009, 18:38
    #35856632
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
zaietscprеще один вопрос

может ли эта операция повлиять на производительность при работе с этой таблицей?

Поле char(160) было расширено в char(300).
В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет.

Влияет, так как при обращении к данным нужно преобразовывать страницу.
т.е. если курсор будет обращаться и к старой странице и к новой при приобразовании на выходе будут некие замедления.
Как измерить это влияние - не знаю. Не измерял.

Но в Perfomance Guide об этом говорится.

Недавно в рассылке IBM проскакивало сообщение на эту тему со ссылкой на скрипт.
Скрипт назывался inplacealter.ksh
А если после внесения изменений избавиться от IPAT?
...
Рейтинг: 0 / 0
07.03.2009, 00:20
    #35856884
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprдокладаю :-)

IDS 7.31 FD10

Альтер табле на таблицу 111600000 килобайт в 12-и фрагментах прошел очень быстро при включенной журнализации.
Записано-прочитано Informix было очень немного. Судя по всему это таки inplace алгоритм.
Но по oncheck ничего такого не видно.

Еще очень интересно как это будет выглядеть в HADR

если мне не изменяет склероз, oncheck-ом можно посмотреть данные таблицы в tablespace tablespace и там будет видна версия...

точно :
Question
How do you use oncheck to identify outstanding in-place alters?

Answer

1. Run the oncheck -pT command, using one of the following syntaxes:

oncheck -pT database_name:table_name

database_name
The name of the database where the table resides
table_name
The name of the target table
oncheck -pT partnum
partnum
The partition number for the target table


2. Search for the entry Home Datapage Version Summary and the Version and Count columns immediately underneath.

Version
Version number of the table's schema. This number is zero when the table is first created or after a Slow Alter algorithm has been applied. This value is incremented every time an In-Place Alter algorithm is applied to the table.

Count
The number of pages that currently exist for the version number shown.


3. If there is an outstanding In-Place Alter on the table, there will be a version number with the modifier oldest and a version number with the modifier current. The Count column for any or all of the versions, apart from the latest version (current), will have a non-zero value.

Note that if all the Count values for the versions (excluding the current version) are zero, then all the data pages will have the latest version. This means that there is not outstanding In-Place Alter.

http://www-01.ibm.com/support/docview.wss?uid=swg21144602
...
Рейтинг: 0 / 0
08.03.2009, 15:05
    #35857630
zaiets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
sysmasterА если после внесения изменений избавиться от IPAT?

Дак и предлагают лечение обновдлением всех строк таблицы (можно только старых)
по неиндесированному полю.
...
Рейтинг: 0 / 0
10.03.2009, 17:27
    #35860329
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
sysmasterА если после внесения изменений избавиться от IPAT?
Что очень настоятельно рекомендую сделать при первой возможности.
Опыт показал, что в дальнейшем с такими таблицами (находящимися в IPAT) происходят странные и трудно объяснимые вещи (хотя были и такие же таблицы по несколько лет и ничего с ними не случалось - наверное, просто таблицы в IPAT сильно увеличивают вероятность проблем при соответствующих условиях).
...
Рейтинг: 0 / 0
10.03.2009, 17:38
    #35860356
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprНо по oncheck ничего такого не видно.
А хорошо смотрели ?
Можете попробовать ниже приведенный SQL-запрос. Насколько я помню, он может выполнятся довольно долго, т.к. читает заголовки всех страниц инстанса.
На новых версиях IDS не проверял/
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
-----------------------------------------------------------
-- Find the tables with active in-place alters
--  (detect tables modified by an in-place alter statement)
--  These include tables whose data pages are completely converted to the new form.
--    oncheck -pT <database>:<table>
--
-- Set OPTCOMPIND to 0 in the configuration file or environment and run
--
-- V.Shulzhenko  DBA Tools (by IBM FAQ)   08'2002 - 09'2007
-----------------------------------------------------------
set isolation to dirty read;
select pg_partnum + pg_pagenum -  1  partn 
from syspaghdr, sysdbspaces a 
where pg_partnum =  1048576  * a.dbsnum +  1    
      and pg_next !=  0  
into temp _temp_dbatools with no log; 
-----------------------------------------------------------
select   n.dbsname[ 1 , 18 ]        database_18
        ,n.tabname[ 1 , 18 ]        table_18 
        ,substr(ti_nrows, 1 , 10 )          num_rows
        ,substr(sum(ti_nptotal), 1 , 7 )    total_p
        ,substr(round(sum(ti_nptotal)*(select sh_pagesize from sysmaster:sysshmvals)/ 1048576 , 2 ), 1 , 7 ) size_mb
from systabnames n, _temp_dbatools t, systabinfo i
where   t.partn = n.partnum
        and n.partnum = i.ti_partnum
group by  1 , 2 , 3 
order by  1 , 2 ; 
...
Рейтинг: 0 / 0
13.03.2009, 17:25
    #35868282
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
zaietssysmasterА если после внесения изменений избавиться от IPAT?

Дак и предлагают лечение обновдлением всех строк таблицы (можно только старых)
по неиндесированному полю.


То есть сделать
update set field=field where строки до alter table;
?
...
Рейтинг: 0 / 0
13.03.2009, 18:55
    #35868557
zaiets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
типа
update <table> set <column>=<columnn> where 1=1
исли нужно управлять транзакцией - тогда уже нужно малость все оборачивать в обертку
...
Рейтинг: 0 / 0
13.03.2009, 19:28
    #35868616
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
vasilis,

так точно, смотрел в прошлый раз непонятно куда :-(

oncheck -pT показывает старые версии страниц
...
Рейтинг: 0 / 0
16.03.2009, 12:31
    #35871179
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprsysmasterА если после внесения изменений избавиться от IPAT?
То есть сделать
update set field=field where строки до alter table;
?
Нужно просто любым способом переписать (обновить) все страницы таблицы
- сделать Update всех строк
- "упаковать" в тот же самый или другой dbspace
alter fragment on table %_table% init in %work_dbs%
т.е. использовать тот же способ, что и при "упаковке" таблицы
- выгрузить и снова загрузить таблицу (любым способом)
- для небольших БД проще сделать экспорт-импорт всей БД
...
Рейтинг: 0 / 0
16.03.2009, 14:39
    #35871664
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
vasiliscprsysmasterА если после внесения изменений избавиться от IPAT?
То есть сделать
update set field=field where строки до alter table;
?
Нужно просто любым способом переписать (обновить) все страницы таблицы
- сделать Update всех строк
- "упаковать" в тот же самый или другой dbspace
alter fragment on table %_table% init in %work_dbs%
т.е. использовать тот же способ, что и при "упаковке" таблицы
- выгрузить и снова загрузить таблицу (любым способом)
- для небольших БД проще сделать экспорт-импорт всей БД

В моем случае 110 гиг и 12 фрагментов алтер фрагмент не подходит, dbexport тоже т.к база слишком велика.

С выгрузить загрузить таблицу тоже все ясно , но на нее 48 ссылок.
Собственно вариантов 2, если смогу провести update так чтобы не мешать работе , то делаю update, иначе unload, drop/create, load.
...
Рейтинг: 0 / 0
16.03.2009, 18:44
    #35872448
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
я правильно понимаю, в конце концов надо получить примерно это ?
==============================================
Home Data Page Version Summary

Version Count

0 (oldest) 0
1 (current) 4419352
================================================
...
Рейтинг: 0 / 0
16.03.2009, 19:08
    #35872498
Daugava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
Может дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал.

Может выполнение банального level-0 и дает искомый эффект?
...
Рейтинг: 0 / 0
16.03.2009, 19:10
    #35872503
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
DaugavaМожет дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал.

Может выполнение банального level-0 и дает искомый эффект?

ага, это тот самый баг, который лечился недокументированным параметров CCFLAG.
Но вообще попробовать то не проблема, результат напишу.
...
Рейтинг: 0 / 0
16.03.2009, 21:55
    #35872754
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
DaugavaМожет дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал.
Может выполнение банального level-0 и дает искомый эффект?
нет, это разные вещи.
Ontape смотрит не на версию страницы, а на timestamp - некую временную отметку, которая стоит в заголовке и хвосте страницы и изменяется каждый раз при перезаписи страницы. А в заголовке и в хвосте отметка должна совпадать - проверка целостности операции записи страницы, чтобы избежать частичного изменения во время краха (сбоя диска). Есть еще и общий timestamp для сервера, который изменяется при любом изменении любой страницы. Та проблема была связана с тем, что этот параметр был всего лишь 4-х байтным и инкрементировался по кругу, а значит для больших баз возникала ситуция его совпадения.
Короче, версия описания структуры таблицы, которую показывает oncheck, не имеет к этому багу никакого отношения.
...
Рейтинг: 0 / 0
16.03.2009, 21:56
    #35872758
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprя правильно понимаю, в конце концов надо получить примерно это ?
==============================================
Home Data Page Version Summary

Version Count

0 (oldest) 0
1 (current) 4419352
================================================
Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две.
...
Рейтинг: 0 / 0
17.03.2009, 14:07
    #35874067
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprvasiliscprsysmasterА если после внесения изменений избавиться от IPAT?
То есть сделать
update set field=field where строки до alter table;
?
Нужно просто любым способом переписать (обновить) все страницы таблицы
- сделать Update всех строк
- "упаковать" в тот же самый или другой dbspace
alter fragment on table %_table% init in %work_dbs%
т.е. использовать тот же способ, что и при "упаковке" таблицы
- выгрузить и снова загрузить таблицу (любым способом)
- для небольших БД проще сделать экспорт-импорт всей БД

В моем случае 110 гиг и 12 фрагментов алтер фрагмент не подходит, dbexport тоже т.к база слишком велика.

С выгрузить загрузить таблицу тоже все ясно , но на нее 48 ссылок.
Собственно вариантов 2, если смогу провести update так чтобы не мешать работе , то делаю update, иначе unload, drop/create, load.
Последний вариант (unload, drop/create, load) тоже должен учитывать "48 ссылок" :)
Так что остается один вариант - dummy update.
Хочу еще заметить, что перезаписываемый столбец не должен быть serial (надеюсь. понятно, почему).
У меня где то был скрипт на такой dummy update всех таблиц в БД, который рекомендуется делать перед миграцией (переход на более высокие версии) с учетом проверки столбца на serial
...
Рейтинг: 0 / 0
17.03.2009, 17:42
    #35874928
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
vasiliscprя правильно понимаю, в конце концов надо получить примерно это ?
==============================================
Home Data Page Version Summary

Version Count

0 (oldest) 0
1 (current) 4419352
================================================
Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две.

Дык это то, что я получил после выполенеия

update таблицы set колонка=колонка where 1==1;

Что еще нужно сделать?
...
Рейтинг: 0 / 0
17.03.2009, 17:54
    #35874973
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтер таблица
cprvasiliscprя правильно понимаю, в конце концов надо получить примерно это ?
==============================================
Home Data Page Version Summary

Version Count

0 (oldest) 0
1 (current) 4419352
================================================
Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две.

Дык это то, что я получил после выполенеия

update таблицы set колонка=колонка where 1==1;

Что еще нужно сделать?

0 (oldest) 0 страниц в старой версии, ничего больше делать не нужно. Все уже ОК.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / альтер таблица / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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