powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка в индексно-организованную таблицу (IOT)
25 сообщений из 28, страница 1 из 2
Вставка в индексно-организованную таблицу (IOT)
    #39728231
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, возникло недоумение от чего вставка в IOT происходит так быстро:
Есть IOT таблица:

Create table Abc (
id number,
pad char(1000),
constraint pk_abc primary key (id)
) organization index

Вставляю 10 миллионов с разряженным ID


for i in 1 .. 10000000 loop
insert into Abc (id, pad ) values (i * 1000000, [1000 байт строка]);
end loop;

Далее, если выполнить вставку миллиона строк(такого же размера ~1кб) в центр, где нибудь между id 5000000000001..5000001000000 операция отрабатывает ровно за то же время, как если бы это была обычная heap таблица с первичным ключом по id.

Как это можно объяснить? Ведь вроде, после того, как будет переполнен листовой блок индекса(в которые новые записи должны попасть), ораклу придётся подвинуть все последующий листовые блоки на нужное пространство, что очень трудоёмко, учитывая что там хранится не rowid, а строка в 1 КБ!!.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728238
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoabораклу придётся подвинуть все последующий листовые блоки на нужное пространство
Видимо те, кто проектировал индексные структуры oracle, об этой необходимости не знали...
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728259
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IOT rows are accessed via logical rowid and not a physical rowid like in heap-organized tables.

SY.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728277
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Не пойму, как это объясняет то, что я описал в топике

SYIOT rows are accessed via logical rowid and not a physical rowid like in heap-organized tables.

SY.

Мне всегда казалось, что здесь имеется ввиду доступ к строке IOT по логическому rowid,который доступен через вторичный индекс
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728632
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YoabВедь вроде
YoabМне всегда казалось
Возможно, имеет смысл попробовать заменить суеверия знанием - к примеру, почитать что-нибудь из проф. литературы?
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728665
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousYoabВедь вроде
YoabМне всегда казалось
Возможно, имеет смысл попробовать заменить суеверия знанием - к примеру, почитать что-нибудь из проф. литературы?
Что посоветуешь?
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728716
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YoabЧто посоветуешь?
IMHO начать можно с классики

https://www.ozon.ru/context/detail/id/2527036/
Кнут. Искусство программирования. Том 3. Сортировка и поиск

т.к. фраза
подвинуть все последующий листовые блоки на нужное пространство

вызывает легкое недоумение
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728872
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevYoabЧто посоветуешь?
IMHO начать можно с классики
https://www.ozon.ru/context/detail/id/2527036/
Кнут. Искусство программирования. Том 3. Сортировка и поиск

Я прекрасно понимаю, как происходят операции вставки/модификации/удаления листов на бинарном дереве. Тут вопрос не алгоритмический, а технический. Вопрос заключался в том, как физически распределяются листовые узлы индекса по единицам.данных Oracle(экстенты,сегменты итд).? Они идут вплотную друг за другом? Или быть может содержат указатели, друг на друга, аля двухсвязный список, а на самом деле физически могут находится в совершенно разных местах. Вот в чём вопрос был, а вы тут книжками по алгоритмам раскидались....
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728902
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YoabВот в чём вопрос был, а вы тут книжками по алгоритмам раскидались....
Упорный однако...
https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT1190
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728913
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousYoabВот в чём вопрос был, а вы тут книжками по алгоритмам раскидались....
https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT1190
If a row overflow area is specified...
Ты не позорился бы...

Давайте, ещё чуть чуть и мы вместе узнаем как же в Оракле организовано хранения индекс
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728916
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoabandrey_anonymousпропущено...
https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT1190
If a row overflow area is specified...
Ты не позорился бы...
Юноша, Вы не пробовали ЧИТАТЬ документацию?
Не одну строчку, а чуть шире.
Хинт:
Попробуйте почитать чуть выше от ссылки или просто посмотреть в оглавление...
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728918
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousYoabпропущено...

If a row overflow area is specified...
Ты не позорился бы...
Юноша, Вы не пробовали ЧИТАТЬ документацию?
Не одну строчку, а чуть шире.
Хинт:
Попробуйте почитать чуть выше от ссылки или просто посмотреть в оглавление...
Дилетант проклятый.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728919
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoabandrey_anonymousпропущено...
Юноша, Вы не пробовали ЧИТАТЬ документацию?

Дилетант проклятый.
Я так и понял.
Но это поправимо - читайте, изучайте и все получится.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728922
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousYoabпропущено...

Дилетант проклятый.
Я так и понял.
Но это поправимо - читайте, изучайте и все получится.
Я тебя дилетантом назвал не просто так - ты не понимаешь в чём заключается мой вопрос и поэтому кидаешь ссылку с концептуальным описанием, в которой нет нужной инфы
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728942
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoabты не понимаешь в чём заключается мой вопросты не понимаешь интуитивно очевидных вещей и поэтому не отлистал на главу взад, где описание индексов.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728948
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoab,

Да оставьте вы в покое этих дилетантов, вот у меня с пониманием вопроса проблема ...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQL>
SQL> create table abc (
  2  id number,
  3  pad char(1000),
  4  constraint pk_abc primary key (id)
  5  ) organization index;

Table created.

SQL>
SQL> create table mnp (
  2  id number,
  3  pad char(1000),
  4  constraint pk_mnp primary key (id)
  5  );

Table created.

SQL>
SQL> create table xyz (
  2  id number,
  3  pad char(1000)
  4  );

Table created.

SQL>
SQL> set timing on
SQL>
SQL> begin
  2  for i in 1 .. 1000000 loop
  3  insert into abc (id, pad ) values (i * 1000000, lpad('X',1000,'X'));
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

Elapsed: 00:01:40.61
SQL>
SQL> begin
  2  for i in 1 .. 1000000 loop
  3  insert into mnp (id, pad ) values (i * 1000000, lpad('X',1000,'X'));
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:50.70
SQL>
SQL> begin
  2  for i in 1 .. 1000000 loop
  3  insert into xyz (id, pad ) values (i * 1000000, lpad('X',1000,'X'));
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:32.55



Или эффект проявляется только при 10 лимонах вставок?

Regards

Maxim
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728952
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Demenko,

Перечитал не по диагонали, дошло

Regards

Maxim
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39728955
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Yoabты не понимаешь в чём заключается мой вопросты не понимаешь интуитивно очевидных вещей и поэтому не отлистал на главу взад, где описание индексов.
Вообще по ссылке для IOT тоже вполне вменяемо расписано, с картинками.
Но чтобы понять - надо знать что есть блок, экстент, сегмент... а про это в другой части концептов, на которую ссылок ТС не дали :)
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729019
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тебя дилетантом назвал не просто такСутки бана - это ни о чём для таких самовлюблённых перцев.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729399
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim DemenkoДа оставьте вы в покое этих дилетантов, вот у меня с пониманием вопроса проблема ...
+
Или эффект проявляется только при 10 лимонах вставок?

Подтверждаю.

На практике нарывался на подобное. Сделал табличку IOT (маленькую, не 10 миллионов) - получил жуткие тормоза Тормоза были жуткие, т.е. разница была не 2 раза, как у Вас намерялось, а визуально на порядки.

Не парился, вместо IOT сделать обычную таблицу + индекс по всем колонкам - стало работать намного быстрее. Т.к. индекс по всем колонкам, SELECT'ы работали чисто по индексу.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729722
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНе парился, вместоЗвучит как "у меня в подвале стук".
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729883
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В исходном сообщение, на которое отвечал, простейший тест и результаты замеров времени.

У меня на 11 (точной цифры не помню), было примерно так же. Замечательно работали select'ы, но совершенно жуткое время insert'ов. С причинами не разбирался.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729902
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicLeonid KudryavtsevНе парился, вместоЗвучит как "у меня в подвале стук".
попытался воспроизвести на текущем сервере
11.2.0.3 64 бит Linux
эффект не воспроизвелся

но когда на такое нарвался, у нас еще и админы были "алтернативно одаренные", т.ч. удивился, посчитал багой и разбираться не стал

т.ч. можно считать, что ситуация в подвале нормализовалась ))) стуков нет ))) но зуб даю, что было )))

Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит ( С )
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729935
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку в индексный блок iot помещается меньше записей, blevel растет быстрее, и приходится больше читать при поиске нового места. Но основное, чаще приходится добавлять листовой блок, что влечет резкое увеличение количества изменяемых блоков.
...
Рейтинг: 0 / 0
Вставка в индексно-организованную таблицу (IOT)
    #39729944
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Поскольку в индексный блок iot помещается меньше записей, blevel растет быстрее, и приходится больше читать при поиске нового места.Это лучше озвучить в цифрах
Например, на индексе из одного поля на миллиард записей blevel вряд ли будет больше 4
Для IOT с фиксированной частью около 100 байт (остальное в OVERFLOW) для того же миллиарда строк прогнозирую blevel не больше 6 -2-Но основное, чаще приходится добавлять листовой блок, что влечет резкое увеличение количества изменяемых блоков.Ну да, прямо начинаем перестраивать/балансировать дерево, ога
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка в индексно-организованную таблицу (IOT)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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