Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?
===============================================
т.к. других невижу.
Может ещё есть какие типа блокировки?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
25 апр 07, 10:45    [4066625]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Пропуски будут даже в том случае, если на каждое автозаполняемое поле сделать свою последовательность (удаление данных, некорректное завершение работы инстанса и кэширование последовательностей)
25 апр 07, 10:47    [4066647]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
denix1
Member

Откуда: Киев
Сообщений: 4656
Petro123
Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?
===============================================
т.к. других невижу.
Может ещё есть какие типа блокировки?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!

2-й минус в том что он один - и в зависимости от интенсивности обращений может стать узким местом
3-й минут это 2-й помноженный на RAC
25 апр 07, 10:48    [4066663]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
мод
Guest
Petro123
Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?

Если использовать полученный номер для идентификации сущностей пользователем, то лучше каждую сущность нумеровать отдельно.
25 апр 07, 10:51    [4066697]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63933
Блог
Petro123
Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?

1. Пропуски вообще говоря не являются минусом. Единственно, при работе программиста или тестировщика напрямую с БД иногда неудобны.

2. Эта тема многократно обсасывалась, в том числе и здесь. Мое текущее мнение - если сиквенс адекватно сконфигурирован (к примеру, не применяется nocache или order), противопоказаний к схеме "один сиквенс обслуживает всю базу" нет. Можно поискать на Asktom примеры соответствующих измерений; краткий вывод - при реальных нагрузках сиквенс узким местом не становится.

3. Следует помнить, что обращение к сиквенсу занимает заметное время, и на операциях типа массовой вставки заметное ускорение может быть достигнуто за счет отказа от nextval в каждой строке. Это уже равно верно и для одного сиквенса, и для кучи сиквенсов.
25 апр 07, 11:01    [4066765]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
спасибо всем, я так и предпологал.
Конечно дырки будут и я их небоюсь. Но если нумерация при одном генераторе общая для ВСЕХ таблиц это мне не подходит.
Просто непонятно, когда будет счётчик на уровне типа поля :).
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
25 апр 07, 11:06    [4066819]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63933
Блог
Как Вам сказать, Petro.... после того, как привыкнешь ездить на двухколесном велосипеде, трехколесные уже не возбуждают.
25 апр 07, 11:08    [4066840]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
Petro123
Но если нумерация при одном генераторе общая для ВСЕХ таблиц это мне не подходит.

Нумерация разумеется общая.

Petro123

Просто непонятно, когда будет счётчик на уровне типа поля :).


Это и достигается заданием последовательностей, каждая из которых
и будет обслуживать свое поле...
25 апр 07, 11:10    [4066859]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
softwarer
Как Вам сказать, Petro.... после того, как привыкнешь ездить на двухколесном велосипеде, трехколесные уже не возбуждают.

:)
да, в точку
25 апр 07, 11:21    [4066960]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
dmidek

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

жаль, что мне приходится конструировать кочегара, который обслуживает процесс "подбрасывания дров". Но это уже флейм (нет времени).

ЗЫ. Слышал, что данное удобство в кавычках могут ввести в стандарт SQL3/4 как и другие вкусности типа поле-времени-метки (кстати в данном поле время "само" проставляется?).

Спасибо всем, помогли.
25 апр 07, 11:26    [4067008]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
softwarer
3. Следует помнить, что обращение к сиквенсу занимает заметное время, и на операциях типа массовой вставки заметное ускорение может быть достигнуто за счет отказа от nextval в каждой строке. Это уже равно верно и для одного сиквенса, и для кучи сиквенсов.

Что-то я недопонял...

Что значит "отказ от nextval в каждой строке"?
25 апр 07, 11:28    [4067029]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63933
Блог
Q u a d r o
Что-то я недопонял...

Что значит "отказ от nextval в каждой строке"?

Значит - использование режима а-ля интербейсовский генератор. Скажем, вместо того, чтобы делать nextval в каждой строке, делаем сиквенс с increment by 1000000, вызываем его один раз, а записям даем id-шники, например, :nextval + rownum (здесь конечно предполагается, что в пачке будет меньше миллиона записей).

Если поставить "максимально чистый" эксперимент, разница получается на порядок. В реальных условиях, конечно, меньше - вопрос в том, сколько занимает работа с сиквенсами от прочих операций с данными - но достаточно заметно, чтобы не пренебрегать этой возможностью.
25 апр 07, 12:05    [4067396]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
всё, понял.

да, в курсе такого.
25 апр 07, 12:17    [4067489]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
softwarer

делаем сиквенс с increment by 1000000, вызываем его один раз, а записям даем id-шники, например, :nextval + rownum (здесь конечно предполагается, что в пачке будет меньше миллиона записей).

в сиквеле при массовой заливке (а также репликации):
- выключаются журналирование
- выключаются ключи
- выключаются поле-счетчик
...
- всё включатеся

