|
альтер таблица
|
|||
---|---|---|---|
#18+
IDS 7.31 FD10 ребуется расширить чаровую колонку в таблице лежащей в 12-и фрагментах с круговой фрагментацией. Если кто уже сталкивался прошу подсказать 1. Требуется ли в каждом фрагменте запас свободного пространства не менее чем уже занято? 2. Требуется ли снимать журнализацию, т.е. выполняется ли альтер в транзакции или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 11:38 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
и может ли PDQ запараллелить процесс? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 11:47 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
вот здесь 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 как это будет выглядеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 12:57 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
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 как это будет выглядеть? обычный альтер в транзакции, с перекладыванием таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 13:39 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
докладаю :-) IDS 7.31 FD10 Альтер табле на таблицу 111600000 килобайт в 12-и фрагментах прошел очень быстро при включенной журнализации. Записано-прочитано Informix было очень немного. Судя по всему это таки inplace алгоритм. Но по oncheck ничего такого не видно. Еще очень интересно как это будет выглядеть в HADR ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 16:34 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
еще один вопрос может ли эта операция повлиять на производительность при работе с этой таблицей? Поле char(160) было расширено в char(300). В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 16:49 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
cprеще один вопрос может ли эта операция повлиять на производительность при работе с этой таблицей? Поле char(160) было расширено в char(300). В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет. Влияет, так как при обращении к данным нужно преобразовывать страницу. т.е. если курсор будет обращаться и к старой странице и к новой при приобразовании на выходе будут некие замедления. Как измерить это влияние - не знаю. Не измерял. Но в Perfomance Guide об этом говорится. Недавно в рассылке IBM проскакивало сообщение на эту тему со ссылкой на скрипт. Скрипт назывался inplacealter.ksh ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 18:30 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
zaietscprеще один вопрос может ли эта операция повлиять на производительность при работе с этой таблицей? Поле char(160) было расширено в char(300). В выражениях для всяких фильтров в подавляющем большинстве случаев не участвует, индекса как вы уже сами догадались нет. Влияет, так как при обращении к данным нужно преобразовывать страницу. т.е. если курсор будет обращаться и к старой странице и к новой при приобразовании на выходе будут некие замедления. Как измерить это влияние - не знаю. Не измерял. Но в Perfomance Guide об этом говорится. Недавно в рассылке IBM проскакивало сообщение на эту тему со ссылкой на скрипт. Скрипт назывался inplacealter.ksh А если после внесения изменений избавиться от IPAT? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 18:38 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2009, 00:20 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
sysmasterА если после внесения изменений избавиться от IPAT? Дак и предлагают лечение обновдлением всех строк таблицы (можно только старых) по неиндесированному полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2009, 15:05 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
sysmasterА если после внесения изменений избавиться от IPAT? Что очень настоятельно рекомендую сделать при первой возможности. Опыт показал, что в дальнейшем с такими таблицами (находящимися в IPAT) происходят странные и трудно объяснимые вещи (хотя были и такие же таблицы по несколько лет и ничего с ними не случалось - наверное, просто таблицы в IPAT сильно увеличивают вероятность проблем при соответствующих условиях). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2009, 17:27 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2009, 17:38 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
zaietssysmasterА если после внесения изменений избавиться от IPAT? Дак и предлагают лечение обновдлением всех строк таблицы (можно только старых) по неиндесированному полю. То есть сделать update set field=field where строки до alter table; ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 17:25 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
типа update <table> set <column>=<columnn> where 1=1 исли нужно управлять транзакцией - тогда уже нужно малость все оборачивать в обертку ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 18:55 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
vasilis, так точно, смотрел в прошлый раз непонятно куда :-( oncheck -pT показывает старые версии страниц ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 19:28 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
cprsysmasterА если после внесения изменений избавиться от IPAT? То есть сделать update set field=field where строки до alter table; ? Нужно просто любым способом переписать (обновить) все страницы таблицы - сделать Update всех строк - "упаковать" в тот же самый или другой dbspace alter fragment on table %_table% init in %work_dbs% т.е. использовать тот же способ, что и при "упаковке" таблицы - выгрузить и снова загрузить таблицу (любым способом) - для небольших БД проще сделать экспорт-импорт всей БД ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 12:31 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 14:39 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
я правильно понимаю, в конце концов надо получить примерно это ? ============================================== Home Data Page Version Summary Version Count 0 (oldest) 0 1 (current) 4419352 ================================================ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 18:44 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
Может дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал. Может выполнение банального level-0 и дает искомый эффект? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 19:08 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
DaugavaМожет дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал. Может выполнение банального level-0 и дает искомый эффект? ага, это тот самый баг, который лечился недокументированным параметров CCFLAG. Но вообще попробовать то не проблема, результат напишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 19:10 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
DaugavaМожет дурость скажу. Но меня в свое время сильно доставал баг ontape-а, который назывался "OLD PAGES BACKUP", выражался он в том, что при выполнении архива 0-го, сервер начинал активно апдейтить страницы, которые считал по своим каким-то причинам старыми и левел-0 вместо нескольких часов растягивался на дни. При этом при срыве ontape и повторном его запуске уже проапдейченные страницы он по новой не перезаписывал. Может выполнение банального level-0 и дает искомый эффект? нет, это разные вещи. Ontape смотрит не на версию страницы, а на timestamp - некую временную отметку, которая стоит в заголовке и хвосте страницы и изменяется каждый раз при перезаписи страницы. А в заголовке и в хвосте отметка должна совпадать - проверка целостности операции записи страницы, чтобы избежать частичного изменения во время краха (сбоя диска). Есть еще и общий timestamp для сервера, который изменяется при любом изменении любой страницы. Та проблема была связана с тем, что этот параметр был всего лишь 4-х байтным и инкрементировался по кругу, а значит для больших баз возникала ситуция его совпадения. Короче, версия описания структуры таблицы, которую показывает oncheck, не имеет к этому багу никакого отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 21:55 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
cprя правильно понимаю, в конце концов надо получить примерно это ? ============================================== Home Data Page Version Summary Version Count 0 (oldest) 0 1 (current) 4419352 ================================================ Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 21:56 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2009, 14:07 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
vasiliscprя правильно понимаю, в конце концов надо получить примерно это ? ============================================== Home Data Page Version Summary Version Count 0 (oldest) 0 1 (current) 4419352 ================================================ Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две. Дык это то, что я получил после выполенеия update таблицы set колонка=колонка where 1==1; Что еще нужно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2009, 17:42 |
|
альтер таблица
|
|||
---|---|---|---|
#18+
cprvasiliscprя правильно понимаю, в конце концов надо получить примерно это ? ============================================== Home Data Page Version Summary Version Count 0 (oldest) 0 1 (current) 4419352 ================================================ Нет под рукой сервера, но мне кажется, что версия должна быть одна. У тебя в примере две. Дык это то, что я получил после выполенеия update таблицы set колонка=колонка where 1==1; Что еще нужно сделать? 0 (oldest) 0 страниц в старой версии, ничего больше делать не нужно. Все уже ОК. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2009, 17:54 |
|
|
start [/forum/topic.php?fid=44&msg=35874973&tid=1607850]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 179ms |
0 / 0 |