|
|
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Задался вот каким вопросом. Зачем unique constraint на таблице требует обязательного наличия индекса, уникального или нет, по всем полям, входящим в уникальный ключ? Сама вариативность уникальный/неуникальный индекс наводит на мысль, что индекс как таковой используется только для быстрого поиска строк для блокировки. У меня периодически возникает желание сделать уникальный ключ по индексу, включающему в себя только часть полей. Например, ключ состоит из колонок a1 .. a6, причем a1,a2 дает селективность в ~ 10 строк. Индекс по ним будет размером куда меньше, нежели индекс по всем 6 полям, а для цели отобрать и заблокировать до окончания транзакции строки его вполне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 11:46:37 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collow, стоит почитать документацию и прекратить хотеть странного... зы. на луну не хочется слетать за пол часика? с среднесветовой скоростью это дело пяти минут....) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 11:49:01 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Документацию в плане как есть? Я это знаю. Документацию в плане почему так? Вот это не встречал. Дайте ссылку, если не затруднит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 12:43:16 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collow, в "документации как есть" - объясняется почему "именно так". "уникальный ключ по индексу ... селективность в ~ 10 строк" - это "бред сивой кобылы"(или "мерина") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 13:21:21 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Ссылки тем не менее не последовало. Поясните, что именно считаете бредом и почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 13:32:34 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collow, я Вам ничем не обязан) учись искать информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 14:07:56 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Ага, уже теплее, но все равно не то. Я и не искал, признаться, причину во внутреннем строении блока. Новым для меня была блокировка блока уникального индекса, а не строки таблицы, если это действительно так. Надо проверить. Потому что из этого будет следовать, что если используется под уникальным констрейнтом неуникальный индекс, то будут блокироваться все строки, попадающие в блок. Ну, может путано написал. Но тем не менее, из ссылки не вытекает ничего, что объяснило бы, зачем индексу все поля ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:09:49 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collowЗадался вот каким вопросом. Зачем unique constraint на таблице требует обязательного наличия индекса, уникального или нет, по всем полям, входящим в уникальный ключ? А как можно обеспечить целостность по-другому, не через индекс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:14:28 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
индуксА как можно обеспечить целостность по-другому, не через индекс?для операции удаления можно уникальность и без индекса обеспечить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:20:25 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Например, для обеспечения целостности на внешних ключах без индекса производится блокировка всей таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:21:30 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
индукс, на уравне процедур и триггеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:21:59 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collowНапример, для обеспечения целостности на внешних ключах без индекса производится блокировка всей таблицы. Причём тут внешний ключ. Исходная ситуация: таблица table1, должна быть уникальность ключа по полю field1. Индекса по полю field1 нет. Вопрос: как обеспечить уникальность при insert, update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:31:31 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
ukkuиндукс, на уравне процедур и триггеров. каких процедур, каких тригерров? Как понять, что данного значения в столбце нет, если не по индексу - только фулскан. Вы будете на каждый insert, update делать фулскан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:33:24 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
индукс, То что это плохо другой вопрос, вопрос был КАК кроме индекса - да и индекс будет на два поля, так что уже врятли фулл скан. ТС то хоть как скорее всего фигней страдает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:39:26 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Внешний ключ как пример того, что может выполняться лок + фуллскан. И заявление типа "это плохо" - не катит, потому что бывают разные ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:47:01 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Я просто хочу прояснить для себя, почему логика именно такова. Чисто академический интерес, не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:48:11 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collowВнешний ключ как пример того, что может выполняться лок + фуллскан. И заявление типа "это плохо" - не катит, потому что бывают разные ситуации. Это не плохо - это очень плохо. 1) Интенсивное использование FTS - это buffer busy wait, cache buffer chains - это ожидания на которых вы будете просто висеть и ничего полезного не делать 2) Блокировка всей таблицы при работе внешнего ключа, без наличия индекса - как следствие массовые deadlock ora-060 Если вы не понимаете, как работает Oracle, вам рано делать выводы о необходимости того или иного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:51:43 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Если эта таблица модифицируется только одной сессией в принципе, то все блокировки меня мало волнуют. Индексы на чтение далеко не всегда совпадают с индексами на модификацию для устранения фуллсканов. Ну и т.д. Ситуации бывают, когда полный лок таблицы не есть плохо. И не надо тут рассказывать свое понимание того, как базе работать будет лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:22:55 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
индуксukkuиндукс, на уравне процедур и триггеров. каких процедур, каких тригерров? Как понять, что данного значения в столбце нет, если не по индексу - только фулскан. Вы будете на каждый insert, update делать фулскан? гыгы. это - чистая очевидность (в том числе - даже и безотносительно сабжа ) на самом деле - возможны варианты. индекс может быть, но не уникальный да и не полный по составу полей ключа. партишенинг тоже добавляет вариантов реализации. можно (если таки нужно) ключ строить не над самой таблицей, а над коммиттошным матвью над ней.. на крайняк - и на вопрос авторВы будете на каждый insert, update делать фулскан? ответ не однозначный (т.е. в зависимости от расклада - может быть и "да" ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:24:07 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Про матвью знаю вариант, фактически, это поддерживаемый системой процедурный способ обеспечения уникальности. Но не всегда их можно применить, к сожалению, на fast refresh. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:29:26 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collow, вы память на индекс жалете, какая вам мат. вьюха) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:31:44 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Ну так я его и не использую :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:32:52 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
collowЕсли эта таблица модифицируется только одной сессией в принципе, то все блокировки меня мало волнуют. Индексы на чтение далеко не всегда совпадают с индексами на модификацию для устранения фуллсканов. Ну и т.д. Ситуации бывают, когда полный лок таблицы не есть плохо. И не надо тут рассказывать свое понимание того, как базе работать будет лучше. Это не моё понимание. Так работает Oracle. Но в чём вы правы, в том, что даже будучи очень зелёным админом, много лет назад, не сталкивался с такой ситуацией, гениальной как у вас - "таблица модифицируется одной сессий". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:40:01 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
индукс, значит мало систем видели) представте себе систему где все глобальные настройки APP сервера хранятся в 1 таблице. и только суперадмин, который 1. может в эксклюзивном режиме ее изменять)) collow прошу пояснить фразу "индекс на модификацию для устранения фуллсканов" - это что за зверь? вообще из всех словоизлияний, понял только то, что Вы сами не знаете чего хотите. и чётко вопрос сформулировать не можете... от этого все проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:47:46 |
|
||
|
Unique constraint + index
|
|||
|---|---|---|---|
|
#18+
Индекс на модификацию - имел ввиду что модифицировать обычно надо по первичному ключу, а читать - по другим ключам. Например, если есть суррогатный первичный и уникальный естественный. То есть выборка строк для модификации использует обычно не те индексы, которые использует выборка для построения отчета. Хочу я сформулировал по-моему четко: понять, почему принципиально нельзя подсунуть "частичный индекс" под уникальный ключ, чем собственно он принципиально отличается от неуникального индекса. И попутно еще родился вопрос - а зачем собственно есть возможность использовать неуникальный индекс? В каких случаях это может быть востребовано, за исключением очевидных "был старый неуникальный индекс, логика поменялась, навесили констрейнт, и не хотим делать новый/пересоздавать старый индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 18:58:00 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=37714090&tid=1887991]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
214ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 500ms |

| 0 / 0 |
