C.4. Последовательности
C.4.1. Поддерживаются ли в Shardman глобальные последовательности?
Да, поддерживаются. Однако есть особенности их работы, которые следует учитывать. Глобальные последовательности по сути являются регулярными последовательности на каждом сегменте, и им выделяются последовательные блоки (65536 номеров по умолчанию). Когда выдаются числа, локальный последовательный блок передаётся локальному последовательному блоку в сегменте. То есть числа из глобальных последовательностей уникальны, но строгой монотонности в них нет (в отличие от PostgreSQL). Но могут быть «дыры» в значениях, выдаваемых генератором последовательностей.
C.4.2. Как создать глобальную последовательность?
CREATE SEQUENCE ... WITH (GLOBAL);
Функцию nextval
можно использовать для получения следующего значения последовательности:
SELECT nextval('acl_id_seq'::regclass);
Типы данных bigserial
, smallserial
и serial
(автоматическое создание последовательностей и вывод из неё значений по умолчанию) реализованы и работают как для сегментированных, так и для глобальных таблиц. Рекомендуется использовать bigserial
при отсутствии особых требований.