![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MS Access - поле типа "счетчик" [D7, Access]
UnDISCOvery © (2005-12-22 15:16:00)Привет,Мастера!
Подскажите - какое максимальное значение поля "счетчик"?
И что произойдет если кол-во записей превышает это значение?
Нарушиться ли уникальность индекса по этому полю?
UnDISCOvery (2005-12-23 14:07:00) [21]посчитай ...
sniknik © (22.12.05 21:50) [18]
- просто в самом аксесе поле счетчика определено именно длинным целым Long Integer (Default) Stores numbers from –2,147,483,648 to 2,147,483,647 (no fractions).
-4 байта только на инкремент ...
lost_delpher (2005-12-23 13:58:00) [22]Возможна ситуация - когда не превысит
UnDISCOvery (2005-12-23 13:54:00) [23]скорей всего база превысит макс. размер - и пойдут ошибки
lost_delpher (2005-12-23 13:51:00) [24]извиняюсь - надо вместо
rst![r] = i - rst![r] = 1
lost_delpher (2005-12-23 13:40:00) [25]Я не пойму зачем прикалываться?
вопрос очень актуальный - по крайней мере я обрабатывал большие объемы в АКЦЕССЕ и тогда возможна ситуация превышения счетчиком 2 миллиарда.
Может быть ситуация вставки и удаления большого числа строк
можно смоделировать ситуацию превышения -
создай таблицу - к примеру
код- счетчик
и любое поле
r - integerобзови ее скажем - er
и код в Акцессе
Public Sub errt()
Dim rst As DAO.Recordset, dbs As DAO.Database, i As double
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("er")
For i = 1 To 2147483647 +1
rst.AddNew
rst![r] = i
If i Mod 10000 = 0 Then
Debug.Print rst![kod] ' вывод в окно отладки значения счетчика каждые 1000
DoEvents
End If
Next i
End Sub
запусти эту прогу и через пару часов посмотри что произойдет
мне тоже интересно
и база у тебя совсем не вырастет
sniknik (2005-12-22 21:50:00) [26]> - в секунду 50 добавлений
не черезчур?... получается (в смысле удается 50 в сек положить)?
4 байта только на ингремент, т.е. год у тебя примерно 6 гигов...одного автоинкрмента ;о)
> и что произойдет при попытке добавить запись в базу размером 2 Гб?
проблемы начнутся немного раньше гдето на 1,7-1,8 гига базы сжатого размера (т.е. смотреть размер сразу после "сжатия - восстановления")
правда я проверял не на одиночных записях, а на "реальной работе" (имитации), начинались тормоза, слеты (AV в обьекте Jet) и вплоть до полного разрушения базы (восстановить не удалось).
но вообще надо это все еше проверять, я проверял на jet sp6, счас уже есть sp8. вышли из положения сделав поддержку архивных баз, т.е. та же самая база но туда нельзя писать только читать, рабочая получается одна для отчетов все найденные, и рекомендуем клиентам сливать все "лишние" данные до достижения критического обьема, который сами "назначили" в 1.5 гиг (с запасом ;).
UnDISCOvery (2005-12-22 18:35:00) [27]безусловно :)
я все понял - спасибо!
Anatoly Podgoretsky (2005-12-22 18:26:00) [28]1.576.800.000 только записей, а они же у тебя не размером в один байт?
UnDISCOvery (2005-12-22 18:20:00) [29]Anatoly Podgoretsky © (22.12.05 15:53) [4]
Выдай информацию по количеству добавлений в секунду на протяжении одного года.
Выдаю:
- в секунду 50 добавлений
- в минуту 3000
- в час 180.000
- в сутки 4.320.000
- в месяц 129.600.000
- в год 1.576.800.000
3 года работы - всего-то :)
А насчет лопнет это не шутка, есть ограничение на размер базы - 2 гб
и что произойдет при попытке добавить запись в базу размером 2 Гб?
Исключение? Или все повиснет нафиг?
sniknik (2005-12-22 18:03:00) [30]вообще уже должно бы "дойти", но нет почемуто, счас почту недавнюю мелкософта глянул... девелопер есть (уже и не бета вроде, бету еще наверное месяца четыре назад присылали, тестил) а ехпрешиона нет.
ну покрайней мере на две машины рядом можно поставить ;о))
Anatoly Podgoretsky (2005-12-22 17:53:00) [31]sniknik © (22.12.05 17:48) [12]
Не уверен, пока такой информации нет.
sniknik (2005-12-22 17:48:00) [32]> или GUI или BOL
ну... BOL можно и отдельно поставить. надеюсь. как в 2000м было.
sniknik (2005-12-22 17:46:00) [33]> Оно считает как Cardinal, это просто интерпритация его как Integer
;о), ну минус на самом деле есть чистая абстракция, видимость, глюк, "сдвиг" на последнем бите. ;о)
просто в самом аксесе поле счетчика определено именно длинным целым Long Integer (Default) Stores numbers from –2,147,483,648 to 2,147,483,647 (no fractions).
Anatoly Podgoretsky (2005-12-22 16:26:00) [34]sniknik © (22.12.05 15:59) [7]
Оно считает как Cardinal, это просто интерпритация его как Integer
Anatoly Podgoretsky (2005-12-22 16:24:00) [35]sniknik © (22.12.05 15:58) [6]
Так и есть, плюс есть ГУИ инструмент, но есть и плохие новости - или GUI или BOL
Johnmen (2005-12-22 16:15:00) [36]>не, оно "переваливает" в минус и дальше считает. специально проверял когдато.
тогда именно до 2 млрд, а потом минус...
sniknik (2005-12-22 15:59:00) [37]> тогда 2 миллиарда
не, оно "переваливает" в минус и дальше считает. специально проверял когдато.
sniknik (2005-12-22 15:58:00) [38]> то это 4 миллиарда, а если нет?
то тоже, но со знаком
> когда-нибудь это пройзойдет, ничто не вечно под луной :)
тебя это волновать уже лет сто как не будет... или собираешся жить вечно?
> А насчет лопнет это не шутка, есть ограничение на размер базы - 2 гб
чисто для информации, недавно узнал, новый MSDE 2005 (замена аксессу) бедет/есть поддерживать 4 гб. (на старый с тем же 2 гб. ограничением не слишком активно переходили... ;)
Johnmen (2005-12-22 15:55:00) [39]>а если нет?
тогда 2 миллиарда
:)
>когда-нибудь это пройзойдет, ничто не вечно под луной :)
Тебя тогда уже не будет на свете...:)
Anatoly Podgoretsky (2005-12-22 15:53:00) [40]UnDISCOvery (22.12.05 15:34) [3]
Выдай информацию по количеству добавлений в секунду на протяжении одного года.
А насчет лопнет это не шутка, есть ограничение на размер базы - 2 гб