Подтвердить что ты не робот

Максимальное количество строк в таблице движка базы данных MS Access?

Мы знаем, что механизм базы данных MS Access "дросселируется", чтобы обеспечить максимальный размер файла 2 ГБ (или, возможно, внутренне проводной, чтобы быть ограниченным меньшей, чем у 2 страниц с 4 КБ данных). Но что это означает в практическом плане?

Чтобы помочь мне измерить это, можете ли вы указать максимальное количество строк, которые могут быть вставлены в таблицу движка базы данных MS Access?

Чтобы удовлетворить определению таблицы, все строки должны быть уникальными, поэтому требуется уникальное ограничение (например, PRIMARY KEY, UNIQUE, CHECK, Data Macro и т.д.).

EDIT: Я понимаю, что существует теоретический предел, но меня интересует практический (и не обязательно практический) лимит реальной жизни.

4b9b3361

Ответ 1

Здесь моя попытка:

Я создал таблицу с одним столбцом (INTEGER) без ключа:

CREATE TABLE a (a INTEGER NOT NULL);

Вставить целые числа в последовательности, начиная с 1.

Я остановил его (произвольно через много часов), когда он вставил 65 632 875 строк. Размер файла составил 1,029,772 КБ.

Я сжал файл, который немного уменьшил его до 1,029,704 КБ.

Я добавил PK:

ALTER TABLE a ADD CONSTRAINT p PRIMARY KEY (a);

который увеличил размер файла до 1467 708 КБ.

Это говорит о том, что максимум составляет около 80 миллионов баллов.

Ответ 2

Некоторые комментарии:

  • Файлы Jet/ACE организованы на страницах данных, а это означает, что существует ограниченное пространство, когда границы записей не совпадают с вашими страницами данных.

  • Блокировка уровня строки значительно уменьшит количество возможных записей, поскольку она заставляет одну запись на страницу данных.

  • В Jet 4 размер страницы данных был увеличен до 4 Кбайт (от 2 Кбайт в Jet 3.x). Поскольку Jet 4 была первой версией Jet для поддержки Unicode, это означало, что вы могли бы хранить 1 ГБ двухбайтовых данных (т.е. 1 000 000 000 двухбайтовых символов) и с включенным сжатием Unicode, 2 ГБ данных. Таким образом, количество записей будет зависеть от того, включено ли сжатие Unicode.

  • Поскольку мы не знаем, сколько места в файле Jet/ACE занято заголовками и другими метаданными, а также точно, сколько занимает пространство для хранения пространства, теоретический расчет всегда будет под тем, что практичны.

  • Чтобы получить наиболее эффективное возможное хранилище, вы хотите использовать код для создания своей базы данных, а не для интерфейса доступа, поскольку Access создает определенные свойства, которые не нужны Jet Jet. Это не означает, что их много, поскольку свойства, установленные для параметров доступа по умолчанию, обычно не устанавливаются вообще (свойство создается только тогда, когда вы меняете его со значения по умолчанию - это можно увидеть путем циклического перехода через поле набор свойств, т.е. многие свойства, перечисленные для поля в дизайне таблицы Access, отсутствуют в коллекции свойств, поскольку они не были установлены), но вы можете ограничить себя конкретными типами данных Jet (поля гиперссылки например, доступны только для доступа).

Я просто потратил час на то, чтобы с помощью Rnd() заполнить 4 поля, определенные как байты типа, с составным PK на четырех полях, и потребовалось навсегда добавить достаточное количество записей, чтобы получить значительную часть 2GBs, При более чем 2 миллионах записей файл находился под 80 МБ. Я, наконец, ушел после достижения только 700K 7 MILLION записей, а файл сжат до 184 МБ. Количество времени, которое потребуется, чтобы встать около 2 ГБ, - это больше, чем я готов инвестировать!

Ответ 3

Как утверждали другие, это комбинация вашей схемы и количества индексов.

У друга было около 100 000 000 исторических цен на акции, ежедневные котировки закрытия, в MDB, который приблизился к пределу 2 Гб.

Он вытащил их, используя код, найденный в статье базы знаний Microsoft. Я был довольно удивлен, что любой сервер, который он использовал, не отключил его после первых 100 тыс. Записей.

Он мог просматривать любую запись за секунду.

Ответ 4

Прошло несколько лет с тех пор, как я в последний раз работал с Access, но большие файлы базы данных всегда имели больше проблем и были более склонны к коррупции, чем файлы меньшего размера.

Если файл базы данных не доступен только одному человеку или не хранится в надежной сети, вы можете обнаружить, что это проблема до достижения предела размера базы данных 2 ГБ.

Ответ 5

Мы не обязательно говорим о теоретических ограничениях здесь, мы говорим о реальных ограничениях на максимальный размер файла и схему базы данных размером 2 ГБ.

  • Является ли ваш db отдельной таблицей или множественный?
  • Сколько столбцов имеет каждая таблица?
  • Каковы типы данных?

Схема находится на четном основании с количеством строк в определении количества строк, которые вы можете иметь.

Мы использовали Access MDB для хранения экспорта данных MS-SQL для статистического анализа некоторыми нашими корпоративными пользователями. В этих случаях мы экспортировали нашу основную структуру таблиц, как правило, четыре таблицы с 20-150 столбцами, которые варьируются от ста байтов в строке до 8000 байт в строке. В этих случаях мы могли бы столкнуться с несколькими сотнями тысяч строк данных, допустимых PER MDB, которые мы отправили бы им.

Итак, я просто не думаю, что у этого вопроса есть ответ в отсутствие вашей схемы.

Ответ 6

Все зависит. Теоретически используется один столбец с 4 байтовым типом данных. Вы могли бы хранить 300 000 рядов. Но в базе данных, вероятно, много лишних затрат, даже если вы ничего не сделали. Я читал некоторые, где у вас могло бы быть 1.000.000 строк, но опять-таки все зависит от.

Вы также можете связать базы данных вместе. Ограничение себя только дисковым пространством.

Ответ 7

Практический = "полезный на практике" - так лучшее, что вы получите, является анекдотическим. Все остальное - это просто прототипирование и результаты тестирования.

Я согласен с другими - определение "максимального количества записей" полностью зависит от таблиц схемы - #, # полей, # индексов.

Еще один анекдот для вас: Недавно я ударил размер файла 1,6 ГБ с двумя основными хранилищами данных (таблицами) из 36 и 85 полей, соответственно, с некоторыми копиями подмножества в 3 дополнительных таблицах.

Кто заботится о том, уникальны ли данные или нет - только материал, если он говорит об этом. Данные - это данные - данные, если только дублирование не влияет на обработку указателем.

Общее количество строк, составляющих 1,6 ГБ, составляет 1,72 млн.

Ответ 8

При работе с четырьмя большими таблицами Db2 я не только нашел предел, но и заставил меня выглядеть очень плохо для босса, который думал, что я могу добавить все четыре таблицы (каждая с более чем 900 000 строк) в одну большую таблицу. реальный результат жизни заключался в том, что независимо от того, сколько раз я пробовал таблицу (у которой было ровно 34 столбца - 30 текста и 3 целых числа), выплелось бы какое-то загадочное сообщение "Невозможно открыть нераспознанный формат базы данных или файл может быть поврежден". Нижняя линия - менее 1500 000 записей и чуть больше 1,252,000 с 34 строками.