Вопросы MS Access - Масштабируемость / индексация / транзакции

StackOverflow https://stackoverflow.com/questions/179768

  •  05-07-2019
  •  | 
  •  

Вопрос

Несколько вопросов о базах данных MS Access -

Размер. Существуют ли ограничения на размер базы данных доступа? Причина, по которой я спрашиваю, состоит в том, что у нас есть база данных доступа с несколькими простыми таблицами. Размер БД составляет около 1 ГБ. Когда я делаю запрос по нему, я вижу, что это занимает более 10 минут для запуска.

При правильном индексировании MS Access сможет справиться с этим или существуют фундаментальные ограничения для технологии.

Это MS Access XP.

Кроме того, MS Access поддерживает транзакции БД, фиксацию и откат?

Это было полезно?

Решение

Здесь вы получите много разных ответов, но в МОЕМ МНЕНИИ доступ не является просто масштабируемым решением. Он не очень хорошо справляется с многопользовательскими ситуациями, когда вы начинаете приближаться к размеру 1 Гб, стабильность начинает становиться главной проблемой, и в действительности у нее просто нет производительности.

Что касается поддержки транзакций, см. этот Microsoft Artic файл.

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

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

В ответ -

Размер: максимальный размер базы данных Access составляет 2 ГБ.

Транзакции: Транзакции полностью поддерживаются базовым механизмом базы данных JET.

Из прошлого опыта я склонен сказать, что вы, вероятно, достигли максимально допустимого размера и, возможно, стоит подумать об увеличении размера до SQL Server Express.

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

Доступ разработан и предназначен для небольших баз данных. Для больших, то есть тех, которые находятся за пределами того, что вы и пара-несколько человек используете, вы должны смотреть на «реальный» СУБД, такие как SQL Server, ORacle, DB2, MySQL и т. Д.

РЕДАКТИРОВАТЬ - см. http: //www.blueclaw-db .com / vb_transaction_processing.htm для способа обработки транзакций с помощью Access. Видимо это не родной.

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

Я рекомендую посмотреть на SQL Server Compact , это бесплатная база данных на основе файлов или, что еще лучше, SQL Server Express , который является бесплатным, " облегченным " версия SQL Server, которая будет поддерживать несколько пользователей и совместимость с SQL Server. Оба ограничивают вас 4 ГБ баз данных.

Все упомянутые продукты, включая Access, поддерживают транзакции.

Я не уверен, что они все еще есть в версии XP, но в Access 97 были варианты компактности и восстановления. Если это все еще варианты, они могут помочь.

Хотя это происходит уже много лет назад, когда стоимость входа в установку SQL Server была такой же непомерно высокой, как у Oracle, один из моих клиентов использовал Access для управления входящим колл-центром.

Речь идет о концепциях очень больших баз данных VLDB - 40 миллионов строк. Это было в эпоху, когда телефонные компании выкатывали идентификаторы вызывающих абонентов и предлагали своим абонентам способ получения бесплатного идентификатора вызывающего абонента. Из-за ценовых ограничений им пришлось игнорировать мои просьбы сделать инвестиции в SQL Server.

На практике казалось, что Access потерял около 800 МБ. Мы разбили таблицы на несколько баз данных Access, чтобы справиться с нагрузкой. Хотите верьте, хотите нет, это работало прекрасно. Клиент был благодарен.

На практике, учитывая наличие SQL Express, я бы тоже рекомендовал пойти по этому пути.

Мое впечатление от чтения групп новостей Access за эти годы заключается в том, что механизм ACE / Jet (файл .accdb, .mdb или .mde) в настоящее время рекомендуется только при использовании MS Access в качестве среды разработки на основе форм RAD с использованием связанных форм. Если у вас нет клиентской части Access, то есть мало аргументов в пользу серверной части ACE / Jet при рассмотрении гораздо более масштабируемых (и функциональных) альтернатив: SQL Server Express или SQL Server Compact Edition для магазинов MS, MySQL, и т. д.

Что касается поддержки транзакций в движке ACE / Jet, то да, он присутствует и является родным. Другой ответ, связанный со статьей об использовании транзакций через DAO: обратите внимание, что многие аспекты DAO ограничены, потому что его разработка отстает от механизма и транзакций - один из примеров. К счастью, вы можете использовать SQL DCL: BEGIN TRANSACTION, COMMIT TRANSACTION, ROLLBACK TRANSACTION и т. Д., Чтобы выполнить то, что невозможно с DAO, например. вложенные транзакции. SQL DCL требует, чтобы интерфейс доступа находился в режиме запросов ANSI-92; использование ADO будет работать, потому что ADO использует этот режим изначально. Для получения дополнительной информации см .:

Расширенный Microsoft Jet SQL для Access 2000

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

MDB 1 ГБ, который, как ожидается, не будет сильно расти, не должен быть проблемой с точки зрения скорости или надежности. Если он медленный, значит, вы неправильно его проиндексировали или пишете очень неэффективный SQL. Примером неэффективного SQL было бы применение выражений WHERE к выражениям, которые поэтому не могут использовать индексы - примером будет

WHERE Year([MyTable].[MyDate]) = 2002

в отличие от

WHERE MyTable.MyDate Between #1/1/2002# And #12/31/2002#

Если у вас есть проблемы со стабильностью (т. е. периодическое повреждение), это проблема, которую необходимо решить - обычно это происходит из-за человеческих ошибок, аппаратных проблем или проблем с программным обеспечением (например, программное обеспечение AV мешает выполнению внутренних операций записи Jet) .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top