|
|
|
alter table add 'column' и увеличение размера таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый день! Я использую ASE 12.5. Есть таблица с огромным количеством строк. Нужно завести новый столбец. Стою перед выбором: либо добавить новый столбец в существующую, либо создать новую таблицу. Первая альтернатива наиболее предпочтительна с точки зрения удобства, но меня останавливает возможное существенное увеличение размера таблицы на устройствах хранения, так как для уже существующих записей, которых оргомное количество, там будет храниться null. Вопрос. Действительно ли произойдет увеличение размера таблицы или ASE настолько умный, чтобы не увеличивать размеры существующих строк, а обрабатывать старые строки особым образом, к примеру, добавляя новый столбец на лету? Спасибо, Виталий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 13:42 |
|
||
|
alter table add 'column' и увеличение размера таблицы
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > предпочтительна с точки зрения удобства, но меня останавливает возможное > существенное увеличение размера таблицы на устройствах хранения, так как > для уже существующих записей, которых оргомное количество, там будет > храниться null. Вопрос. Действительно ли произойдет увеличение размера > таблицы Нет, не произойдет. или ASE настолько умный, чтобы не увеличивать размеры > существующих строк, а обрабатывать старые строки особым образом, к > примеру, добавляя новый столбец на лету? Поле добавится физически в конец списка полей переменной длины. В каждой записи хранятся смещения полей от начала записи. В этот массив в конец для всех существующих записей добавится поле смещения новой колонки, которое будет совпадать со смещением предыдущей, и будет, таким образом, обозначать пустое поле (т.е. null). Физически записи в БД даже не будут меняться, поменяется только заголовок таблицы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 18:02 |
|
||
|
alter table add 'column' и увеличение размера таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, MasterZiv Я немного поэкспериментировал с alter table. И выяснил, что операция добавления нового столбца проходи очень быстро. Я полагаю, что она не затрагивает страницы с данными. Просто меняется секция с описанием таблицы (не знаю, как назвать по-другому). Действительно, при добавлении столбца необязательно менять список со смещениями для каждой строки. Зато операция удаления столбца занимает много времени. В этом случае необходимо пройти по всем строкам. Код: plaintext 1. 2. 3. 4. 5. 6. Спасибо, Виталий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 18:35 |
|
||
|
alter table add 'column' и увеличение размера таблицы
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > Я немного поэкспериментировал с alter table. И выяснил, что операция > добавления нового столбца проходи очень быстро. Я полагаю, что она не > затрагивает страницы с данными. Если добавляются поля NULL, то да, не затрагивает. Просто меняется секция с описанием > таблицы (не знаю, как назвать по-другому). Заголовок. syscolumns. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 19:14 |
|
||
|
alter table add 'column' и увеличение размера таблицы
|
|||
|---|---|---|---|
|
#18+
я бы добавил что при добавлении столбца переменной длины реальный размер столбца для например DOL таблицы будет равен длине столбца плюс 10 байт служебной информации. Я бы подумал стоит ли так делать для таблицы "с огромным количеством строк" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 20:18 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=51&tid=2011545]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 384ms |

| 0 / 0 |
