Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
15.04.2011, 13:37
|
|||
---|---|---|---|
|
|||
expected row size |
|||
#18+
ASE 15 Есть таблица с exp_row_size = 200. Я втавляю строку размером 100 байт, ASE под эту строку выделит 200 байт или 300(100 + 200) байт? Т.е exp_row_size - это именно размер строки или размер резарва для каждой строки. второй вопрос! Параметр конфигурации default exp_row_size percent = 5%. Для всех явно не заданных таблиц, ASE тупо оставит 5% свободного пространства не как не деля эти 5% по строкам на странице? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.04.2011, 11:22
|
|||
---|---|---|---|
expected row size |
|||
#18+
On 15.04.2011 14:37, cherrex_Den wrote: > Есть таблица с exp_row_size = 200. Я втавляю строку размером 100 байт, ASE под > эту строку выделит 200 байт или 300(100 + 200) байт? 100 байт Т.е exp_row_size - это > именно размер строки или размер резарва для каждой строки. sybooksChapter 14: Setting Space Management Properties Reducing row forwarding Specifying an expected row size for a data-only-locked table is useful when an application allows rows that contain null values or short variable-length character fields to be inserted, and these rows grow in length with subsequent updates. The major purpose of setting an expected row size is to reduce row forwarding. .... > второй вопрос! > Параметр конфигурации default exp_row_size percent = 5%. Для всех явно не > заданных таблиц, ASE тупо оставит 5% свободного пространства не как не деля эти > 5% по строкам на странице? sybooksDefault value If you do not specify an expected row size or a value of 0 when you create a data-only-locked table with variable-length columns, Adaptive Server uses the amount of space specified by the configuration parameter default exp_row_size percent for any table that has variable-length columns. See “Setting a default expected row size server-wide” for information on how this parameter affects space on data pages. Use sp_help to see the defined length of the columns in the table. Для КАЖДОЙ СТРОКИ (вставляемой) применяется exp_row_size. Но учтите, что задаётся он ОДИН РАЗ при создании таблицы. Если вы его задаёте явно, используется ваше значение, если не задаёте, оно расчитывается как процент от размера страницы и делится на все записи. Как -- не очень ясно, но по-видимому (далее -- моё предположение) вычисляется по минимальной длине кол-во записей и доп. место, вычисленное как размер страницы на процент `default exp_row_size percent', делится на все записи и резервируется для каждой записи. Это чтобы потом строки не двигать. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.04.2011, 12:40
|
|||
---|---|---|---|
|
|||
expected row size |
|||
#18+
Спасибо! С этим вопросом все понятно! Может кто-то объяснит такой полтергейств? Создаем таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Максимальный размер строки 22 байта, минимальный 6 байт. Смотрим в sysindexes, minlen = 12, а maxlen = 34. Откуда ASE взяд такие значения??? Смотрим в systabstats, datarowsize = 23. Почему 23??? добовляем 100 строк Код: plaintext 1. 2.
Обновляем статистику(systabstats) сами ,чтоб не ждать пока ее обновит ASE Код: plaintext
Смотрим в sysindexes, minlen = 12, а maxlen = 34. Не поменялось, оно и понятно. Смотрим в systabstats, datarowsize = 12. С чего оно вдруг стало 12, если заполнено только поле q(numeric (12,0))? должно быть 6. Далее проставляем два оставшихся поля w и e: Код: plaintext 1. 2.
и опять Код: plaintext
Смотрим в sysindexes, minlen = 12, а maxlen = 34. Не поменялось, оно и понятно. Смотрим в systabstats, datarowsize = 34. С чего оно вдруг стало 34???? Должно же быть 22!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.04.2011, 13:02
|
|||
---|---|---|---|
|
|||
expected row size |
|||
#18+
И самый главный вопрос: Берем туже таблицу, что и в прошлом посте. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
задаем exp_row_size на максимум: Код: plaintext
далее добавляем 700 строк: Код: plaintext 1. 2.
потом расширяем их: Код: plaintext 1. 2.
Обновляем статистику: Код: plaintext
смотрим на systabstats или на вывод optdiag и видим forwrowcnt = 57 Откуда взялись forwarded rows?????? exp_row_size задан по максимому!!! больше чем 22, ASE сделать не дает!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.04.2011, 21:53
|
|||
---|---|---|---|
|
|||
expected row size |
|||
#18+
Вроде бы с размером строки разобрался! Calculate the data row size Действительно моя строка в таблице занимает 34 байта. В принципе это и объясняет появление forwarded rows. Но тогда почему ASE не дает установить exp_row_size = 34? Хотя в документации это не запрещается: документацияYou can change the exp_row_size only if the modified table schema contains variable length columns, and only to within the range specified by the maxlen and minlen values in sysindexes for the modified table schema. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=55&tablet=1&tid=2010355]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 480ms |
0 / 0 |