powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Unique constraint + index
25 сообщений из 55, страница 1 из 3
Unique constraint + index
    #37713084
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задался вот каким вопросом. Зачем unique constraint на таблице требует обязательного наличия индекса, уникального или нет, по всем полям, входящим в уникальный ключ?
Сама вариативность уникальный/неуникальный индекс наводит на мысль, что индекс как таковой используется только для быстрого поиска строк для блокировки.
У меня периодически возникает желание сделать уникальный ключ по индексу, включающему в себя только часть полей. Например, ключ состоит из колонок a1 .. a6, причем a1,a2 дает селективность в ~ 10 строк. Индекс по ним будет размером куда меньше, нежели индекс по всем 6 полям, а для цели отобрать и заблокировать до окончания транзакции строки его вполне достаточно.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713091
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
collow,
стоит почитать документацию и прекратить хотеть странного...
зы. на луну не хочется слетать за пол часика? с среднесветовой скоростью это дело пяти минут....)
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713253
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документацию в плане как есть? Я это знаю. Документацию в плане почему так? Вот это не встречал. Дайте ссылку, если не затруднит?
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713351
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
collow,
в "документации как есть" - объясняется почему "именно так".
"уникальный ключ по индексу ... селективность в ~ 10 строк" - это "бред сивой кобылы"(или "мерина")
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713376
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылки тем не менее не последовало.
Поясните, что именно считаете бредом и почему?
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713469
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
collow,
я Вам ничем не обязан) учись искать информацию.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713966
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, уже теплее, но все равно не то. Я и не искал, признаться, причину во внутреннем строении блока.
Новым для меня была блокировка блока уникального индекса, а не строки таблицы, если это действительно так. Надо проверить. Потому что из этого будет следовать, что если используется под уникальным констрейнтом неуникальный индекс, то будут блокироваться все строки, попадающие в блок. Ну, может путано написал.

Но тем не менее, из ссылки не вытекает ничего, что объяснило бы, зачем индексу все поля ключа.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37713982
индукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
collowЗадался вот каким вопросом. Зачем unique constraint на таблице требует обязательного наличия индекса, уникального или нет, по всем полям, входящим в уникальный ключ?


А как можно обеспечить целостность по-другому, не через индекс?
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714004
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индуксА как можно обеспечить целостность по-другому, не через индекс?для операции удаления можно уникальность и без индекса обеспечить.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714008
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, для обеспечения целостности на внешних ключах без индекса производится блокировка всей таблицы.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714010
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индукс,

на уравне процедур и триггеров.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714036
индукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
collowНапример, для обеспечения целостности на внешних ключах без индекса производится блокировка всей таблицы.

Причём тут внешний ключ.

Исходная ситуация: таблица table1, должна быть уникальность ключа по полю field1.
Индекса по полю field1 нет.

Вопрос: как обеспечить уникальность при insert, update?
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714041
индукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ukkuиндукс,

на уравне процедур и триггеров.

каких процедур, каких тригерров?
Как понять, что данного значения в столбце нет, если не по индексу - только фулскан.
Вы будете на каждый insert, update делать фулскан?
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714057
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индукс,
То что это плохо другой вопрос, вопрос был КАК кроме индекса - да и индекс будет на два поля, так что уже врятли фулл скан. ТС то хоть как скорее всего фигней страдает.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714074
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внешний ключ как пример того, что может выполняться лок + фуллскан. И заявление типа "это плохо" - не катит, потому что бывают разные ситуации.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714080
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто хочу прояснить для себя, почему логика именно такова. Чисто академический интерес, не более.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714090
индукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
collowВнешний ключ как пример того, что может выполняться лок + фуллскан. И заявление типа "это плохо" - не катит, потому что бывают разные ситуации.

Это не плохо - это очень плохо.
1) Интенсивное использование FTS - это buffer busy wait, cache buffer chains - это ожидания на которых вы будете просто висеть и ничего полезного не делать

2) Блокировка всей таблицы при работе внешнего ключа, без наличия индекса - как следствие массовые deadlock ora-060

Если вы не понимаете, как работает Oracle, вам рано делать выводы о необходимости того или иного.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714152
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если эта таблица модифицируется только одной сессией в принципе, то все блокировки меня мало волнуют. Индексы на чтение далеко не всегда совпадают с индексами на модификацию для устранения фуллсканов. Ну и т.д. Ситуации бывают, когда полный лок таблицы не есть плохо. И не надо тут рассказывать свое понимание того, как базе работать будет лучше.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714158
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индуксukkuиндукс,

на уравне процедур и триггеров.

каких процедур, каких тригерров?
Как понять, что данного значения в столбце нет, если не по индексу - только фулскан.
Вы будете на каждый insert, update делать фулскан?
гыгы. это - чистая очевидность (в том числе - даже и безотносительно сабжа )
на самом деле - возможны варианты. индекс может быть, но не уникальный да и не полный по составу полей ключа.
партишенинг тоже добавляет вариантов реализации. можно (если таки нужно) ключ строить не над самой таблицей, а над коммиттошным матвью над ней.. на крайняк - и на вопрос
авторВы будете на каждый insert, update делать фулскан?
ответ не однозначный (т.е. в зависимости от расклада - может быть и "да" )
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714170
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про матвью знаю вариант, фактически, это поддерживаемый системой процедурный способ обеспечения уникальности. Но не всегда их можно применить, к сожалению, на fast refresh.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714174
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
collow, вы память на индекс жалете, какая вам мат. вьюха)
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714175
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так я его и не использую :)
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714191
индукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
collowЕсли эта таблица модифицируется только одной сессией в принципе, то все блокировки меня мало волнуют. Индексы на чтение далеко не всегда совпадают с индексами на модификацию для устранения фуллсканов. Ну и т.д. Ситуации бывают, когда полный лок таблицы не есть плохо. И не надо тут рассказывать свое понимание того, как базе работать будет лучше.

Это не моё понимание. Так работает Oracle.
Но в чём вы правы, в том, что даже будучи очень зелёным админом, много лет назад, не сталкивался с такой ситуацией, гениальной как у вас - "таблица модифицируется одной сессий".
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714210
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индукс,
значит мало систем видели) представте себе систему где все глобальные настройки APP сервера хранятся в 1 таблице. и только суперадмин, который 1. может в эксклюзивном режиме ее изменять))

collow
прошу пояснить фразу "индекс на модификацию для устранения фуллсканов" - это что за зверь?
вообще из всех словоизлияний, понял только то, что Вы сами не знаете чего хотите. и чётко вопрос сформулировать не можете... от этого все проблемы.
...
Рейтинг: 0 / 0
Unique constraint + index
    #37714244
collow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индекс на модификацию - имел ввиду что модифицировать обычно надо по первичному ключу, а читать - по другим ключам. Например, если есть суррогатный первичный и уникальный естественный. То есть выборка строк для модификации использует обычно не те индексы, которые использует выборка для построения отчета.

Хочу я сформулировал по-моему четко: понять, почему принципиально нельзя подсунуть "частичный индекс" под уникальный ключ, чем собственно он принципиально отличается от неуникального индекса.
И попутно еще родился вопрос - а зачем собственно есть возможность использовать неуникальный индекс? В каких случаях это может быть востребовано, за исключением очевидных "был старый неуникальный индекс, логика поменялась, навесили констрейнт, и не хотим делать новый/пересоздавать старый индекс.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Unique constraint + index
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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