Что лучше: одна глобальная последовательность против последовательности на таблицу?

В приложении JPA/Hibernate, использующем собственные последовательности Oracle, лучше ли использовать одну глобальную последовательность, такую ​​как hibernate_sequence, или определить отдельную последовательность для таблицы?

Кажется, что одна последовательность проще в обслуживании, но может затруднить устранение неполадок или специальных запросов, создавая более длинные идентификаторы.

Ответ 1

Хотя кеширование облегчает его, последовательность может вызвать конфликт, когда несколько сеансов требуют очередности. Если у вас есть одна последовательность, обслуживающая все таблицы, то все вставки во всех таблицах будут бороться за одну и ту же последовательность. Если вы после исполнения, одна последовательность для каждой таблицы даст меньше конкуренции.

Ответ 2

Одна последовательность означает отсутствие совпадающих идентификаторов в двух таблицах. На практике мне это нравится, потому что вы никогда не сможете получить что-то, когда вы случайно запрашиваете неправильную таблицу. Особенно полезно при удалении. Это немного, но я считаю это полезным.

Ответ 3

Я бы рекомендовал вам использовать последовательность для каждой таблицы. В моей книге это немного чище. Стандарт при моем текущем расположении занятых - это последовательность в таблице.