Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Identity server gap  [new]
gap1234
Guest
Уважаемые коллеги,

подскажите пожалуйста, есть у кого-нибудь информация про размер identity server gap?
Хотя бы порядок для полей с типом bigint и int.
17 фев 16, 11:01    [18828003]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Вы это имели ввиду?

http://www.sqlservercentral.com/blogs/james-sql-footprint/2013/07/23/gap-issue-in-sql-server-2012-identity-column/
17 фев 16, 11:05    [18828047]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
gap1234
Guest
AlanDenton,

Да, это, спасибо.

Вот только хочется быть уверенным, что магическое число всегда 1000.
17 фев 16, 11:11    [18828101]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Можно вопрос. Почему Вы об этом сильно так переживаете?
17 фев 16, 11:16    [18828146]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
gap1234
AlanDenton,

Да, это, спасибо.

Вот только хочется быть уверенным, что магическое число всегда 1000.
А это не всё равно?
Какой дополнительный смысл вы придаёте полю IDENTITY?
17 фев 16, 11:17    [18828154]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
o-o
Guest
gap1234
Вот только хочется быть уверенным, что магическое число всегда 1000.

1. это не размер "дыры", к-ую вы получите, а всего лишь размера кэша,
т.е. дыра будет гарантированно не превышать размер кэша и только
2. размер кэша для зависит от типа:

tinyint 10
smallint 100
int 1000
bigint, numeric 10000

MS не документирует размер кэша и оставляет за собой возможность изменения его размера
17 фев 16, 11:30    [18828263]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
o-o
Guest
o-o
2. размер кэша для*** зависит от типа:

***для IDENTITY.
в версиях < 2012 identity не имело кэша,
а появился он из-за введения SEQUENCEs,
у них дефолтный кэш 50 и не зависит от типа
17 фев 16, 11:34    [18828304]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
а появился он из-за введения SEQUENCEs
Классная отмазка!
В огороде бузина, в Киеве - дядька! ©
17 фев 16, 11:41    [18828359]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
o-o
Guest
iap
o-o
а появился он из-за введения SEQUENCEs
Классная отмазка!
В огороде бузина, в Киеве - дядька! ©

sequence and identity are implemented internally based on the same physical object.

Prior to SQL Server 2012, identity had no cache;
rather, every value generation caused a disk write that was also logged.
In SQL Server 2012 and 2014, identity has a predefined cache value that depends on the data type of the target column.
17 фев 16, 12:09    [18828588]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
iap
пропущено...
Классная отмазка!
В огороде бузина, в Киеве - дядька! ©

sequence and identity are implemented internally based on the same physical object.

Prior to SQL Server 2012, identity had no cache;
rather, every value generation caused a disk write that was also logged.
In SQL Server 2012 and 2014, identity has a predefined cache value that depends on the data type of the target column.
Вот это всё - внутренние микрософтовские проблемы.
Могли же они реализовать SEQUENCE отдельно от IDENTITY, раз это привело к такому уродскому поведению?
Хотя это и не так важно, если рассматривать только техническую сторону вопроса.
17 фев 16, 12:18    [18828666]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
o-o
Guest
iap
o-o
пропущено...

sequence and identity are implemented internally based on the same physical object.

Prior to SQL Server 2012, identity had no cache;
rather, every value generation caused a disk write that was also logged.
In SQL Server 2012 and 2014, identity has a predefined cache value that depends on the data type of the target column.
Вот это всё - внутренние микрософтовские проблемы.
Могли же они реализовать SEQUENCE отдельно от IDENTITY, раз это привело к такому уродскому поведению?
Хотя это и не так важно, если рассматривать только техническую сторону вопроса.

это не уродское поведение, а оптимизация.
кэш не от нефиг делать придумали.
каждая генерация значения Identity в старом виде
(это поведение можно вернуть себе на новых версиях, включив флаг 272)
провоцировало запись на диск этого самого значения -- логирование.
в любой базе, отличной от темпдб, это значение необходимо зафиксировать,
чтобы при рестарте возобновить с него начиная.
никакой бесплатности.
это log flush на каждую генерацию identity.
начиная с 2012-ого без 272-ого флага таких log flushes на int, identity стало в 1000 раз меньше
17 фев 16, 12:30    [18828789]     Ответить | Цитировать Сообщить модератору
 Re: Identity server gap  [new]
o-o
Guest
o-o
это log flush на каждую генерацию identity.
начиная с 2012-ого без 272-ого флага таких log flushes на int, identity стало в 1000 раз меньше

У меня вот тут наврано.
Log flush происходит после каждой записи в лог для сиквенса (не на каждое значение, а на каждые cache size значений). Для identity без кэша каждое вновь сгенеренное значение логируется, но не вызывает log flush. Ну т. е. без кэша identity все равно тормознее, чем identity с cache, но чемпион по тормозам это sequence без кэша
18 фев 16, 09:39    [18833375]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить