Доступ к базе данных с использованием максимального размера связанных таблиц

Я создал файл *.mdb (формат файла Access 2002–2003) и добавил в Access (с вкладки «Внешние данные» — Excel) базу данных ODBC. (который я настроил в 32-разрядной версии ODBC DataSource Administrator для указания на сервер базы данных MySQL), используя «Связать с источником данных, создав связанную таблицу».

Я знаю, что файл Access может быть макс. 2 ГБ.

Вопрос:

  1. Могу ли я в этой ситуации со связанными таблицами обойти максимальный порог доступа?
  2. Какой будет макс. порог, что из Access или из сервера MySQL?

Спасибо

Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
В этой статье мы рассмотрим, как включить доступ Java Lambda к экземпляру AWS RDS MySQL.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
59
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Однако существуют и другие ограничения, перечисленные в Спецификациях доступа. Например. количество полей в таблице (255) или количество столбцов и байтов в строках, возвращенных в запросе.

Обратите внимание, что бывают ситуации, когда одна или несколько таблиц полностью кэшируются в базе данных Access, и когда это превышает 2 ГБ, вы столкнетесь с проблемами. Хотя этот ответ в целом верен, использование Access с огромными базами данных по-прежнему является плохой идеей.

Erik A 13.02.2023 18:03

@ЭрикА. Это звучит очень удивительно для меня. Что это за ситуации?

Olivier Jacot-Descombes 14.02.2023 16:03

В голову не приходит по крайней мере следующее: формы, привязанные к наборам записей типа моментальных снимков, открытие таблиц и нажатие последней кнопки (ссылка), транзакционные запросы, которые невозможно перевести на SQL-сервер (например, слияние в стиле Access запросы через графический интерфейс). Мой личный подход заключается в том, чтобы свести к минимуму использование огромных таблиц либо для VBA и ADODB, либо для отфильтрованных транзитных запросов, которые не будут возвращать> 1 ГБ данных, и убедиться, что компактность при закрытии включена.

Erik A 14.02.2023 16:32

Бедный пользователь, которому приходится прокручивать 1 ГБ данных! :-( Я думаю, что этого можно избежать. 1) такой большой БД не означает, что отдельная таблица такая большая. 2) не предоставлять пользователю столько данных (например, использовать фильтры, пейджинг...). 3) использовать хранимые процедуры для обработки огромных объемов данных. В любом случае это будет намного быстрее, чем запросы Access (не сквозные) или код VBA.

Olivier Jacot-Descombes 14.02.2023 18:04

Как работает Access или программа на С++ или С# или vb.net для таких больших баз данных? Они ВСЕ одинаковы, и на самом деле действуют одинаково. И в Access нет никакой реальной разницы, скажем, с использованием С++ или С# для извлечения данных с сервера SQL. Если кто-то попытается получить 2 гигабайта данных за один раз, это вполне может привести к возникновению проблемы. Однако в моем ответе ниже я могу «перейти» к концу таблицы из 10 миллионов строк, размер которой, как показывает SQL-сервер, составляет около 3 гигабайт. И, как показывает мой ответ ниже, я могу преобразовать всю большую таблицу в эту форму, но не рекомендуется!!!

Albert D. Kallal 15.02.2023 00:27

Максимальный размер файла Access (*.mdb) составляет 2 ГБ. Связывание таблиц с базой данных MySQL не меняет этого ограничения. Максимальный размер базы данных MySQL зависит от ее конфигурации, но связанная таблица в Access по-прежнему будет ограничена 2 ГБ. Если вы имеете дело с большим объемом данных, рекомендуется разделить базу данных на более мелкие базы данных или рассмотреть возможность использования более надежной системы управления базами данных, такой как Microsoft SQL Server или MySQL.

MS Access не будет знать и не будет заботиться о размере таблицы для связанной таблицы, этот ответ неверен.

Shadow 13.02.2023 17:59

Другой ответ правильный, повторять его не нужно.

Shadow 13.02.2023 22:23

На самом деле, да, привязка к базе данных, такой как SQL или MySQL? У вас наверняка нет ограничения в 2 гигабайта - даже если ОДНА таблица больше 2 гигабайт - на снимках экрана в моем ответе выше показана форма, которая загрузила 10 миллионов строк. в то время как 10 миллионов строк данных в наши дни «маленькие», эта таблица имеет размер> 2 гигабайта. И обратите внимание, как быстро Access реагирует на открытие этой формы с помощью простого предложения «где» в VBA. Обратите внимание, что форма привязана НЕПОСРЕДСТВЕННО к таблице (без представлений, без хранимой процедуры или чего-либо вообще - но ТОЛЬКО связанная таблица). при открытии этой формы вообще нет заметной задержки.

Albert D. Kallal 15.02.2023 00:33
Ответ принят как подходящий

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

ДАЖЕ если вы привязываете форму напрямую к связанной таблице, ограничения не существует.

Итак, вот форма, основанная на связанной таблице, и связанная таблица имеет 10 миллионов строк (и SQL-сервер показывает, что размер ОДНОЙ таблицы превышает 2 гигабайта.

Обратите внимание, что скорость также мгновенная, и форма привязана НЕПОСРЕДСТВЕННО к этой связанной таблице с 10 миллионами строк. Нет никаких представлений, никаких хранимых процедур или чего-то еще. Здесь используется простая связанная таблица.

Обратите внимание, как форма с «фильтром» открывается мгновенно, и делает это без какого-либо специального кода, но с «общим» используемым предложением «где» команды открытия формы.

Код кнопки такой:

Private Sub Command5_Click()

   DoCmd.OpenForm "frmBigHistory", , , "id = " & Text2
      
   
End Sub

Теперь, если я открою эту форму, привязанную к таблице, без фильтра?

Он загружается мгновенно, но если я решу «перейти» к последней записи, тогда произойдет БОЛЬШАЯ сделка, но форма (примерно через 25 секунд) загрузится и загрузит весь набор данных.

Так вот это в действии (форма начинается с загрузки ВСЕХ 10 миллионов наборов данных, и я возвращаюсь к 1-й записи, а затем к последней.

Затем я показываю ту же форму (с 10 миллионами строк), которая запускается с фильтром, и тогда Access ТОЛЬКО извлекает ОДНУ запись с SQL-сервера с приведенным выше примером кода.

Итак, в этом примере база данных больше 2 гигов (около 7 гигов).

И эта одна таблица имеет размер более 2 гигов.

Другие вопросы по теме