powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что за прикол? О макс. размере таблицы и количестве записей..
13 сообщений из 13, страница 1 из 1
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761192
bill1972
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некая программа, импортирующая записи из текстовых файлов в dbf-таблицу. Так вот, когда размер таблицы становится равным 1.99 Гбайт, программа срывается. Файловая система - NTFS. Далее я попробовал в таблицу добавить записи вручную - сделал append from из этой же таблицы. После этого Count говорит, что число записей удвоилось. Но размер файла при этом не увеличился, остался равным 1.99 Гб.
Чтобы это все значило?
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761218
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это физический предел для таблиц DBF и файлов FPT, CDX. Системное ограничение.

Таблицы не могут иметь размер более 2ГБ.

Количество записей хранится в заголовке таблицы, поэтому один из видов повреждения таблиц - это несоответсвие количества записей сохраненное в заголовке и реальное количество записей
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761258
bill1972
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть в этом случае получается, что при добавлении записей в таблицу, имеющую макс. размер 2 Гб, таблица повреждается.
А что можно сделать в этой ситуации? Есть ли другой выход, кроме как сливать данные в другую таблицу при достижении макс.размера имеющейся?
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761287
bill1972
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть в этом случае получается, что при добавлении записей в таблицу, имеющую макс. размер 2 Гб, таблица повреждается.
А что можно сделать в этой ситуации? Есть ли другой выход, кроме как сливать данные в другую таблицу при достижении макс.размера имеющейся?
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761434
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как сказал владимир это связано с заголовком дбф таблицы
в него записываеться размер таблицы
под это отведено несколько байт поэтому нельзя поместить число свыше определенного в эти байты
таковы особенности дбф формата
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761600
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leaf
Он вышел на предел не по количеству записей, а по объему данных в байтах. Под счетчик записей отводится 4 байта. Т.е. теоретически, туда можно записать до 2млрд. Хотя системным ограничением явялется 1млрд записей.

bill1972
Это никак не обойти. Это системное ограничение DBF-таблиц. Только разделением на несколько таблиц. Не обязательно по записям (первая таблица-100 записей, вторая - следующие 100). Можно делить по полям: первая таблица - первые 10 полей, вторая таблица - следующие 10 полей+ID и т.п.

Еще раз напомню системные ограничения DBF-таблиц:

Количество записей - до 1млрд (1 и девять нулей)
Объем - до 2ГБ

Ограничение в 2ГБ относится также и к мемо-полям. Т.е. файл FPT также не может быть больше 2ГБ
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32761956
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi ВладимирМ!

На самом деле нету явного ограничения на число записей - оно просто "само
собой" вытекает из ограничения на размер dbf-а. Учитывая что минимально
запись может занимать 2 байта (например поле С(1) и ещё 1 байт на пометку об
удалении). Кстати в таком "вырожденном" случае реально помещается в таблицу
чуть больше чем "ровно 1 миллиард записей".

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32762022
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi ВладимирМ!

На самом деле нету явного ограничения на число записей - оно просто "само
собой" вытекает из ограничения на размер dbf-а. Учитывая что минимально
запись может занимать 2 байта (например поле С(1) и ещё 1 байт на пометку об
удалении). Кстати в таком "вырожденном" случае реально помещается в таблицу
чуть больше чем "ровно 1 миллиард записей".


Посмотрите форум, здесь кто - то уже приводил ссылку на MSDN library где были описаны все ограничения таблиц. Кроме того Ken Levy заявил в одном из своих обращений к народу, что по политическим соображениям (у нас же есть MS SQL Server ) это ограничение не будет снято, не смотря на давление прогрессивного FoxPro сообщества в 9 версии... Ну а про 10 версию пока ходят очень нехорошие слухи
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32762394
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Sergey Ch!

Зачем мне смотерть, я и так знаю где это описано (Visual FoxPro System
Capacities) - только это неправда :) Сам попробуй:
[SRC]CREATE TABLE test1 FREE (cDummy C(1))
FOR ln1 = 1 TO 1073741659
APPEND BLANK
ENDFOR
? RECCOUNT("test1")
[src]Как видишь записей там > 1 billion

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32762409
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Sergey Ch!

Зачем мне смотерть, я и так знаю где это описано (Visual FoxPro System
Capacities) - только это неправда :) Сам попробуй:
[SRC]CREATE TABLE test1 FREE (cDummy C(1))
FOR ln1 = 1 TO 1073741659
APPEND BLANK
ENDFOR
? RECCOUNT("test1")
[src]Как видишь записей там > 1 billion

Posted via ActualForum NNTP Server 1.1
В последнее время я стал консервативен - написаны требования, значит в пределах этих требований все и надо делать... Тяга к экспериментам меня уже крупно пару раз подставляла... Особенно использование недокументированных функций и возможностей...

Удачи Вам в Ваших изысканиях.
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32762423
BNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, не скажите :) Изыскания бывают весьма полезны. Когда год назад переходил на 8-ку, "наступил" на проблему "крякозябр" в отчетах с некоторыми шрифтами. Не знаю, может эта проблема уже решена как-то иначе, но мне пришлось писать проджет хук, "исправляющий" отчеты перед компиляцией. Без этого до сих пор сидел бы на 7-ке... Интересно, как там с русскими шрифтами в отчетах VFP9?...
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32762562
bill1972
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо всем за ответы, особенно Владимиру.
Целью задачи было запихнуть в таблицу с максимально возможной скоростью данные из текстовых файлов, чтобы иметь возможность получить отчеты, с выбором по одному из полей. При минимальных значениях размеров полей в одну табличку влезет 20 млн. записей, а надо минимум в 10 раз больше. Если разделить на несколько таблиц, велика вероятность значительного снижения скорости выполнения запросов. Вариант с сервером уже сейчас используется как основной. Но хотелось вынести отдельно одну задачку, с тем еще, чтоб освободить ресурсы сервера.
Похоже, вариант с DBF таблицей в данном случае не прокатит.
...
Рейтинг: 0 / 0
Что за прикол? О макс. размере таблицы и количестве записей..
    #32764186
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi bill1972!

Вообще-то такие объёмы потребуют нехилого сервера. А возможности фокса
далеко не исчерпываются ограничениями в 2Гб. как и в больших серверах тут
можно использовать идеи партиционирования - т.е. разделения таблицы (по
горизонтали) используя одно из полей как ключ! например - имеем поле
"дата" - можно разделить таблицу по годам, или по месяцам - тогда запрос на
выборку данных "за период" не потребует обработки всех таблиц набора, а лишь
нескольких. Или имеем поле "владелец" - разбивая по первому символу этого
поля - опять таки масса запросов сведётся к запросу всего из одного-максимум
2-х dbf-ов.
В общем если как следует проанализировать саму задачу, то всегда можно найти
удовлетворительное решение.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что за прикол? О макс. размере таблицы и количестве записей..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]