Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access количество записей в таблице

Максимальное количество строк в таблице MS Access database engine?

мы знаем, что MS Access database engine «дросселирован», чтобы позволить максимальный размер файла 2 ГБ (или, возможно, внутренне проводной, чтобы быть ограниченным менее чем некоторой мощностью 2 из 4KB страниц данных). Но что это означает на практике?

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

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

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

8 ответов

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

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

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

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

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

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

вот моя попытка:

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

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

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

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

что увеличило размер файла до 1,467,708 КБ.

это предполагает, что максимум где-то около 80 миллионов марок.

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

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

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

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

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

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

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

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

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

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

Читать еще:  Ключ от офис 365 2020

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

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

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

Practical = ‘полезно на практике’ — так что лучшее, что вы собираетесь получить, это анекдотический. Все остальное-просто прототипы и результаты тестирования.

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

еще один анекдот для вас: недавно я ударил размер файла 1.6 GB с 2 первичными хранилищами данных (таблицами), 36 и 85 полей соответственно, с некоторыми копиями подмножеств в 3 дополнительных таблицах.

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

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

при работе с 4 большими таблицами Db2 я не только нашел предел, но это заставило меня выглядеть очень плохо для босса, который думал, что я могу добавить все четыре таблицы (каждая с более чем 900 000 строк) к одной большой таблице. реальный результат жизни заключался в том, что независимо от того, сколько раз я пробовал таблицу (которая имела ровно 34 столбца — 30 текстовых и 3 целых), выплюнет какое-то загадочное сообщение «не удается открыть базу данных непризнанного формата или файл может быть поврежден». Итог меньше, чем 1,500,000 записи и чуть больше, чем 1,252,000 с 34 строками.

IT IS MY LIFE…

Уверен, кому-то приведенная здесь задача покажется простой, ну а для тех, кто как я пользуется MS Access от случая к случаю, может и пригодиться.

Имеется два столбца. Данные могут повторяться как в первом, так и во втором столбце, также могут повторяться пары значений первого и второго столбца. Требуется выяснить может ли в рамках одного значения первого столбца быть несколько разных значений из второго столбца .

В первом столбце буквы (letter), во втором — цифры (number). Теперь разберемся есть ли случаи, когда одной и той же букве соответствует два и больше разных значений цифр.

Затем необходимо перейти в режим SQL-запросов и после SELECT указать оператор DISTINCT должно получиться вот так:

Далее приступаем к формированию запроса для подсчета числа строк с одинаковым значением в первом столбце, а так как на предыдущем шаге мы удалили дубли, то суммарное действие первого и второго запросов даст ответ на поставленную задачу — может ли в рамках одного значения первого столбца быть несколько разных значений из второго столбца. Для этого в конструкторе запросов берем первый запрос и выбираем оба столбца для вывода:

В контекстном меню выбираем Итоги :

Делаем группировку по первому столбцу, подсчет ( Count ) по второму и для второго же столбца в качестве условия отбора ставим «больше единицы»:

Запускаем запрос и получаем решение задачи:

Т.е. в нашем примере для BBB и CCC есть два различных значения во втором столбце. Если бы у нас была потребность определить разные значения какого-либо параметра не в рамках значений какого-то одного столбца, а в рамках группы значений разных столбцов, то, соответственно, группировку следовало бы указать для всех этих столбцов, а Count, как и в данном примере, только для подсчитываемого параметра.

В общем-то на этом все. Можно еще вывести информацию о том, какие именно разные значения второго столбца соответствуют BBB и CCC . Объединяем последний запрос с исходной таблицей:

Итоговый запрос из базы данных Access

Запросы позволяют не только выбирать записи из таблиц Access, но и вычислять различные статистические параметры. Например, можно подсчитать суммарное количество контактов и вывести даты первого и последнего контакта с каждым из людей, включенных в таблицу Контакты. Чтобы построить такой запрос в режиме конструктора, выполните следующие действия.

1. В окне базы данных щелкните на кнопке Запросы.

2. Дважды щелкните на значке Создание запроса в режиме конструктора.

3. В открывшемся окне диалога (рис. 17.6) выделите строку Контакты.

4. Щелчком на кнопке Добавить добавьте выбранную таблицу в верхнюю область конструктора запроса.

Читать еще:  Активация офис 360

5. Выделите пункт Список и снова щелкните на кнопке Добавить.

6. Щелчком на кнопке Закрыть закройте окно диалога Добавление таблицы. Списки полей двух таблиц, соединенные линией связи, появятся в окне конструктора.

7. Щелкните на кнопке Групповые операции панели инструментов. В бланке запроса появится дополнительная строка Групповая операция, позволяющая выполнять статистические операции со значениями конкретных полей.

Рис. 17.6 . Добавление таблицы

8. Перетащите поле Фамилия в ячейку Поле первого столбца конструктора.

9. В ту же ячейку второго столбца перетащите поле Имя таблицы Контакты.

10. В третий, четвертый и пятый столбцы бланка запроса перетащите поле Дата таблицы Список (рис. 17.7).

Рис. 17.7. Запрос с групповыми операциями

11. В раскрывающемся списке ячейки Групповая операция третьего столб ца бланка запроса выберите пункт Min.

12. В той же ячейке четвертого столбца выберите пункт Мах.

