|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
К примеру просто умножив размер записи на коичество мы не увидим реальный размер аллокированый в базе (размер extension-а). Как его почитать? npused*pagesize не дает правильного размера... Отдельно onckeck -pT запрошу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 11:29 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Если я правильно понял вопрос, то нужно узнать сколько места занимает таблица в БД. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 11:58 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Нету такой таблички в IBM Informix Dynamic Server Version 10.0.TC3 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:03 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
А сорри все понял... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:03 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
По данным это налогично так что все равно не понятно как расчтать размер. Что на что умножить то? Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:11 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Место под таблицу выделяется кусками, которые называется экстентами. Сумма размеров экстентов и даст реальный размер, который имеет таблица. ЗЫ. Информикс не умеет освобождать экстенты. Т.е. если из таблицы удалить все данные, то занимаемое данными место нельзя использовать для другой таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:21 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
DBA может менять размер экстента для таблицы. Поэтому значений extent size и next size недостаточно для вычисления размера таблицы. Например число транзакций у Вас увеличилось в 100 раз, и число экстентов в таблице ctransactions стало безудержно расти. А т.к максимальное число экстентов не бесконечно, то размер экстента нужно увеличить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:31 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Поствим вопрос по другому. Есть команда oncheck -pT для таблицы. К примеру она выдает вот такое значение: oncheck Maximum row size 586 Number of special columns 2 Number of keys 0 Number of extents 1 Current serial value 1 Pagesize (k) 4 First extent size 16362 Next extent size 1636 Number of pages allocated 16362 Number of pages used 4497 Number of data pages 4496 Number of rows 130835 Partition partnum 6291627 Partition lockid 6291627 Как имея эти данные расчитаь размер таблицы который она отъедает от тейблспейса? Number of pages allocated 16362 * Page Size (from systables 4096) = 67 018 752 Но расчитав минимальный размер исходя из размера записи получим: Maximum row size 586 * Number of rows 130835 = 76 669 310 Что за лабуда и что я не так посчитал? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:46 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Maximum row size 586 - это не показатель. В строке могут быть NULL значения или varchar. Строка становится короче. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:53 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
А еще 7 строк длиной 586 байт не влезут на страницу размером 4096 байт. Влезет только 6. Свободными останутся 580 байт. В общем пора читать "IBM Informix Dynamic Server Administrator’s Guide" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 12:59 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
klepaЗЫ. Информикс не умеет освобождать экстенты. Т.е. если из таблицы удалить все данные, то занимаемое данными место нельзя использовать для другой таблицы. ALTER FRAGMENT ON TABLE table_name INIT IN dbs_name; ALTER FRAGMENT ON INDEX index_name INIT IN dbs_name; При этом dbs_name может быть тот же самый, в котором таблица находится в данный момент. Лишь бы места в нём хватило... Если места мало - можно таблицу мувнуть в другой dbs, а потм вернуть назад. И всё свободное место в занятых экстентах будет возвращено системе для использования другими (или этой же самой) таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 13:37 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Петров АндрейК примеру просто умножив размер записи на коичество мы не увидим реальный размер аллокированый в базе (размер extension-а). Как его почитать? npused*pagesize не дает правильного размера... Отдельно onckeck -pT запрошу. npused*pagesize по systables даст правильный размер только после обновления статистики, и если таблица не фрагментирована ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 14:51 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Для топикстартера и некоторых отвечающих будет полезно почитать топик 4-х летней давности (к тому же эта тема поднималась множество раз - нужно всего лишь воспользоваться поиском). http://sql.ru/forum/actualthread.aspx?tid=203290&hl=%f0%e0%e7%ec%e5%f0+%f2%e0%e1%eb%e8%f6%fb ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 16:08 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Sergey Babitch И всё свободное место в занятых экстентах будет возвращено системе для использования другими (или этой же самой) таблицами. В принципе правильно, но есть несколько замечаний (так как картинка не такая простая :) 1) для "этой же самой таблицы" пространство в экстентах с удаленными строками доступно для вставок все время и без всяких манипуляций; 2) Если у таблицы при создании установлен большой начальный экстент (и дополнительные экстенты не выделялись, для простоты примера), то после удаления большого массива строк и проведения манипуляций по "сжатию" (alter fragment on...) свободное пространство из экстента никуда не денется и другим таблицам будет не доступно. Сначала (перед alter fragment) нужно привести в нужному значению (уменьшить) размеры начального и дополнительного экстентов. 3) операция alter fragment транзакционная и для больших таблиц может не хватить объема логических журналов (см. понятие "длинной транзакции"). Эта проблема тоже не раз обсуждалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 16:20 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Петров АндрейКак имея эти данные расчитаь размер таблицы который она отъедает от тейблспейса? В "тейблспейсе" не может быть нескольких таблиц, точнее таблица может занимать один или несколько tablespaces. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2009, 16:26 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
vasilis 1) для "этой же самой таблицы" пространство в экстентах с удаленными строками доступно для вставок все время и без всяких манипуляций; Для этого нужно еще одно условие - статистика по таблице должна быть обновлена хотя бы раз. Если этого не было - свободное пространство повторно не используется - по крайней мере в 9-й версии vasilis2) Если у таблицы при создании установлен большой начальный экстент (и дополнительные экстенты не выделялись, для простоты примера), то после удаления большого массива строк и проведения манипуляций по "сжатию" (alter fragment on...) свободное пространство из экстента никуда не денется и другим таблицам будет не доступно. Сначала (перед alter fragment) нужно привести в нужному значению (уменьшить) размеры начального и дополнительного экстентов. С дополнительным все просто. А как изменить размер начального экстента без пересоздания таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2009, 07:40 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
Leonid Belovvasilis 1) для "этой же самой таблицы" пространство в экстентах с удаленными строками доступно для вставок все время и без всяких манипуляций; Для этого нужно еще одно условие - статистика по таблице должна быть обновлена хотя бы раз. Если этого не было - свободное пространство повторно не используется - по крайней мере в 9-й версии Мне кажется, что вы ошибаетесь. (Хотя рубаху на груди рвать не буду и проверить сейчас не могу :) Если не обновить статистику, то при выполнении запроса оптимизатор просто не будет знать, что большинства строк уже нет, и может принять неверное решение по сканированию всех , даже фактически пустых, страниц таблицы. А вот при вставке новых строк эта статистическая информация, насколько я помню, не нужна и свободные слоты на странице будут использоваться в любом случае (или только для модифицируемых строк ?). Правда, возникает закономерный вопрос - неужели при вставке будут проверяться заголовки всех страниц таблицы в буфере для поиска свободных слотов или будет просто браться свободная страница экстента из битмаповой страницы ? Leonid Belovvasilis2) Если у таблицы при создании установлен большой начальный экстент (и дополнительные экстенты не выделялись, для простоты примера), то после удаления большого массива строк и проведения манипуляций по "сжатию" (alter fragment on...) свободное пространство из экстента никуда не денется и другим таблицам будет не доступно. Сначала (перед alter fragment) нужно привести в нужному значению (уменьшить) размеры начального и дополнительного экстентов. С дополнительным все просто. А как изменить размер начального экстента без пересоздания таблицы? Никак :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2009, 13:30 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
11.50 ALTER TABLE customer MODIFY EXTENT SIZE 32; но смысла особого не вижу, может кто прояснит? Разве что для создания индексов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2009, 15:14 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
zaiets11.50 ALTER TABLE customer MODIFY EXTENT SIZE 32; но смысла особого не вижу, может кто прояснит? Разве что для создания индексов. Неужели наконец сделали? Попробую... Ну а смысл... В условиях высокой активности программистов - дикая фрагментация первого чанка dbspace по умолчанию. Почти все таблицы из 5000 осели там... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2009, 23:00 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
vasilis Мне кажется, что вы ошибаетесь. (Хотя рубаху на груди рвать не буду и проверить сейчас не могу :) Если не обновить статистику, то при выполнении запроса оптимизатор просто не будет знать, что большинства строк уже нет, и может принять неверное решение по сканированию всех , даже фактически пустых, страниц таблицы. А вот при вставке новых строк эта статистическая информация, насколько я помню, не нужна и свободные слоты на странице будут использоваться в любом случае (или только для модифицируемых строк ?). Правда, возникает закономерный вопрос - неужели при вставке будут проверяться заголовки всех страниц таблицы в буфере для поиска свободных слотов или будет просто браться свободная страница экстента из битмаповой страницы ? Сегодня проверил. В 9.40FC6 поведение вроде бы адекватное. В предыдущих версиях у меня с этим были большие проблемы. Пока статистику не обновишь - таблица растет как на дрожжах. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2009, 23:09 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
zaiets11.50 ALTER TABLE customer MODIFY EXTENT SIZE 32; но смысла особого не вижу, может кто прояснит? Разве что для создания индексов. Нашел некий смысл. Компрессия рулит. Кстати, если для таблицы было выделено больше места чем нужно, с помощью "fragment repack shrink" можно освободить неиспользованное место изменив начальный размер экстента, компрессия при этом происходить не будет. жаль на индексы нельзя так натравить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2009, 20:48 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
zaietsКстати, если для таблицы было выделено больше места чем нужно, с помощью "fragment repack shrink" можно освободить неиспользованное место изменив начальный размер экстента, компрессия при этом происходить не будет. Это все с версии 11.5 ? Да, я уже сильно отстал "от жизни" :( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2009, 17:00 |
|
Как по systables расчитать размер таблицы
|
|||
---|---|---|---|
#18+
klepaМесто под таблицу выделяется кусками, которые называется экстентами. Сумма размеров экстентов и даст реальный размер, который имеет таблица. ЗЫ. Информикс не умеет освобождать экстенты. Т.е. если из таблицы удалить все данные, то занимаемое данными место нельзя использовать для другой таблицы. Начиная с 10 версии информикса можно использовать оператор truncate который удалит все данные из таблицы и пустые страницы на диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2009, 12:23 |
|
|
start [/forum/topic.php?fid=44&msg=36154272&tid=1607694]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 459ms |
0 / 0 |