Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Unique constraint + index / 25 сообщений из 55, страница 1 из 3
20.03.2012, 11:46:37
    #37713084
collow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
Задался вот каким вопросом. Зачем unique constraint на таблице требует обязательного наличия индекса, уникального или нет, по всем полям, входящим в уникальный ключ?
Сама вариативность уникальный/неуникальный индекс наводит на мысль, что индекс как таковой используется только для быстрого поиска строк для блокировки.
У меня периодически возникает желание сделать уникальный ключ по индексу, включающему в себя только часть полей. Например, ключ состоит из колонок a1 .. a6, причем a1,a2 дает селективность в ~ 10 строк. Индекс по ним будет размером куда меньше, нежели индекс по всем 6 полям, а для цели отобрать и заблокировать до окончания транзакции строки его вполне достаточно.
...
Рейтинг: 0 / 0
20.03.2012, 11:49:01
    #37713091
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
collow,
стоит почитать документацию и прекратить хотеть странного...
зы. на луну не хочется слетать за пол часика? с среднесветовой скоростью это дело пяти минут....)
...
Рейтинг: 0 / 0
20.03.2012, 12:43:16
    #37713253
collow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
Документацию в плане как есть? Я это знаю. Документацию в плане почему так? Вот это не встречал. Дайте ссылку, если не затруднит?
...
Рейтинг: 0 / 0
20.03.2012, 13:21:21
    #37713351
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
collow,
в "документации как есть" - объясняется почему "именно так".
"уникальный ключ по индексу ... селективность в ~ 10 строк" - это "бред сивой кобылы"(или "мерина")
...
Рейтинг: 0 / 0
20.03.2012, 13:32:34
    #37713376
collow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
Ссылки тем не менее не последовало.
Поясните, что именно считаете бредом и почему?
...
Рейтинг: 0 / 0
20.03.2012, 14:07:56
    #37713469
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
collow,
я Вам ничем не обязан) учись искать информацию.
...
Рейтинг: 0 / 0
20.03.2012, 17:09:49
    #37713966
collow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique constraint + index
Ага, уже теплее, но все равно не то. Я и не искал, признаться, причину во внутреннем строении блока.
Новым для меня была блокировка блока уникального индекса, а не строки таблицы, если это действительно так. Надо проверить. Потому что из этого будет следовать, что если используется под уникальным констрейнтом неуникальный индекс, то будут блокироваться все строки, попадающие в блок. Ну, может путано написал.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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