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

Откуда:
Сообщений: 37
Здравствуйте, вопрос такой
Имею таблицу с полем TableID
Idenity Стоит - YES
Idenity Increnent - 1
Idenity Seed - 1

Недавно обратил внимание, что при добавлениие новых 50 записей например TableID увеличивается от 1-50, через пару часов при добавлении новых записей нумерация поля не продолжается с 51 а может начинаться например с 1200 и уже увеличение идет начиная с этого номера допустим 1200-1270, потом может начатся с 5000 и так далее, в чем может быть проблема раньше работал на SQL2005 такого вроде не замечал сейчас работаю на 2012
Спасибо...
26 сен 19, 12:19    [21979655]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
aseylanyan
Здравствуйте, вопрос такой
Имею таблицу с полем TableID
Idenity Стоит - YES
Idenity Increnent - 1
Idenity Seed - 1

Недавно обратил внимание, что при добавлениие новых 50 записей например TableID увеличивается от 1-50, через пару часов при добавлении новых записей нумерация поля не продолжается с 51 а может начинаться например с 1200 и уже увеличение идет начиная с этого номера допустим 1200-1270, потом может начатся с 5000 и так далее, в чем может быть проблема раньше работал на SQL2005 такого вроде не замечал сейчас работаю на 2012
Спасибо...

by design
ну и уберите autoclose
26 сен 19, 12:19    [21979657]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2375
aseylanyan,
кто то вставил 1200 записей, а потом удалил их
26 сен 19, 12:19    [21979658]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
aseylanyan
Member

Откуда:
Сообщений: 37
StarikNavy
aseylanyan,
кто то вставил 1200 записей, а потом удалил их

Нет это исключается удалять могу только я
26 сен 19, 12:22    [21979663]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3146
aseylanyan
StarikNavy
aseylanyan,
кто то вставил 1200 записей, а потом удалил их

Нет это исключается удалять могу только я
Вставил 1200 записей в транзакции, а потом сделал rollback.
26 сен 19, 12:23    [21979665]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
aseylanyan
Member

Откуда:
Сообщений: 37
Извините а нельзя поподробней не очень понял откуда убрать

TaPaK
aseylanyan
Здравствуйте, вопрос такой
Имею таблицу с полем TableID
Idenity Стоит - YES
Idenity Increnent - 1
Idenity Seed - 1

Недавно обратил внимание, что при добавлениие новых 50 записей например TableID увеличивается от 1-50, через пару часов при добавлении новых записей нумерация поля не продолжается с 51 а может начинаться например с 1200 и уже увеличение идет начиная с этого номера допустим 1200-1270, потом может начатся с 5000 и так далее, в чем может быть проблема раньше работал на SQL2005 такого вроде не замечал сейчас работаю на 2012
Спасибо...

by design
ну и уберите autoclose
26 сен 19, 12:24    [21979666]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
iiyama
Member

Откуда:
Сообщений: 642
aseylanyan,

Consecutive values after server restart or other failures -SQL Server might cache identity values for performance reasons and some of the assigned values can be lost during a database failure or server restart. This can result in gaps in the identity value upon insert. If gaps are not acceptable then the application should use its own mechanism to generate key values.

источник
26 сен 19, 12:52    [21979703]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
iiyama
aseylanyan,

Consecutive values after server restart or other failures -SQL Server might cache identity values for performance reasons and some of the assigned values can be lost during a database failure or server restart. This can result in gaps in the identity value upon insert. If gaps are not acceptable then the application should use its own mechanism to generate key values.

источник

Переведу вкратце: как раз вроде с 2012 версии сервер стал кэшировать в памяти по 1000 значений идентити для ускорения вставки. Если сервер перезагружается - кэш теряется и сервер кэширует следующую 1000 для выдачи значений.

И вообще: IDENTITY не обеспечивает непрерывность, IDENTITY обеспечивает уникальность и возрастание значений.
26 сен 19, 13:00    [21979713]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
aseylanyan
Member

Откуда:
Сообщений: 37
Спасибо большое, я правильно понял что если мне не столь принципиально порядковый номер я могу продолжать спокойно работать. Просто так он быстрее дойдет до своего максимального значения
iiyama
aseylanyan,

