Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Закончился диапазон, когда генератор выдаёт валидные....   Найти похожие ветки 

 
Некто   (2005-01-24 22:47) [0]

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


 
Anatoly Podgoretsky ©   (2005-01-24 22:51) [1]

Какая разряжность генератора, скорость ввода записей в секунду (среднее за год)


 
Некто   (2005-01-24 22:52) [2]

smallint...например :-)


 
Anatoly Podgoretsky ©   (2005-01-24 22:58) [3]

2 смилиона лет.


 
Sergey_Masloff   (2005-01-24 22:58) [4]

Менять разрядность. GEN_ID в интербейзе 32-разрядное целое генерит. Я думаю 4, миллиарда записей вставляются очень долго.


 
Desdechado ©   (2005-01-24 22:58) [5]

Видимо, у него обычный integer, т.е. около 2 млрд положительных значений.
Я иногда использую схему сброса генератора, в случае надобности короткоживущих уникальных значений:
gen_id( genName, -gen_id( genName, 0 ) )

А практика у всех разная...


 
Sergey_Masloff   (2005-01-24 23:08) [6]

Desdechado ©   (24.01.05 22:58) [5]
>Видимо, у него обычный integer, т.е. около 2 млрд положительных >значений
Да хоть необычный. Ты прикинь какой это объем базы даже если средняя длина записи байт 200. И это в одной таблице.
 Кстати у интеджера тоже четыре миллиарда, он же циклический... Никто ж не сказал что ПК обязан > 0 быть.


 
Некто   (2005-01-24 23:17) [7]

ну а если представить такую ситуацию, что нужно использовать в качестве ПК smallint и ничего кроме него использовать нельзя(и начинается отсчёт с -32768 и уже вот-вот подойдёт к критическому максимуму) и ещё интенсивность работы с таблицей очень большая....ситуация синтетическая, вопрос теоретический :-)


 
jack128 ©   (2005-01-24 23:27) [8]

Sergey_Masloff   (24.01.05 23:08) [6]
Ты прикинь какой это объем базы даже если средняя длина записи байт 200. И это в одной таблице.

ну например 20 раз в секунду я вставляю запись и 20 раз в секунду удаляю запись. Тогда размер таблички будет маленький ;-)


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

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


 
Danilka ©   (2005-01-24 23:34) [10]

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


 
Johnmen ©   (2005-01-25 09:26) [11]

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

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

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


 
Danilka ©   (2005-01-25 10:28) [12]

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

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


 
Johnmen ©   (2005-01-25 10:49) [13]

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

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


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

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


 
Johnmen ©   (2005-01-25 11:07) [15]

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


 
Danilka ©   (2005-01-25 11:07) [16]

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


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

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


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

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


 
Johnmen ©   (2005-01-25 11:30) [19]

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

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


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

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

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


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

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


 
Danilka ©   (2005-01-25 11:32) [22]

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

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

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

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

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

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


 
Johnmen ©   (2005-01-25 11:32) [23]

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

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


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

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


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

есть! :-D


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

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

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


 
sniknik ©   (2005-01-25 11:41) [27]

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

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


 
Johnmen ©   (2005-01-25 11:41) [28]

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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.041 c
3-1106228198
Ghost_
2005-01-20 16:36
2005.02.20
организация отчета


14-1107074354
Sniper-Max
2005-01-30 11:39
2005.02.20
Win9x, Win2K и сеть... тормозят в месте по сетке :(


14-1106945373
Луарвик
2005-01-28 23:49
2005.02.20
Ток не смейтесь!!! Вопрос по асму...


14-1106747016
Derevyanniy kak Rels
2005-01-26 16:43
2005.02.20
А вот как быть в таком случае ?


3-1106063063
Asail
2005-01-18 18:44
2005.02.20
Запрет на добавление новых записей через dbGrid ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский