Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка в индексно-организованную таблицу (IOT) / 25 сообщений из 28, страница 1 из 2
05.11.2018, 20:28
    #39728231
Yoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в индексно-организованную таблицу (IOT)
Добрый день, возникло недоумение от чего вставка в 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
05.11.2018, 21:03
    #39728238
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в индексно-организованную таблицу (IOT)
Yoabораклу придётся подвинуть все последующий листовые блоки на нужное пространство
Видимо те, кто проектировал индексные структуры oracle, об этой необходимости не знали...
...
Рейтинг: 0 / 0
05.11.2018, 22:09
    #39728259
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в индексно-организованную таблицу (IOT)
IOT rows are accessed via logical rowid and not a physical rowid like in heap-organized tables.

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

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

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

SY.

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

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

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

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

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

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

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

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

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

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

Regards

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

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

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

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

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

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

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

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


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