powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
32 сообщений из 32, показаны все 2 страниц
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603579
Если нужен автоинкремент по одной таблице то что лучше использовать SEQUENCE, IDENTITY , SERIAL или AUTOINCREMENT?
Допустим я использовал для:
1. MSSQL - IDENTITY
2. MYSQL - AUTOINCREMENT
3. ORACLE - SEQUENCE + trigger
4. FIREBIRD - SEQUENCE + trigger
5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL)
Кстати, в чем различие IDENTITY, SERIAL и AUTOINCREMENT?

Чем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно и не очень красиво выглядит триггер с ним на каждую таблицу.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603587
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITY4. FIREBIRD - SEQUENCE + trigger

Не нравится писать собственные триггера - используй AUTOINCREMENT, сервер нужный триггер
сам создаст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603599
SEQUENCE MS SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДопустим я

1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT

авторпо одной таблице ... на каждую таблицу

Вы, уж, определитесь в постановке задачи...
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603625
SEQUENCE MS SQLавторДопустим я

1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT

авторпо одной таблице ... на каждую таблицу

Вы, уж, определитесь в постановке задачи...
http://msdn.microsoft.com/en-us/library/ff878091(v=SQL.110).aspx
SEQUENCE появиться только в SQL Server 2012. И что значит DEFAULT CONSTRAINT? В SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах?
К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер.

Постановки задачи как таковой нет - есть необходимость разобраться в каком случае что лучше?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603628
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITY5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL)SERIAL + DEFAULT в INSERT'е. Это не создает триггера.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603631
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер.
В PostgreSQL триггер не нужен: там есть псевдотип serial, который сам (почти) все делает. При создании колонки, напр., id serial будет создана последовательность, из которой автоматически будут браться значения. Технически это будет id default nextval('sequence_name').
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603634
SEQUENCE MS SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SEQUENCE vs IDENTITYВ SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах?

http://msdn.microsoft.com/en-us/library/ff878370(v=sql.110).aspx Example D

SEQUENCE vs IDENTITYПостановки задачи как таковой нет

Когда будет - приходите...
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603639
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITYно чем он лучше остальных способов не понятноТем что это механизм генерации уникальных id не привязанный к таблицам и полям.
SEQUENCE vs IDENTITY не очень красиво выглядит триггер с ним на каждую таблицу. А явно в инсерте sequence.nexval прописать религия не позволяет?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603640
SEQUENCE MS SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет?

Когда программисту надоедает работать руками - он начинает работать головой. ((с) Не моё)
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603869
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITYЧем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно
Возможность "оторвать" значение от таблицы даёт свободу манёвра, позволяющую легче реализовывать некоторую функциональность. Типовые варианты использования:

Создание/редактирование на клиенте мастер-детальных данных без длинных транзакций

Сквозная нумерация однородных сущностей, распределённых по нескольким таблицам

Генерация номеров документов

Извращения типа "обойти номера записей, вставленных руками"

SEQUENCE vs IDENTITY и не очень красиво выглядит триггер с ним на каждую таблицу.
Это да. Какого хрена ещё во времена какого-нибудь Oracle 7 не сделали DEFAULT SEQ_NAME.NEXTVAL, я не понимаю и вряд ли пойму.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37603871
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет?
У такого решения есть изрядные недостатки с точки зрения качества кода.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607711
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> У такого решения есть изрядные недостатки с точки зрения качества кода.

а переключение контекста в триггере это хорошее качество кода? Каков по Вашему мнению тогда лучший способ вызова nextval в Oracle?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607890
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtockа переключение контекста в триггере это хорошее качество кода?
Переключение контекста - это вопрос производительности. К качеству кода (в том смысле, в котором обычно понимается это слово) это отношения не имеет.

ShtockКаков по Вашему мнению тогда лучший способ вызова nextval в Oracle?
Зависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший".
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607922
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо....
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607925
ShtockЯ, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо....
Для вставки из запросов в таблицы связанные по FK?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607926
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerЗависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший".
здесь играем, здесь не играем, а тут мы рыбу заворачивали (с)
и это в контексте качества кода !?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37607950
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!, не приходило ли Вам когда-нибудь в голову, что, например, ETL-загрузка данных, OLTP с процедурной оболочкой над таблицами и, например, толстенный клиент вообще без логики на сервере - это немного разные контексты (не говоря уже о том, что часто разные проекты и разные заказчики), и применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37608357
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>связанные по FK - аха, именно для их. Для моих задач обычное дело когда одним инсертом данные уходят в 3-6 таблиц.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37608589
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerи применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет.

буквально на днях наблюдал базу от InterBase 4.0. Там несколько генераторов инкрементируются в
- некоторые только в триггерах
- некоторые только в процедурах
- некоторые одновременно в нескольких триггерах (для разных таблиц)
- некоторые ни в триггерах, ни в процедурах (а только в приложении), т.е. по базе их назначение понять нельзя.

я понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37608810
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37623223
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Informix используется Serial, можно еще Sequence, но когда есть Serial зачем использовать что то еще (если нужны последовательные значения)? Не надо городить триггеры, все просто - объявил поле Serial и получай готовые значения.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37623256
Andron , вполне логично. А насколько скорость serial отличается от аналогичной через SEQUENCE + trigger или SEQUENCE в INSERT-запросе?

softwarerkdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу.
Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ?
1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624094
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624187
softwarerSEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах?
2. Или вообще отказались от SEQUENCE?
Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а.
Т.е. в интервалах по 1000 нумеровали уже сами?
А установить кэш не пробовали ALTER SEQUENCE seq CACHE 2000; или вообще нумеровать самому без сиквенсов через оконные функции?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624200
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITYТ.е. в интервалах по 1000 нумеровали уже сами?
Да.

SEQUENCE vs IDENTITYА установить кэш не пробовали
А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками".

SEQUENCE vs IDENTITYили вообще нумеровать самому
А нафига такое счастье?
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624303
softwarerSEQUENCE vs IDENTITYА установить кэш не пробовали
А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками".
Это что за синхронные запросы к сервер? Или ты имеешь ввиду сначала получать ID из синквенса с сервера, затем его вставлять в запрос, а затем отправлять запрос на сервер?

Нафига такое счастье, когда можно так:
Код: plsql
1.
INSERT INTO table (ID, NAME) VALUES(SEQ.NEXT_VAL, :NAME)


И посылай значения NAME пачками.
Или по аналогии без параметризованного запроса.

softwarerSEQUENCE vs IDENTITYили вообще нумеровать самому
А нафига такое счастье?
Это аналогично:
"Отключил триггеры, сделал сиквенсам increment by 1000000000 и формировал данные для direct load-а." Т.е. вообще о сиквенсе париться не надо.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624311
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITYНафига такое счастье, когда можно так:
[src PLSQL]
INSERT INTO table (ID, NAME) VALUES(SEQ.NEXT_VAL, :NAME)
Затем, что хотелось не "так", а "быстро".
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624340
softwarerSEQUENCE vs IDENTITYНафига такое счастье, когда можно так:
[src PLSQL]
INSERT INTO table (ID, NAME) VALUES(SEQ.NEXT_VAL, :NAME)
Затем, что хотелось не "так", а "быстро".
Если быстро то без сиквенса, если удобно то с кэшем сиквенса, а если "быстро", то с инкрементом 1000.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37624444
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEQUENCE vs IDENTITYЕсли быстро то без сиквенса
Если быстро, то без инсёрта. Сиквенсы тут не при чём.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37625598
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSEQUENCE vs IDENTITYА установить кэш не пробовали
А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками".Ну вообще-то немного не так... Если я правильно помню, то кеш как-раз говорит о том, что за одну синхронизацию "за id'ами" выберется вот тот 1К id'ов и больше синхронизироваться не надо будет (до тех пор, пока в текущей транзакции id'ы не закончатся.

Так что кеш генератора в данном случае как-раз и должен был решить вашу проблему. Но это в теории. Как это на практике (кстати, что за СУБД, на M$-ли?) в вашей СУБД - не знаю.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37625600
Warstonesoftwarerпропущено...

А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками".Ну вообще-то немного не так... Если я правильно помню, то кеш как-раз говорит о том, что за одну синхронизацию "за id'ами" выберется вот тот 1К id'ов и больше синхронизироваться не надо будет (до тех пор, пока в текущей транзакции id'ы не закончатся.

Так что кеш генератора в данном случае как-раз и должен был решить вашу проблему. Но это в теории. Как это на практике (кстати, что за СУБД, на M$-ли?) в вашей СУБД - не знаю.
Вы все проспали. Речь шла о СУБД Oracle.
Ни с кэшем ни без него никаких синхронных запросов за ID-шниками не будет. Откуда это взял softwarer непонятно. ID-шники беруться непосредственно при выполнении инсерта.
Без кэша сиквенса будут постоянные межядерные пинги процессорного кэша, с кэшэм сиквенса они будут в 1000 раз реже. Вот в чем проблема, которую softwarer решил в ручную вместо простой комманды.

Ну а вместо использования в ручную нелогируемых параметризованных инсертов с аппендом и группировкой по транзакциям, он использовал автоматизированный и равный по производительности direct load.
...
Рейтинг: 0 / 0
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
    #37625978
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneЕсли я правильно помню, то кеш как-раз говорит о том, что за одну синхронизацию "за id'ами" выберется вот тот 1К id'ов и больше синхронизироваться не надо будет
Не надо будет синхронизироваться внутри сервера для получения новых id. Эти id надо ещё доставить на клиента. Для чего выполнить либо тысячу запросов, либо запрос на тысячу значений.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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