powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Примеры необходимости использования reverse index?
16 сообщений из 16, страница 1 из 1
Примеры необходимости использования reverse index?
    #32164242
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы узнать мнения.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164264
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну дык, RTFM!


в доке написано для чего он задумывался
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164434
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новостной сайт, 10 последних новостей на главной странице.

select /*+ ALL_ROWS INDEX_DESC(NEWS_TABLE NEWS_TABLE_INDEX1) */ * FROM NEWS_TABLE WHERE NEWSID>0 AND ROWNUM<=10

Чем не пример?
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164435
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или это не реверс (лень глядеть в доки).
Я имею ввидe индекс созданный как:
CREATE INDEX MY_INDEX ON TABLE MY_TABLE
(
MY_COLUMN DESC
);

??????

( в свете этого при включенной стоимостной оптимизации можно выводить последние записи вообще без хинта ).
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164503
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас использовали сложный индекс, где одно поле в середине было описано с DESC. Но после того, как эта конструкция стала валиться на 8.1.6, сие благополучно прибили и нашли workaround...
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164506
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Или это не реверс (лень глядеть в доки).
Я имею ввидe индекс созданный как:
CREATE INDEX MY_INDEX ON TABLE MY_TABLE
(
MY_COLUMN DESC
"

Да, ты прав - это не реверс.

Как я не люблю, когда вместо того что-бы получать ответы на свой вопрос, ноборот обьяснять что это такое :(

Значит так, reverse - это когда значение ключа записывается наоборот:
Допустим в таблице emp есть столбец empno:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> select empno from emp;

     EMPNO
 ----------
 
       7369 
       7499 
       7521 
       7566 
 4  rows selected.


Команда создания реверсионного индекса будет такой
create index emp_i1 on emp (empno) reverse;
Код: plaintext
1.
2.
3.
SQL> create index emp_i1 on emp (empno) reverse;

Index created.


При этом значения столбца empno будут в самом индексе записаны в обратном порядке:
Код: plaintext
1.
2.
3.
4.
 1257 
 6657 
 9637 
 9947 


Вобщем я понял так, на практике это никто не использует.
Всё понятно. Вычёркиваем.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164610
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В связи с этим хотелось бы задать попутный вопрос. Читала что reverse indexes в основном используются в Oracle Parallel Server. Там то с какой целью? Хотелось бы пример или объяснение.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164617
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, препод на курсах объяснял, что reverse используется для лучшего формирования индекса при вставке последовательных значений: типа 1, 2, 3, ..., 11, 12, ...
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164625
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно, еще раз расскажу доку.

Если ключи монотонно возрастают, то велика вероятность, что вставляемые строки попадут в один и тот же блок. Индекс с реверсированным ключом нужен для того, чтобы уменьшить борьбу за заголовок блока индекса при вставках, поскольку вероятность попадания ключей 321 и 421 в один и тот же блок меньше, чем ключей 123 и 124.

Недостатком такого индекса является его использование только на равенство, диапазонные поиски просто не работают.

Использовать или не использовать такой индекс - решать разработчикам и администратору вместе.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164627
Gluk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Тома Кайта, написано, что REVERSE INDEX используются в OPS с целью снятия конкуренции за последний листовой блок индекса, что существенно влияет на производительность, т.к. наполняет индекс более равномерно. Плохо то, что не работают запросы по диапазонам. Хотя в некоторых случаях по составным REVERSE индексам могут и работать (там же).

Извините, что своими словами, лень книжку открывать
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164631
Roman_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В книжках в общем-то написано для чего он может быть нужен... Механизм уже обьяснил softbuilder@inbox.ru, а смысл таков - устранить ожидания доступа к листьевому блоку индекса при одновременной вставке многими сессиями записей в узкий диапазон (т.е. в один блок). Устраняется это тем, что в результате перестановки байт в ключевом выражении записи индекса "псевдослучайно" попадают в разные блоки. Отсюда и упоминание по параллельный сервер (на нем обычно работает много сессий).

Недостаток - не работает сканирование по диапазону rowid.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164632
Gluk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, не успел.

Искусственный Интеллект справился быстрее :)
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164634
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню из прошлого, что числа вообще говоря когда хранятся в памяти и вообще - записываются обратным способом, а точнее меняются младшие и старшие байты местами. Может как-то с этим связано.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164649
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нефига себе как быстро ответов набросали :)

"чтобы уменьшить борьбу за заголовок блока индекса при вставках"

Теперь смысл стал понятен. Но есть вопрос - а если INITRANS установить достаточно высоким для обычного монотонного индекса - я так понимаю, это может быть решением для уменьшения конкуренции? И если так то уж лучше иметь возможность поиска по диапазону, затрачивая больше на место для транзакционных слотов, чем reverse индекс с его ограничениями.

Или я не прав?
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164669
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый слот в транзакционной таблице блока занимает 23 (или 24 - не помню точно) байта. Поэтому устанавливая initrans более, чем в 5, вы отъедаете заметную часть блока. Можно, конечно, использовать индексы в разделах с небольшим размером блока, но это в 9.

Поэтому я и написал, что использование таких индексов решают разработчики вместе с администратором. Редкий, кстати, случай, когда нормальным разработчикам требуется консультация админа.
...
Рейтинг: 0 / 0
Примеры необходимости использования reverse index?
    #32164684
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Al:
Ну вобщем я понял - это на рассмотрение заинтересованных лиц.

А если лично для меня - я бы всё-же использовал нереверсионный индекс.
Мне всё-же часто бывает нужно строить запрос по диапазону.
Размер блока 8Kb. Пусть 10 транзакций x 24 bytes = 240 bytes.
Это нормально, мне кажется.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Примеры необходимости использования reverse index?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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