13. В пятом столбце задайте групповую операцию Count. Групповые операции построенного запроса обработают все записи таблицы Список, соответствующие конкретному человеку из таблицы Контакты, и вместо самих данных таблицы Список выведут в соответствующее поле результата запроса только значение величины, вычисляемой по определенной формуле. Доступные групповые операции перечислены в табл. 17.1.

ТАБЛИЦА 17.1 . Групповые операции

Примечание Поскольку в пятом поле запроса вычисляется количество записей, в ячейку Поле этого столбца можно поместить любое поле таблицы Список.

14. Щелкните на кнопке Вид, чтобы выполнить запрос. Появится таблица с пятью столбцами. Два первых столбца содержат фамилии и имена людей. По ним выполняется группировка, то есть расчет значений остальных полей запроса выполняется для записей таблицы Список, сопоставляемых с одним человеком. Как уже говорилось выше, соответствие контакта таблицы Список и человека из таблицы Контакты определяется полями Код_Контакты, с помощью которых осуществляется связь этих двух таблиц. Третий и четвертый столбцы запроса выводят соответственно дату первого (функция Min) и последнего (функция Мах) контакта с данным человеком. Пятый столбец содержит количество записей в таблице Список (функция Count), соответствующих. данному человеку, то есть число контактов с ним. Единственный недостаток построенного запроса — это непонятные имена столбцов. Давайте скорректируем их.

15. Щелчком на кнопке Вид вернитесь в конструктор запроса.

16. В ячейке Поле третьего столбца замените имя Дата на текст Дата первого контакта: Дата. Правая часть этого выражения, расположенная правее двоеточия, по-прежнему задает имя поля, а левая определяет название столбца результата запроса. Таким образом, любому столбцу запроса можно назначить произвольное имя.

17. В ячейке Поле четвертого столбца введите Дата последнего контакта: Дата.

18. В первой строке пятого столбца бланка запроса введите Число контактов: Дата.

Примечание К сожалению, подобный прием не подходит для смены названия поля, значение которого не вычисляется, а передается из таблицы. То есть таким способом не удастся переименовать поле Имя.

19. Снова щелкните на кнопке Вид.

20. Закройте запрос.

21. Для сохранения изменений структуры щелкните на кнопке Да.

22. В окне диалога Сохранение введите имя Итоговый запрос и щелкните на кнопке ОК.

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

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

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

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

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

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

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

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

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

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

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

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

Файлы 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 ГБ, — это больше, чем я готов инвестировать!

Иллюстрированный самоучитель по Microsoft Access 2002

Вычисление процентов. Нумерация записей и подсчет количества записей в отчете.

Иногда в отчете требуется вывести проценты, которые составляют конкретные значения в общей или частичной итоговой сумме. В отчетах Access можно создавать такие поля. Для этого в области данных создается вычисляемое поле, значение которого определяется выражением типа = [Стоимость ]/ [Общая стоимость], т.е. нужно меньшее значение разделить на большее. Свойство Формат (Format) для этого поля нужно установить равным Процентный (Percent).

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

Access обеспечивает возможность таких расчетов за счет того, что отчет формируется в два этапа. На первом этапе вычисляются поля в области данных, итоговые значения для групп и для отчета в целом и определяется длина отчета. Во время второго этапа вычисляются все выражения, которые ссылаются на итоги, рассчитанные во время первого этапа.

Пример использования полей, содержащих процент от итогового значения, вы можете найти в отчете «Продажи по сотрудникам и странам» (Employee Sales by Country) базы данных «Борей» (Northwind).

Нумерация записей и подсчет количества записей в отчете

Свойство Сумма с накоплением (Running Sum), которое мы рассматривали выше, может быть использовано еще одним, несколько неожиданным способом. Оно используется для нумерации записей (строк) в отчете. Если форма отчета требует, чтобы строки отчета были пронумерованы, для этого придется создать вычисляемое поле, свойство Данные (Control Source) которого определяется выражением: =1, а свойство Сумма с накоплением (Running Sum) нужно установить равным Для всего (Over All) или Для группы (Over Group), если требуется нумерация записей в пределах группы. Тогда при печати отчета значение этого поля будет увеличиваться на единицу для каждой новой записи. Пример нумерации записей описанным образом вы можете увидеть в отчете «Продажи по годам» (Sales by Year) базы данных «Борей» (Northwind).

Иногда в отчете требуется сосчитать количество записей, содержащихся в каждой группе, например количество заказов у каждого клиента или количество счетов, выписанных сотрудником отдела продаж. Такое значение так же, как и итоговая сумма, обычно выводится в примечании группы. Для того чтобы его отобразить, нужно в области данных создать вычисляемое поле, которое будет содержать номер строки (как это описано выше), и сделать это поле невидимым, т. е. его свойству Вывод на экран (Visible) присвоить значение Нет (No). Затем в области примечания группы нужно создать вычисляемое поле, свойство Данные (Control Source) которого должно ссылаться на это невидимое поле. Примеры таких полей приводятся на рис. 10.26.


Рис. 10.26. Подсчет числа записей в группе

Если требуется подсчитать общее количество записей в отчете, то тогда просто создается одно вычисляемое поле в разделе заголовка или примечания отчета, у которого свойство Данные (Control Source) устанавливается равным выражению =Count(*).

Ссылка на основную публикацию
Adblock
detector