powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Буду ли я прав применив один sequence?
16 сообщений из 16, страница 1 из 1
Буду ли я прав применив один sequence?
    #34964415
Допустим имеется порядка 100-150 табличек в базе данных.
Допустим я хочу держать один sequence для генерации значения PK этих табличек.
А теперь по существу, буду ли я прав в своем подходе?
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964609
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ключи типа int4, а таблицы будут большие, то может банально не хватить значений ключа.
А в остальном, ИМХО, в таком подходе проблем не вижу.
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964615
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO
чисто теоретически, использование одного sequence менее производительно, поскольку получение nextvalue не конкурентное, а ставится в очередь.
Одна sequence очень быстр, едва ли это будет заметно даже на очень активных вставках
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964627
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadminIMHO
чисто теоретически, использование одного sequence менее производительно, поскольку получение nextvalue не конкурентное, а ставится в очередь.
Одна sequence очень быстр, едва ли это будет заметно даже на очень активных вставках
для этого есть
CREATE SEQUENCE
...
The optional clause CACHE cache specifies how many sequence numbers are to be preallocated and stored in memory for faster access. The minimum value is 1 (only one value can be generated at a time, i.e., no cache), and this is also the default.
...
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964664
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извечный вопрос. С точки зрения... базы - никаких проблем. А с точки зрения логики - приятнее (именно приятнее) чтобы каждый объект имел свою последовательность. Объяснить не смогу, просто приятнее :)
Да и зачем такая заморочка?
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964738
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, Postgres'овский CACHE для sequence реализован не так, как бы хотелось. Этот cache живет только в пределах сессии.
Если, например, вы поставили CACHE 500, и потом 3 раза соединились с БД вызвали по разу sequence и отсоединились, то при следующем коннекте sequence вам выдаст уже 1501.
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964757
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirИзвечный вопрос. С точки зрения... базы - никаких проблем. А с точки зрения логики - приятнее (именно приятнее) чтобы каждый объект имел свою последовательность. Объяснить не смогу, просто приятнее :)
Да и зачем такая заморочка?
Ну, с точки зрения приятности тоже могут быть доводы:
- строим объектную модель, по id объекта всегда знаем его тип.
- массовое восстановление данных в таблицах (частичный backup-restore) можно сделать сделав выкл./вкл. всего одного сиквенса.

Но, опять таки, это не подавляющие и очень частные удобства.
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964776
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ThamerlanК сожалению, Postgres'овский CACHE для sequence реализован не так, как бы хотелось. Этот cache живет только в пределах сессии.
Если, например, вы поставили CACHE 500, и потом 3 раза соединились с БД вызвали по разу sequence и отсоединились, то при следующем коннекте sequence вам выдаст уже 1501.
вроде логично все, в оракле аналогично, насколько я знаю
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964844
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin[quot pamir]Ну, с точки зрения приятности тоже могут быть доводы:
- строим объектную модель, по id объекта всегда знаем его тип.
Как?
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964868
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_serg ThamerlanК сожалению, Postgres'овский CACHE для sequence реализован не так, как бы хотелось. Этот cache живет только в пределах сессии.
Если, например, вы поставили CACHE 500, и потом 3 раза соединились с БД вызвали по разу sequence и отсоединились, то при следующем коннекте sequence вам выдаст уже 1501.
вроде логично все, в оракле аналогично, насколько я знаюЕсли все так, как описал Тамерлан, то в оракле все не так. Там есть кэш, но, если я уж совсем не поехал умом, там не бывает такого, что из-за кэша образуются дыры в последовательностях. Да, Оракл не гарантирует, что не будет дыр, но это не из-за кэша, а из-за "нетранзакционности" последовательности - в одной сессии взяли очередной номер, в другой тоже взяли, первая откатилась. Вот и дырка.
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34964899
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_serg ThamerlanК сожалению, Postgres'овский CACHE для sequence реализован не так, как бы хотелось. Этот cache живет только в пределах сессии.
Если, например, вы поставили CACHE 500, и потом 3 раза соединились с БД вызвали по разу sequence и отсоединились, то при следующем коннекте sequence вам выдаст уже 1501.
вроде логично все, в оракле аналогично, насколько я знаю

В Oracle sequences кешируются глобально и не зависят от соединений, и потеряться кэш может только от рестатра базы или от flush'а.
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34965120
Г ос т ь я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
[/quot]

Если что:
Verba volant, scripta manent
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34965217
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
действительно, насчет оракла - это я погорячился )
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34965247
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamir tadmin[quot pamir]Ну, с точки зрения приятности тоже могут быть доводы:
- строим объектную модель, по id объекта всегда знаем его тип.
Как?наследуем все id-ники от одной "виртуальной" (без данных) таблицы (tid). Выполнее запрос к ней
SELECT tableoid FROM tid WHERE id = _id;
вернет нам табличку реального хранения, т.е. "тип" объекта.
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34965270
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assa pamir tadmin[quot pamir]Ну, с точки зрения приятности тоже могут быть доводы:
- строим объектную модель, по id объекта всегда знаем его тип.
Как?наследуем все id-ники от одной "виртуальной" (без данных) таблицы (tid). Выполнее запрос к ней
SELECT tableoid FROM tid WHERE id = _id;
вернет нам табличку реального хранения, т.е. "тип" объекта.Здорово. Не учел эффекта наследования (все-таки оракл для меня роднее, а там такого нет)
...
Рейтинг: 0 / 0
Буду ли я прав применив один sequence?
    #34991484
kamerad1981
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеет смысл для хранения похожих сущностей, но для этого действительно лучше наследование применять. Могут быть проблемы в БД где идентификатор имеет смысл не только для БД.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Буду ли я прав применив один sequence?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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