А здесь нельзя просто выключить триггер и писать ID с клиента самому?
25 апр 07, 12:25    [4067558]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Petro123
softwarer

делаем сиквенс с increment by 1000000, вызываем его один раз, а записям даем id-шники, например, :nextval + rownum (здесь конечно предполагается, что в пачке будет меньше миллиона записей).

в сиквеле при массовой заливке (а также репликации):
- выключаются журналирование
- выключаются ключи
- выключаются поле-счетчик
...
- всё включатеся

А здесь нельзя просто выключить триггер и писать ID с клиента самому?
А чего бы и нет?
Можно даже сделать "логическое" отключение тригера конкретно для твоего сеанса.
25 апр 07, 12:29    [4067586]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
Бабичев Сергей

А чего бы и нет?
Можно даже сделать "логическое" отключение тригера конкретно для твоего сеанса.


Единственная сложность - надо не забыть, что sequence ничего о таблице не знает и после включения триггера будет повторно выдавать значения, которые туда вставили ручками, поэтому надо либо значения по диапазонам разводить, либо последовательность "прокрутить".
25 апр 07, 12:34    [4067625]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63933
Блог
Petro123
в сиквеле при массовой заливке

bulk load - это отдельный вопрос, к сказанному никак не относящийся. Собственно, нигде не сказано, что эти массовые инсерты предполагались именно с клиента.
25 апр 07, 14:33    [4068788]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Stax..
Guest
Petro123
Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?
===============================================
т.к. других невижу.
Может ещё есть какие типа блокировки?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!

а я против ОДИН-ого генератор-а

зы
надеюсь что все-таки в 13-й версии будет "автономер"
.....
stax
25 апр 07, 20:41    [4071031]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Stax..
Guest
softwarer

2. Эта тема многократно обсасывалась, в том числе и здесь. Мое текущее мнение - если сиквенс адекватно сконфигурирован (к примеру, не применяется nocache или order), противопоказаний к схеме "один сиквенс обслуживает всю базу" нет. Можно поискать на Asktom примеры соответствующих измерений; краткий вывод - при реальных нагрузках сиквенс узким местом не становится.

Смысл без nocache
ps
я не говорю о недоделанном РАС
......
stax
25 апр 07, 20:44    [4071040]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63933
Блог
Stax..
а я против ОДИН-ого генератор-а

Той баги, которую Вы описали, похоже, уже нет (во всяком случае, на десятке не воспроизвелась). Что же касается других приведенных аргументов - они неабсолютны. Вряд ли стоит их детально обсуждать, думаю, Вы согласитесь со следующим мнением: они показывают, что в некоторых случаях разные последовательности удобны-уместны (то есть служат убедительным аргументом против практики "всегда и везде один сиквенс"), но они ничуть не опровергают возможность использовать единственный сиквенс там, где это удобно.
25 апр 07, 23:23    [4071279]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Stax..

зы
надеюсь что все-таки в 13-й версии будет "автономер"
.....
stax


А чем тебе OID в объектных таблицах не автономер? ИМХО, этого вполне достаточно для генерации суррогатных ключей.
26 апр 07, 02:06    [4071499]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Stax..
Guest
softwarer
Stax..
а я против ОДИН-ого генератор-а

Той баги, которую Вы описали, похоже, уже нет (во всяком случае, на десятке не воспроизвелась). Что же касается других приведенных аргументов - они неабсолютны. Вряд ли стоит их детально обсуждать, думаю, Вы согласитесь со следующим мнением: они показывают, что в некоторых случаях разные последовательности удобны-уместны (то есть служат убедительным аргументом против практики "всегда и везде один сиквенс"), но они ничуть не опровергают возможность использовать единственный сиквенс там, где это удобно.

баг это временное, и не причина

полностью согласен, все это субективно, но мне лично больше нравится много последовательностей, не по количеству таблиц, но много
все это субективно, и не аргумент конечно

кроме может быть, как говорят затыков, производительности при одной последовательности,
даже не представляю как это работало на кластере
.....
stax
26 апр 07, 09:18    [4071854]     Ответить | Цитировать Сообщить модератору
 Re: Если ОДИН генератор-счётчик на все таблицы, то единств.минус - пропуски?  [new]
Stax..
Guest
mcureenab
Stax..

зы
надеюсь что все-таки в 13-й версии будет "автономер"
.....
stax


А чем тебе OID в объектных таблицах не автономер? ИМХО, этого вполне достаточно для генерации суррогатных ключей.

не работал с обьектными таблицами, нет практики

поетому и говорю что пора уже давно сделать "oid" для обычных таблиц,
конечно с максимально оптимизированной ренерацией значений,
и например чтоб удобно было и для грида

зы
если чесно, то мож просто привычка
привык я что ид это число из последовательности

.....
stax
26 апр 07, 09:27    [4071892]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить