powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как рассчитать extend size?
22 сообщений из 22, страница 1 из 1
Как рассчитать extend size?
    #36361125
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361131
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здавствуйте, уважаемые форумчане! Подскажите, как рассчитать EXTENT SIZE и NEXT SIZE. Работаю с Informix 9.xx на платформе UNIX. Дело в загрузке данных. Имеется сруктура таблица, количесво загружаемых записей. Также в таблице могут быть индексы. Формула, ссылка, объяснение, буду очень признателен
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361142
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это хорошо делать Sentinal Server Studio там есть такая функция .
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361256
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushЗдавствуйте, уважаемые форумчане! Подскажите, как рассчитать EXTENT SIZE и NEXT SIZE. Работаю с Informix 9.xx на платформе UNIX. Дело в загрузке данных. Имеется сруктура таблица, количесво загружаемых записей. Также в таблице могут быть индексы. Формула, ссылка, объяснение, буду очень признателен
А что вам осталось не ясно из предыдущего ответа ?
Опять таки, сильно зависит от интенсивности (частоты) загрузки данных.
Если вам нужно один раз загрузить массив данных и далее он практически не будет меняться - это один вариант. Тут , вроде, все понятно - приблизительно посчитать начальный размер таблицы (есть вопросы ?), увеличить на 10% (или просто накинуть свободное место - т.к. даже 10% для начального размера в 1Гб довольно много и може вообще не понадобится).
Второй вариант - когда таблицу нужно загрузить и затем регулярно добавлять туда большое кол-во данных. Нужно знать частоту, объем данных, и , соответственно, прикинуть размер начального экстента и вторичного.
Третий - когда таблица сильно модифицируема, т.е. данные добавляются и удаляются большими порциями. Тут могут быть разные стратегии - от использования "временных" таблиц, которые чистятся и создаются каждый день (буферные таблицы), до создания нормальных таблиц с продуманной структурой (минимум триггеров, индексов и констрейнтов).
Если начальные данные будете загружать в БД утилитой dbimport, то она может сама создать вам таблицы нужного размера.
Исходя из того, что вы второй раз задаете тот же вопрос, вам что конкретно не понятно ?
Может дадите структуру таблицы и данные, которые я назвал, и мы "на пальцах" поясним приблизительный механизм расчета ?
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361586
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такая задача. 1 раз в месяц происходит перенос данных с одного сервера на другой. Стуктура таблиц не меняется, количество таблиц для переноса каждый раз разное. С EXTEND SIZE для таблиц без индексов я разобрался. Правда не совсем понятно ROWSIZE. Откуда его брать, знаю, но как он получается - не понятно. Вот структура одной таблицы
CREATE TABLE .c1(
cust_code INTEGER NOT NULL,
ab_code INTEGER NOT NULL,
phone INTEGER,
serv_code INTEGER NOT NULL,
zona_code INTEGER NOT NULL,
tel_b DECIMAL(20,0) NOT NULL,
rs_code SMALLINT NOT NULL,
date_usl DATE,
time_usl INTEGER NOT NULL,
prod INTEGER,
koly SMALLINT NOT NULL,
sr INTEGER NOT NULL,
nom_pac SMALLINT,
nom_doc CHAR(2),
nom_oper SMALLINT,
summa INTEGER NOT NULL,
credit INTEGER)
EXTENT SIZE 4462 NEXT SIZE 1118 LOCK MODE ROW;

CREATE INDEX ic1_cust_code ON c1(cust_code, ab_code, date_usl, time_usl);

Rowsize 65
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361623
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KyRo,

Это вещь хорошая, но есть желание автоматизировать весь процесс, путем написания небольшого скрипта. Мне нужен сам механизм рассчета
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361719
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Matiush,

а вы уверены, что вам надо считать?
чем вас значения по умолчанию не устраивают?
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361736
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТанMatiush,

