Переполнение автоинкрементного поля
От: Miro Россия  
Дата: 14.07.04 13:24
Оценка:
Что произойдёт когда автоинкрементное поле типа int (в MS SQL) достигнет максимального значения?

Сервер станет искать пропущенные по каким-либо причинам значения и дальше заполнять их?
Re: Переполнение автоинкрементного поля
От: Merle Австрия http://rsdn.ru
Дата: 14.07.04 14:07
Оценка:
Здравствуйте, Miro, Вы писали:

M>Что произойдёт когда автоинкрементное поле типа int (в MS SQL) достигнет максимального значения?

Ошибка переполнения.

M>Сервер станет искать пропущенные по каким-либо причинам значения и дальше заполнять их?

Нет.
Мы уже победили, просто это еще не так заметно...
Re: Переполнение автоинкрементного поля
От: Lloyd Россия  
Дата: 14.07.04 14:18
Оценка: :)))
Здравствуйте, Miro, Вы писали:

M>Что произойдёт когда автоинкрементное поле типа int (в MS SQL) достигнет максимального значения?


Ты тогда будешь очень стареньким и тебе уже будет неважно.
Re[2]: Переполнение автоинкрементного поля
От: Igor Trofimov  
Дата: 14.07.04 18:08
Оценка:
L>Ты тогда будешь очень стареньким и тебе уже будет неважно.

На самом деле signed int — это не так уж и много... За несколько лет вполне можно выбрать.
Чтобы совсем не волноваться — надо int64 брать
Re[3]: Переполнение автоинкрементного поля
От: Merle Австрия http://rsdn.ru
Дата: 14.07.04 20:00
Оценка: :)
Здравствуйте, Igor Trofimov, Вы писали:

iT>Чтобы совсем не волноваться — надо int64 брать

GUID — вот решение всех проблем!
Если статью Синклера на ночь не читать...
... [RSDN@Home 1.1.4 beta 2]
Мы уже победили, просто это еще не так заметно...
Re[3]: Переполнение автоинкрементного поля
От: Аноним  
Дата: 14.07.04 20:32
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

L>>Ты тогда будешь очень стареньким и тебе уже будет неважно.


iT>На самом деле signed int — это не так уж и много... За несколько лет вполне можно выбрать.

iT>Чтобы совсем не волноваться — надо int64 брать

четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?
Re[4]: Переполнение автоинкрементного поля
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.07.04 22:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?


Ну если добавлять по 100 записей в секунду без отдыха и выходных, то где-то за полтора года можно переполнить int32.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Переполнение автоинкрементного поля
От: Bigger Российская Империя  
Дата: 15.07.04 04:43
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


А>>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?


A>Ну если добавлять по 100 записей в секунду без отдыха и выходных, то где-то за полтора года можно переполнить int32.


А администратор БД за что деньги будет получать?
Вот пусть у него голова и болит

Программист — это шаман..., подарите бубен!
Re[4]: Переполнение автоинкрементного поля
От: Forint Украина  
Дата: 15.07.04 06:11
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?
Так веедь шаг инкримента может быть и 100'000...
... << RSDN@Home 1.1.0 stable >>
Re[4]: Переполнение автоинкрементного поля
От: Forint Украина  
Дата: 15.07.04 06:12
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?
Так веедь шаг инкримента может быть и 100'000...
... << RSDN@Home 1.1.0 stable >>
Re[4]: Переполнение автоинкрементного поля
От: Andy_MAN Россия  
Дата: 15.07.04 06:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Igor Trofimov, Вы писали:


L>>>Ты тогда будешь очень стареньким и тебе уже будет неважно.


iT>>На самом деле signed int — это не так уж и много... За несколько лет вполне можно выбрать.

iT>>Чтобы совсем не волноваться — надо int64 брать

А>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?


Так ведь записи еще можно удалять. Реально в таблице может храниться только 5 записей.
Re[5]: Переполнение автоинкрементного поля
От: Miro Россия  
Дата: 15.07.04 09:13
Оценка:
Здравствуйте, Andy_MAN, Вы писали:

A_M>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Igor Trofimov, Вы писали:


L>>>>Ты тогда будешь очень стареньким и тебе уже будет неважно.


iT>>>На самом деле signed int — это не так уж и много... За несколько лет вполне можно выбрать.

iT>>>Чтобы совсем не волноваться — надо int64 брать

А>>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?


A_M>Так ведь записи еще можно удалять. Реально в таблице может храниться только 5 записей.



Ну да.. Только вот ID последней из них может уже быть предельным.


Кстати, автоинкрементное поле типа int считает от нуля в плюс, а "минусовые" ID теряются? Или же это поле считается беззнаковым?
Re[6]: Переполнение автоинкрементного поля
От: Merle Австрия http://rsdn.ru
Дата: 15.07.04 09:19
Оценка:
Здравствуйте, Miro, Вы писали:

M>Ну да.. Только вот ID последней из них может уже быть предельным.

Ну пользуй bigint, если переполнения боишься.


M>Кстати, автоинкрементное поле типа int считает от нуля в плюс, а "минусовые" ID теряются? Или же это поле считается беззнаковым?

Ну давал же ссылку (http://www.rsdn.ru/article/?505
Автор(ы): Иван Бодягин
Дата: 07.02.2004
Уникальная идентификация записей в таблице, является практически основой реляционных СУБД. Вообще в реляционной теории предполагается, что если две записи ни чем друг от друга не отличаются, то это явная избыточность, и количество таких записей можно сократить до одной. Собственно вопросам этой самой идентификации, каковых возникает на удивление много, и посвящен этот FAQ.
), почитать лень?
И начало, и приращение можешь задать любым, в пределах используемого типа... знаковость это не свойство identity, а свойство типа.
Мы уже победили, просто это еще не так заметно...
Re[7]: Переполнение автоинкрементного поля
От: Miro Россия  
Дата: 15.07.04 09:30
Оценка:
Здравствуйте, Merle, Вы писали:
M>Ну давал же ссылку (http://www.rsdn.ru/article/?505
Автор(ы): Иван Бодягин
Дата: 07.02.2004
Уникальная идентификация записей в таблице, является практически основой реляционных СУБД. Вообще в реляционной теории предполагается, что если две записи ни чем друг от друга не отличаются, то это явная избыточность, и количество таких записей можно сократить до одной. Собственно вопросам этой самой идентификации, каковых возникает на удивление много, и посвящен этот FAQ.
), почитать лень?


Вощето я почитал. Но: а тебе лень ответить, вместо того чтоб второй раз ссылку постить?


M>И начало, и приращение можешь задать любым, в пределах используемого типа... знаковость это не свойство identity, а свойство типа.


Да, это понятно, но как-то "несимпатично" выглядит начинать отсчёт с -xxxxxxxxxx (впрочем наверно это предрассудки).
Re[4]: Переполнение автоинкрементного поля
От: Igor Trofimov  
Дата: 15.07.04 18:23
Оценка:
А>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?

А кто говорил, что их все будут хранить? И представь например, биллинговую систему где учитываются звонки и sms-ки. Чтобы переполнить знаковый int32 (2^31 — 1) достаточно всего 5 лет, по 14 записей в секунду. Не так уж и много.
Re[5]: Переполнение автоинкрементного поля
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.04 02:45
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>А кто говорил, что их все будут хранить? И представь например, биллинговую систему где учитываются звонки и sms-ки. Чтобы переполнить знаковый int32 (2^31 — 1) достаточно всего 5 лет, по 14 записей в секунду. Не так уж и много.


За пять лет или МТС сдохнет, или ты оттуда увошишся.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Переполнение автоинкрементного поля
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.04 02:45
Оценка:
Здравствуйте, Andy_MAN, Вы писали:

А>>четыре миллиарда записей это по-твоему немного? А ты уверен, что mssql вообще в состоянии хранить такое кол-во записей таблице?


A_M>Так ведь записи еще можно удалять. Реально в таблице может храниться только 5 записей.


Дык, тогда когда они кончатся, сделашь запросик который махнет все ID на мелкие и будешь еще 5 лет работать.

А еще можно bigint поставить. Тогда на ближайщие миллион лет хватит.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Переполнение автоинкрементного поля
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.07.04 12:10
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:

iT>>А кто говорил, что их все будут хранить? И представь например, биллинговую систему где учитываются звонки и sms-ки. Чтобы переполнить знаковый int32 (2^31 — 1) достаточно всего 5 лет, по 14 записей в секунду. Не так уж и много.

VD>За пять лет или МТС сдохнет, или ты оттуда увошишся.

Заявление

Я, Игорь Трофимов,
Прошу уволить меня по собственному желанию в связи с переполнением идентификатора в базе данных.

A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Переполнение автоинкрементного поля
От: Igor Trofimov  
Дата: 20.07.04 18:17
Оценка:
VD>>За пять лет или МТС сдохнет, или ты оттуда увошишся.

А если не сдохнет? Будет неприятно, независимо от того, уволится ли тот, кто заточился на int32

A>

A>Заявление
A> ...


Большое спасибо, я за вас тоже как-нибудь что-нибудь напишу.
Re[8]: Переполнение автоинкрементного поля
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.07.04 20:47
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Большое спасибо, я за вас тоже как-нибудь что-нибудь напишу.


Я шутил. Извини если обидел. Вроде как люди шутку поняли.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.