Consecutive values after server restart or other failures -SQL Server might cache identity values for performance reasons and some of the assigned values can be lost during a database failure or server restart. This can result in gaps in the identity value upon insert. If gaps are not acceptable then the application should use its own mechanism to generate key values.

источник
26 сен 19, 13:13    [21979720]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
msLex
Member

Откуда:
Сообщений: 7733
Minamoto
IDENTITY обеспечивает уникальность

нет, уникальность обеспечивает только уникальный индекс
26 сен 19, 13:16    [21979724]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
msLex
Minamoto
IDENTITY обеспечивает уникальность

нет, уникальность обеспечивает только уникальный индекс

Уникальность выдаваемых значений без изменения настроек identity, не? ) Может дубли выдать? Приведите пример, плиз, а то вдруг я понадеюсь на него...
26 сен 19, 13:46    [21979776]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
iiyama
Member

Откуда:
Сообщений: 642
Minamoto
msLex
пропущено...

нет, уникальность обеспечивает только уникальный индекс

Уникальность выдаваемых значений без изменения настроек identity, не? ) Может дубли выдать? Приведите пример, плиз, а то вдруг я понадеюсь на него...


Uniqueness of the value - Uniqueness must be enforced by using a PRIMARY KEY or UNIQUE constraint or UNIQUE index.

там же, чуть выше
26 сен 19, 14:00    [21979810]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Minamoto
msLex
пропущено...

нет, уникальность обеспечивает только уникальный индекс

Уникальность выдаваемых значений без изменения настроек identity, не? ) Может дубли выдать? Приведите пример, плиз, а то вдруг я понадеюсь на него...


вполне до какой-то версии такое развлекало

CREATE TABLE dbo.test  (a int identity(1,1))

INSERT INTO dbo.test DEFAULT VALUES 
INSERT INTO dbo.test DEFAULT VALUES 

EXEC ('SELECT a INTO dbo.test22  FROM dbo.test  ')

INSERT INTO dbo.test22 DEFAULT VALUES

SELECT * FROM dbo.test22  
26 сен 19, 14:19    [21979864]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
aseylanyan
Member

Откуда:
Сообщений: 37
Одним словом могу ли я быть уверенным что если

Имею таблицу с полем TableID
Idenity Стоит - YES
Idenity Increnent - 1
Idenity Seed - 1

и это поле (TableID) установлено в Primary Key то я избегу дубликатов
Просто при работе и с SQL2000 и SQL2005 таких проблем не возникало уже на пртояжении 10 лет а сейчас при переходе SQL2012 как-то стремно стало.
Спасибо
26 сен 19, 15:55    [21980023]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
aseylanyan
Одним словом могу ли я быть уверенным что если

Имею таблицу с полем TableID
Idenity Стоит - YES
Idenity Increnent - 1
Idenity Seed - 1

и это поле (TableID) установлено в Primary Key то я избегу дубликатов
Просто при работе и с SQL2000 и SQL2005 таких проблем не возникало уже на пртояжении 10 лет а сейчас при переходе SQL2012 как-то стремно стало.
Спасибо
Да. Будьте уверены. Благодаря Primary Key (а, значит, уникальному индексу). Попытка вставить дубликат завершится исключением.
А IDENTITY может скакать, это документировано.
По этому поводу здесь уже было много тем.
26 сен 19, 16:13    [21980050]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
aseylanyan
Member

Откуда:
Сообщений: 37
Всем спасибо
26 сен 19, 16:14    [21980052]     Ответить | Цитировать Сообщить модератору
 Re: Idenity  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30806
aseylanyan
Просто так он быстрее дойдет до своего максимального значения
Для мелких вставок дойти до предела INT не так просто, а для больших вставок пропусков не будет (скажем, при вставки миллиона записей он не будет их вставлять как 1001, 2001, 3001 и т.д.).
Так что не переживайте, хотя, конечно, эту особенность нужно учитывать при выборе типа identity-поля.
26 сен 19, 18:00    [21980181]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить