Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Доброе время суток! Есть необходимость увеличить длину поля с VARCHAR( 12 ) на VARCHAR( 20 ) в очень большой таблице (порядка 20 млн строк), но обычным способом (ALTER TABLE NODIFY) это сделать не удаётся - длинная транзакция. Может кто-то знает "секретный" способ это сделать не отключая журналирование базы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:17 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Leonid Vorontsov, наверное перевести таблицу в raw режим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:30 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
не очень, конечно, красиво, но все же... Если достаточно свободного пространства и есть регламентное время для тех.работ, можно попробовать сделать копию таблицы с увеличенным полем и перелить данные с одной таблицы в другую фрагментами, умещающимися в транзакцию по времени, путем INSERT INTO new_table (SELECT * FROM old_table WHERE id BETWEEN ... AND ...). потом, соответственно, переименовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:56 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Leonid VorontsovДоброе время суток! Есть необходимость увеличить длину поля с VARCHAR( 12 ) на VARCHAR( 20 ) в очень большой таблице (порядка 20 млн строк), но обычным способом (ALTER TABLE NODIFY) это сделать не удаётся - длинная транзакция. Может кто-то знает "секретный" способ это сделать не отключая журналирование базы? журналов добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:56 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Leonid VorontsovДоброе время суток! Есть необходимость увеличить длину поля с VARCHAR( 12 ) на VARCHAR( 20 ) в очень большой таблице (порядка 20 млн строк), но обычным способом (ALTER TABLE NODIFY) это сделать не удаётся - длинная транзакция. Может кто-то знает "секретный" способ это сделать не отключая журналирование базы?странно это, вообще должен быть inplace alter моментальный. (Помнится баг года 2001 (на роллбеке), который ронял мне сервак раз в 3дня, чуть не поседел тогда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 15:09 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Алексанжурналов добавить? Если даже это не поможет, то: 1. ALTER TABLE .. ADD new_column VARCHAR(20); если остановка работы пользователей с old_column невозможна, то: 1.1. для поддержки в онлайн автоматом нового поля CREATE TRIGGER ... ON INSERT ... UPDATE ... SET new_column = old_column WHERE pk= old.pk CREATE TRIGGER ... ON UPDATE OF old_column UPDATE ... SET new_column = old_column WHERE pk= old.pk 2. пишите и запускаете ХП, которая неспеша (в цикле и т.д.) обновляет new_column для существующих записей (тут уж сами заботьтесь, чтобы и лишней работы не делать, и таки ВСЕ записи проапдейтить) 3. избавляетесь от пользователей :) 3. Если создавали триггера - дропаете их 4. ALTER TABLE .. DROP old_column; 5. RENAME COLUMN xxx.new_column TO old_column; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 15:09 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисLeonid VorontsovДоброе время суток! Есть необходимость увеличить длину поля с VARCHAR( 12 ) на VARCHAR( 20 ) в очень большой таблице (порядка 20 млн строк), но обычным способом (ALTER TABLE NODIFY) это сделать не удаётся - длинная транзакция. Может кто-то знает "секретный" способ это сделать не отключая журналирование базы?странно это, вообще должен быть inplace alter моментальный. (Помнится баг года 2001 (на роллбеке), который ронял мне сервак раз в 3дня, чуть не поседел тогда). на varchar не делается in-place alter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 16:20 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Использовать onpload. Выгрузить таблицу с разделителями. Таблицу удалить и создать raw пустую модифицированную. Загрузить таблицу, перевести в стандартный тип, создать архив 0 уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 17:53 |
|
||
|
ALTER TABLE -> Long Transaction
|
|||
|---|---|---|---|
|
#18+
Перед выбором варианта с onpload обязательно оценить затраты времени, которые возникнут вследствие atlasТаблицу удалить Это затраты на: 1. Работы по созданию скрипта восстановления удалённых констрейнтов (особенно внешних ключей на эту таблицу), триггеров, и всех взглядов, использовавших эту таблицу 2. Работу созданного скрипта из п.1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 18:08 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=35759334&tid=1607913]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 417ms |

| 0 / 0 |
