powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / alter table add 'column' и увеличение размера таблицы
5 сообщений из 5, страница 1 из 1
alter table add 'column' и увеличение размера таблицы
    #35359293
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Я использую ASE 12.5. Есть таблица с огромным количеством строк. Нужно завести новый столбец. Стою перед выбором: либо добавить новый столбец в существующую, либо создать новую таблицу. Первая альтернатива наиболее предпочтительна с точки зрения удобства, но меня останавливает возможное существенное увеличение размера таблицы на устройствах хранения, так как для уже существующих записей, которых оргомное количество, там будет храниться null. Вопрос. Действительно ли произойдет увеличение размера таблицы или ASE настолько умный, чтобы не увеличивать размеры существующих строк, а обрабатывать старые строки особым образом, к примеру, добавляя новый столбец на лету?

Спасибо,
Виталий
...
Рейтинг: 0 / 0
alter table add 'column' и увеличение размера таблицы
    #35360380
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> предпочтительна с точки зрения удобства, но меня останавливает возможное
> существенное увеличение размера таблицы на устройствах хранения, так как
> для уже существующих записей, которых оргомное количество, там будет
> храниться null. Вопрос. Действительно ли произойдет увеличение размера
> таблицы

Нет, не произойдет.

или ASE настолько умный, чтобы не увеличивать размеры
> существующих строк, а обрабатывать старые строки особым образом, к
> примеру, добавляя новый столбец на лету?

Поле добавится физически в конец списка полей переменной длины.
В каждой записи хранятся смещения полей от начала записи.
В этот массив в конец для всех существующих записей добавится
поле смещения новой колонки, которое будет совпадать со смещением
предыдущей, и будет, таким образом, обозначать пустое поле
(т.е. null). Физически записи в БД даже не будут меняться,
поменяется только заголовок таблицы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
alter table add 'column' и увеличение размера таблицы
    #35360458
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ, MasterZiv

Я немного поэкспериментировал с alter table. И выяснил, что операция добавления нового столбца проходи очень быстро. Я полагаю, что она не затрагивает страницы с данными. Просто меняется секция с описанием таблицы (не знаю, как назвать по-другому). Действительно, при добавлении столбца необязательно менять список со смещениями для каждой строки. Зато операция удаления столбца занимает много времени. В этом случае необходимо пройти по всем строкам.


Код: plaintext
1.
2.
3.
4.
5.
6.
SQL (ASE 12.5)                        sp_spaceused (reserved column)
---------------------------------------------------------------------  
create table aaa ( a int )            16 KB 
filling with ~2.5M records            20322 KB
alter table aaa add b char(8) null    20322 KB
update aaa set b = '12345678'         56946 KB

Спасибо,
Виталий
...
Рейтинг: 0 / 0
alter table add 'column' и увеличение размера таблицы
    #35360579
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> Я немного поэкспериментировал с alter table. И выяснил, что операция
> добавления нового столбца проходи очень быстро. Я полагаю, что она не
> затрагивает страницы с данными.

Если добавляются поля NULL, то да, не затрагивает.

Просто меняется секция с описанием
> таблицы (не знаю, как назвать по-другому).

Заголовок. syscolumns.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
alter table add 'column' и увеличение размера таблицы
    #35360711
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы добавил что при добавлении столбца переменной длины реальный размер столбца для например DOL таблицы будет равен длине столбца плюс 10 байт служебной информации. Я бы подумал стоит ли так делать для таблицы "с огромным количеством строк"
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / alter table add 'column' и увеличение размера таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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