а вы уверены, что вам надо считать?
чем вас значения по умолчанию не устраивают?
+1
Цель непонятна, задача ещё больше... Рассказать где хранится нужная инфо? Или как получить цифирку, необходимую неизвестно для чего? Вот это:

MatiushС EXTEND SIZE для таблиц без индексов я разобрался
С чем Вы разобрались? Как его получить у существующей? Или как его задать, чтобы таблица одним extentom поместилась? Ещё раз: как звучит цель и задача?
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361739
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushВот такая задача. 1 раз в месяц происходит перенос данных с одного сервера на другой. Стуктура таблиц не меняется, количество таблиц для переноса каждый раз разное. С EXTEND SIZE для таблиц без индексов я разобрался.
Вам будет полезно почитать Performance Guide -> Table Performance Considerations ->
Choosing Table Extent Sizes
Estimating Table Size
Estimating Data Pages
Changing Tables to Improve Performance
Reclaiming Unused Space Within an Extent

MatiushПравда не совсем понятно ROWSIZE. Откуда его брать, знаю, но как он получается - не понятно.
Встречный вопрос - а вы знаете сколько байт использует тот или иной тип данных ?
Тот же INTEGER или DECIMAL(20,0) ?
Если нет, то вам прямая дорога к букварям Информикса (можно и другие СУБД).
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361790
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushЭто вещь хорошая, но есть желание автоматизировать весь процесс, путем написания небольшого скрипта. Мне нужен сам механизм рассчета
Какой процесс нужно автоматизировать ? Расчета Extent size ? Зачем ? У вас таблицы заново создаются каждый раз ? Или все таки дополняются переносимыми данными ?
Может и не нужно всего этого ? "Зачем лезть в окно, если дверь открыта ?"

P.S. Почему информацию нужно вытаскивать по крохам ? Кому нужно решение проблемы (если она вообще существует?) ?
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361886
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойТанMatiush,

а вы уверены, что вам надо считать?
чем вас значения по умолчанию не устраивают?
+1
Цель непонятна, задача ещё больше... Рассказать где хранится нужная инфо? Или как получить цифирку, необходимую неизвестно для чего? Вот это:

MatiushС EXTEND SIZE для таблиц без индексов я разобрался
С чем Вы разобрались? Как его получить у существующей? Или как его задать, чтобы таблица одним extentom поместилась? Ещё раз: как звучит цель и задача?

Как получить EXTEND SIZE для таблицы при известном значении rowsize и количестве записей уже пояснил Zaiets, здесь понятно.
Задача. Есть выгруженные данные из таблиц в один файл в формате
1|5|77|7|4
8|8|87|5|87
....
1,5 млн.
Структура таблицы у меня есть, исвестен rowsize и кол. записей. Нужно создать одну таблицу на другом сервере и загрузить в нее эти данные для просчета задачи. Соответсвенно, необходимо получить Extend Size для этой таблицы.
Я получаю Extend size и Next size след. образом rowsize * кол. записей * 1024 и Next size делаю на 10% меньше Extend size.
Цель - правильно рассчитывать Extend size для любых таблиц, как с индексами, так и без них.
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361906
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТанMatiush,

а вы уверены, что вам надо считать?
чем вас значения по умолчанию не устраивают?
Это я приводил структуру уже готовой таблицы, с одним количетством записей. А количество может измениться. Тогда я получаю структуру данной таблицу, удаляю старую с данными, создаю новую и загружаю в нее новые данные. Вот почему мне необходимо посчитать EXTEND SIZE
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361924
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisMatiushЭто вещь хорошая, но есть желание автоматизировать весь процесс, путем написания небольшого скрипта. Мне нужен сам механизм рассчета
Какой процесс нужно автоматизировать ? Расчета Extent size ? Зачем ? У вас таблицы заново создаются каждый раз ? Или все таки дополняются переносимыми данными ?
Может и не нужно всего этого ? "Зачем лезть в окно, если дверь открыта ?"

