Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закончился диапазон, когда генератор выдаёт валидные.... [IB6.x, FB 1.0]


Страницы:   1 2

Некто ©   (2005-01-24 22:47:00) 

Закончился диапазон, когда генератор выдаёт валидные значения для первичного ключа таблицы.
Часто ли такое встречается на практике? Что делать в таких случаях?


Johnmen   (2005-01-25 11:41:00) [1]

>Некто   (25.01.05 11:35) [24]
>ну а в скорости работы со смаллинтом и int64 разницы разве нету?

Есть. int64 быстрее.


sniknik   (2005-01-25 11:41:00) [2]

> но верхний предел (32767) вот-вот наступит
если бы это было бы в access (или mssql, а может и там и там, не помню) то следующим за этим наступило бы -32768 и пошло увеличиваться до 0 а вот только потом, изза уникальности ключа (обычная практика) уже бы была ошибка (на 1 и то если она к тому времени сохранится).

а вот на FB не знаю (и пробовать неохота, хотя это просто), ведь там ты сам присваиваеш значение в генераторе, а сам он 8ми байтный... думаю если предусмотреть поведение аналогично access-овскому, то у тебя будет дополнительных 32768 значений (генератор переписат), если же нет то ошибка "переполнения" типа.
это если не рассматривать нормального решения (смена типа полю) и продолжать экономить на спичках.


Некто   (2005-01-25 11:40:00) [3]

Магнит   (25.01.05 11:37) [25]
а-ля Anatoly Podgoretsky

сам знаю что есть :-)


Магнит   (2005-01-25 11:37:00) [4]

есть! :-D


Некто   (2005-01-25 11:35:00) [5]

ну а в скорости работы со смаллинтом и int64 разницы разве нету?
:-))) уже самому смешно


Johnmen   (2005-01-25 11:32:00) [6]

>Некто   (25.01.05 11:31) [20]
>ну начальник сказал что надо смаллинт и всё-тут!!

Ты в армии переслужил, видимо...:)


Danilka   (2005-01-25 11:32:00) [7]

[17] Некто   (25.01.05 11:22)
> смаллинт - ради экономии ресурсов сервера и дискового пространства.....

Чего-то я не понял.. экономия в чем??? На твоих сегодняшних 8к записей экономится 16килобайт... если вообще экономится. А гемороя зато куча великая. Как это назвать? :))

> много ограничений в том числе и на то, что нельзя ничего
> использовать кроме смаллинта...

Ну, тогда, остается сесть и поплакать. :)

[20] Некто   (25.01.05 11:31)
> ну начальник сказал что надо смаллинт и всё-тут!!

Дык, пущщай тогда сам и разгребает, раз так сказал. :)


Магнит   (2005-01-25 11:31:00) [8]

>А рядом наверное кинох на пару десятков гиг валяется. 8-)
ага и ещё архив музыки!! :-)


Некто   (2005-01-25 11:31:00) [9]

Sergey13 ©   (25.01.05 11:28) [18]
точно))

ну начальник сказал что надо смаллинт и всё-тут!!


Johnmen   (2005-01-25 11:30:00) [10]

>Некто   (25.01.05 11:22) [17]
>смаллинт - ради экономии ресурсов сервера и дискового пространства.....

Извини, это несколько бредово...:)
Если считаешь иначе, расскажи, какие именно "ресурсы сервера" сэкономлены смоллинтом. И сколько конкретно дискового пространства.
Вобщем всё от лукавого..........


Sergey13   (2005-01-25 11:28:00) [11]

2[17] Некто   (25.01.05 11:22)
>смаллинт - ради экономии ресурсов сервера и дискового пространства.....
Вот и получили экономию. 8-)
А рядом наверное кинох на пару десятков гиг валяется. 8-)


Некто   (2005-01-25 11:22:00) [12]

смаллинт - ради экономии ресурсов сервера и дискового пространства.....
господи, ситуация синтетическая и много ограничений в том числе и на то, что нельзя ничего использовать кроме смаллинта...
вроде и таблица сравнительно пустая (5000-8000 записей), ввести ещё ой-ёй-ёй сколько записей можно, но верхний предел (32767) вот-вот наступит


Johnmen   (2005-01-25 11:07:00) [13]

Кроме smallint ещё существуют типы integer и bigint.


Danilka   (2005-01-25 11:07:00) [14]

[14] Некто   (25.01.05 11:00)
А есть какое-нибудь логическое объяснение, почему для этой таблицы в качестве суррогатного ПК выбрали именно СмаллИнт? :)
Думаю, единственный выход - переделать тип поля.


Некто   (2005-01-25 11:00:00) [15]

Видимо меня неправильно поняли.
Дело не совсем в генераторе (пускай он выдаёт столько, сколько ему угодно), а в поле smallint.
Ведь даже при отмене транзакции, которая вставляет запись, текущее значение генератора увеличивается.
Ну вот есть таблица, в которой, при встевке, частенько случаются эксепшны, транзакция откатывается, а значение генератора увеличивается. Такая таблица, к примеру, содержит 5000-8000 записей, всего лимит записей для таблицы 64К, а текущее значение генератора уже близко к 32767.


Johnmen   (2005-01-25 10:49:00) [16]

>Danilka ©   (25.01.05 10:28) [12]

Вот и я намекаю, что никогда не переполнится, и вопрос глупый, мягко говоря...:)


Danilka   (2005-01-25 10:28:00) [17]

[11] Johnmen ©   (25.01.05 09:26)
> Начиная с IB6 генератор 8-байтный.

Тогда, если по 20 новых записей в секунду, то наше солнце успеет остынуть, к тому времени, пока генератор закончится. :)


Johnmen   (2005-01-25 09:26:00) [18]

>Некто   (24.01.05 22:52) [2]
>smallint...например :-)

Пример неудачный.

Начиная с IB6 генератор 8-байтный.


Danilka   (2005-01-24 23:34:00) [19]

[8] jack128 ©   (24.01.05 23:27)
4294967295/20/60/60/24/365 = около семи лет. Однако, в таком случае кто мешает задействовать 2 генератора для генерации ПК? :))


Sergey_Masloff   (2005-01-24 23:32:00) [20]

jack128 ©   (24.01.05 23:27) [8]
Но тогда нет проблемы и с идентификаторами - кэш ПК спасает отца русской демократии ;-) Проблема, насколько я понял, встает когда исчерпан диапазон.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо