Что лучше: одна глобальная последовательность против последовательности на таблицу?
В приложении JPA/Hibernate, использующем собственные последовательности Oracle, лучше ли использовать одну глобальную последовательность, такую как hibernate_sequence
, или определить отдельную последовательность для таблицы?
Кажется, что одна последовательность проще в обслуживании, но может затруднить устранение неполадок или специальных запросов, создавая более длинные идентификаторы.
Ответы
Ответ 1
Хотя кеширование облегчает его, последовательность может вызвать конфликт, когда несколько сеансов требуют очередности.
Если у вас есть одна последовательность, обслуживающая все таблицы, то все вставки во всех таблицах будут бороться за одну и ту же последовательность. Если вы после исполнения, одна последовательность для каждой таблицы даст меньше конкуренции.
Ответ 2
Одна последовательность означает отсутствие совпадающих идентификаторов в двух таблицах. На практике мне это нравится, потому что вы никогда не сможете получить что-то, когда вы случайно запрашиваете неправильную таблицу. Особенно полезно при удалении. Это немного, но я считаю это полезным.
Ответ 3
Я бы рекомендовал вам использовать последовательность для каждой таблицы. В моей книге это немного чище. Стандарт при моем текущем расположении занятых - это последовательность в таблице.