P.S. Почему информацию нужно вытаскивать по крохам ? Кому нужно решение проблемы (если она вообще существует?) ?
Данные каждый раз новые. Простым delete from table на 5 млн записей очень долго. Количество данных каждый раз разное, данными таблицы не дополняются а записываются по новой. Поэтому легче drop table и создать по новой. Вариант с простым копированием схемы таблицы, из которой был произведен экспорт не подходит
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36361946
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрипт (последовательность действий)
Получаем структуру таблицы, rowsize, количество загружаемых строк 1|54|4|....
Удаляем таблицу
рассчитываем extend size и создаем таблицу
загружаем в нее данные
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36362042
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushСкрипт (последовательность действий)
Получаем структуру таблицы, rowsize, количество загружаемых строк 1|54|4|....
Удаляем таблицу
рассчитываем extend size и создаем таблицу
загружаем в нее данные
Так каких данных вам не хватает ? размер страницы в КБ знаете ? Кличество строк, которое может поместиться на страницу можете определить ? Размер таблицы в КБ (Мб, Гб) можете посчитать ?
Осмелюсь снова повторить Тан, которая очень емко и кратко сформулировала вопрос, но мне кажется, вы его не поняли:
Код: plaintext
1.
2.
а вы уверены, что вам надо считать?
чем вас значения по умолчанию не устраивают?
Поясню еще раз - ваша задача была бы актуальной, если бы вы столкнулись с проблемами при выполнении вашей задачи, например,
- превышено число экстентов, которые добавлялись автоматом,
- или у вас большая нехватка дискового пространства и вам крайне нужно очень точно рассчитывать размер таблиц, т.к. даже 2 лишних гига негде взять
- время загрузки очень критично и вы поисследовали, что время выделения новых экстентов критично по времени (утрирую :)
Вы вообще в курсе. что в Информикс прекрасно работает механизм добавления экстентов ?
Причем он многоуровневый, с одной стороны каждый 16-й экстент удваивается, с другой - подряд расположенные экстенты объединяются (а в вашем случае с отдельным сервером, на котором только загрузка данных это так и будет), с третьей - если нужного размера не будет, то выделится максимально доступный по размеру и т.д. В крайнем случае можно при создании таблицы выделять сразу здоровые куски с запасом (но только для больших таблиц) и не морочить себе голову - если и не хватит начального экстента, то сервер добавит.
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36362104
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushНужно создать одну таблицу на другом сервере и загрузить в нее эти данные для просчета задачи. Соответсвенно , необходимо получить Extend Size для этой таблицы...
Цель - правильно рассчитывать Extend size для любых таблиц, как с индексами, так и без них.

Matiush, не сочтите за сарказм... Расскажите (себе, если не убедите себя - можете нам :), почему "Extend Size" необходимо получить. Либо Вы не догадываетесь, что extent size можно не указывать, либо Вы уже так пробовали и, как сказал уже vasilis, упёрлись в какую-то проблему (тогда давайте её нам - нам это интересно :). С третьим вариантом, а-ля "мне это всё просто интересно " тут помогут только RTFM'ом - документация пестрит ключевыми словами и ссылки на неё vasilis уже давал.

П.С.: И прекратите exten t обзывать exten d 'ом - очень мешает в документации поиск устраивать, а кроме нас и гугла - поправить Вас некому. :)
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36367401
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ко всему выше сказанному. Значения по умолчанию это хорошо. Спасибо за объяснения всем. Может быть эта информация окажется полезной для новичков.

Взято здесь http://www.ibm.com/developerworks/data/library/techarticle/dm-0501fan/index.html

Let's now assume this table has a single index on order_num and a composite index on stock_num and manu_code. This table will initially have 20,000 rows and will increase to 35,000 rows in a few months.

Column Data type Length in bytes*
Item_num smallint 2
Order_num integer 4
Stock_num smallint 2
Manu_code char(3) 3
Quantity smallint 2
Total_price money(8) 5



step description calculation (in bytes)

1 Determine each index length index on order_num = 4+9 = 13
index on stock_num and manu_code = 2+3+9 = 14
2 Determine total index length 13 + 14 = 27
3 Account for index overhead 27 * 1.25 = 33.75
4 Determine initial table size 20,000 rows
5 Total index space needed 20,000 * 33.75 = 675,000
6 Convert index space to kilobytes 67,5000/1,024 = 660 (Kbytes)
7 Determine page length in bytes
subtract 28 for page overheads 2,048 minus 28 = 2,020
8 Determine row length 2 + 4 + 2 + 3 + 2 + 5 + 4 = 22
9 Determine how many whole rows per page 2020/22 = 91
10 Determine the number of data pages
for the initial table 20,000/91 = 220
11 Total space needed for data 220 * 2,048 = 450,560
12 Convert data size to kilobytes 450,560/1,024 = 440
13 Determine size of the initial extent 440 + 660 = 1,100
14 Determine table growth 35,000 more rows
15 Estimate next extent size Index space needed = 35,000 * 33.75 = 1,181,250

Convert to Kbytes = 1,181,250/1024 = 1,154
Additional data pages needed = 35,000/91 = 385
Convert to bytes = 385 * 2,048 = 788,480
Convert to Kbytes = 788,480/1,024 = 770
Total space needed = 770 + 1,154 = 1,924

Здесь хочу спросить. Вот что мне показал Гугл по поводу размера данных, в зависимости от их типа:
РАЗМЕРЫ ВЕЛИЧИН
Числовые значения TINYINT 1 байт
SMALLINT 2 байта
MEDIUMINT 3 байта
INT 4 байта
INTEGER 4 байта
BIGINT 8 байтов
FLOAT(X) 4 если X <= 24 или 8 если 25 <= X <= 53
FLOAT 4 байта
DOUBLE 8 байтов
DOUBLE PRECISION 8 байтов
REAL 8 байтов
DECIMAL(M,D) M байтов (D+2, если M < D)
NUMERIC(M,D) M байтов (D+2, если M < D)
Типы ДАТА и ВРЕМЯ
DATE 3 байта
DATETIME 8 байт
TIMESTAMP 4 байта
TIME 3 байта
YEAR 1 байт
Строковые типы CHAR(M) M байт, 1 <= M <= 255 VARCHAR(M) L+1 байт, когда L <= M или 1 <= M <= 255 TINYBLOB, TINYTEXT L+1 байт, когда L < 2^8
BLOB, TEXT L+2 байт, когда L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 байт, когда L < 2^24
LONGBLOB, LONGTEXT L+4 байт, когдя L < 2^32 ENUM('зн1','зн2',...) 1 или 2 байта, зависит от количества значений (65535 значений максимум) SET('зн1','зн2',...) 1, 2, 3, 4 или 8 байт, зависит от количества значений (64 значения максимум)

Верить можно?
Да, extenT size :))
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36367681
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MatiushМожет быть эта информация окажется полезной для новичков.
Может быть... только новички, обычно, не умеют пользоваться поиском на форуме и не читают FAQ-и и документацию, поэтому снова спросят то же самое :)
MatiushВзято здесь http://www.ibm.com/developerworks/data/library/techarticle/dm-0501fan/index.html
Для того, чтобы ссылка стала активной просто добавьте впереди //
Matiush Здесь хочу спросить. Вот что мне показал Гугл по поводу размера данных
Однажды мой сын высказался на тему знаний примерно следующим образом - "Зачем учиться и запоминать - все что мне нужно я найду в Гугле" (современная молодежь, выросшая в Инете :)
Вот только он никак не соглашается, что:
- в инете еще не всЁ есть и доступ к нему не всегда существует
- нужно хорошо знать, что именно ты ищешь (и как это искать)
- гугль не учит думать и не может думать за кого-то :)
- вовсе не обязательно гуглить, если есть прямые и точные источники информации

P.S. Я не против Гугля, только радуюсь, когда люди там ищут (некоторые и этого не умеют). Плохо, когда Гугль замещает все остальные способы получения информации.
MatiushВерить можно?
Смотря чему. Нельзя верить, если рассматривать в контексте Информикса и данного топика.
Вы уверены, что все перечисленные типы данных относятся к Информикс (поддерживаются им) ?
А ведь в документации, которую и искать то не надо, вся необходимая информация есть.
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36368109
Чемберлен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Matiush,

Про типы данных и их размеры вас Google информировал, похоже, на примере MySQL. В Informix кое-что явно отличается. DATE, например. Кое-что отсутствует в вашем списке, а чего-то из списка в Informix отродясь не бывало и не будет, вероятно.
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36369874
Matiush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
Насчет типов данных верить не стоит. Прочел из документации, сколько байт занимает определенный тип данных. По этому понял как получается rowsize (сумма байт всех полей).
И еще вопрос для подстраховки.
По умолчанию размер extenta начального задается в 16кб, следующего также 16кб.
По выше приведенной формуле я попробовал считать extent size и сравнивать полученные значения с результатами рассчетов в server studio и результатами самодельной программы (как она считает, не ясно, спросить негде). Если я буду делать таблицы с размерами, полученными в результате моих вычислений, не случится ничего страшного?
Если прочесть ответы выше, то informix сам исправит extent size и next size в случае необходимости?
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36370031
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Matiushvasilis,
Насчет типов данных верить не стоит. Прочел из документации, сколько байт занимает определенный тип данных. По этому понял как получается rowsize (сумма байт всех полей).
Уже хорошо. Значит еще есть надежда :)
MatiushЕсли прочесть ответы выше, то informix сам исправит extent size и next size в случае необходимости?
А вы еще раз перечитайте внимательно все ответы выше и, особенно, мои ссылки на разделы документации, где вы и должны найти ответ
...
Рейтинг: 0 / 0
Как рассчитать extend size?
    #36370109
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Matiush
Если я буду делать таблицы с размерами, полученными в результате моих вычислений, не случится ничего страшного?
Если прочесть ответы выше, то informix сам исправит extent size и next size в случае необходимости?
Информикс эти числа, "закреплённые" за таблицей, не исправляет. Он просто руководствуется при выделении экстентов не всегда только этими цифрами.

Если вы их ВААЩЕ не будете указывать - почти гарантировано, что у вас не возникнут проблемы.
Если очень хочется указать - можно взять достаточно приблизительные цифры - даже если вы ошибётесь на порядок - ничего суперстрашного не случится (имхо: я же не знаю, за что у вас к стенке ставят :). Если вы их всё же укажете, возможны (но не обязательны!) три проблемы:
1. Вы можете их указать не в соответствии с требованиями информикса - слишком маленькими или недостаточно круглыми - получите ошибку, таблица не создатся.
2. Вы можете их указать слишком большими - и сервер не найдёт достаточно места для выделения такого экстента - о чём опять-таки вам сообщит.
3. Вы можете их указать слишком большими и сервер таки найдёт место - но экстент будет стоять полупустым, возможно отнимая жизнённое пространство у более "важных" табличек...

Matiush, таки RTFM:

Первое, на что нужно было посмотреть при возникновении вопросов по Extents:

Administering -> System Administration -> Performance Guide -> Table Performance Considerations -> Managing Extents

По мере возникновения вопросов к понятиям, "проваливаться" на чуть более простые понятия:

Administering ->System Administration -> Administrator's Reference -> Configuring and Monitoring Dynamic Server -> Disk Structures and Storage ->Dbspace Structure and Storage ->Structure and Allocation of an Extent -> Extent Structure


Administering -> System Administration -> Administrator's Guide -> Disk, Memory, and Process Management -> Data Storage -> Extents


Administering -> System Administration -> Performance Guide ->Table Performance Considerations -> Estimating Table Size


П.С.: Ссылки на доку по 11.50 - это не страшно :). В конце-концов, по доке на 9-ку мне просто лениво это делать... :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как рассчитать extend size?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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