有關MS Access數據庫的幾個問題 -MS Access的問題 - 可伸縮性/索引/交易
大小:訪問數據庫的大小是否有限制?我問的原因是我們有一個訪問數據庫,有一些簡單的表。數據庫的大小約爲1GB。當我對它進行查詢時,我發現它需要10多分鐘才能運行。
有了適當的索引,MS Access應該能夠處理這個問題還是有技術上的根本限制。
這是MS Access XP。
此外,MS Access是否支持數據庫事務,提交和回滾?
有關MS Access數據庫的幾個問題 -MS Access的問題 - 可伸縮性/索引/交易
大小:訪問數據庫的大小是否有限制?我問的原因是我們有一個訪問數據庫,有一些簡單的表。數據庫的大小約爲1GB。當我對它進行查詢時,我發現它需要10多分鐘才能運行。
有了適當的索引,MS Access應該能夠處理這個問題還是有技術上的根本限制。
這是MS Access XP。
此外,MS Access是否支持數據庫事務,提交和回滾?
你會在這裏得到很多不同的答案,但在我的意見中訪問只是沒有作爲一個可擴展的解決方案。它不能很好地處理多用戶情況,隨着您開始接近1Gb,穩定性開始成爲一個主要問題,實際上它不具備性能。
關於交易支援,請參閱this Microsoft Artic le。
此外,這裏是一篇文章,其中指出了limitations of access的絕大多數。
就我個人而言,我發現'可用'限制在幾百兆字節範圍內。
訪問是爲小型數據庫而設計的。對於路數,即那些不僅僅是你和一對夫婦,幾個人正在使用的東西,你應該看像SQL服務器,Oracle,DB2,MySQL的,等一個「真實」的RDBMS
編輯 - 見http://www.blueclaw-db.com/vb_transaction_processing.htm用於處理與Access交易的方式。顯然它不是本地的。
Access數據庫的最大大小爲2GB。您可以通過在其他文件中使用鏈接表來解決此問題,但是如果您已經遇到性能問題,那麼可能需要使用更強大的數據庫了。
我的建議是查看SQL Server Compact,這是一個免費的基於文件的數據庫,或者更好的是,它是一個免費的「lite」版SQL Server,它將支持多個用戶以及與SQL Server的互操作性。兩者都將您限制爲4GB數據庫。
提到的所有產品(包括Access)都支持交易。
回答 -
大小:Access數據庫的最大大小是2GB。
Transactions:交易完全由基礎JET數據庫引擎支持。
從過去的經驗來看,我傾向於說你可能達到了最大可用大小,應該考慮升遷到SQL Server Express。
我不確定他們是否還在XP版本,但在Access 97中,有緊湊和修復選項。如果這些仍然是選項,它們可能會有所幫助。
雖然這是回溯多年的時間,但進入SQL Server安裝的成本與Oracle一樣令人望而卻步,我的一位客戶正在使用Access來嘗試管理入站呼叫中心。
我們正在討論VLDB--超大型數據庫概念4000萬行。這是在電話公司推出呼叫者ID並向其訂戶提供接收免費呼叫者ID設備的方式的時代。由於成本上的限制,他們不得不忽視我對SQL Server投資的請求。
在實踐中,似乎Access大約在800MB。我們將表分區成多個Access數據庫來處理負載。信不信由你,它運作得非常好。客戶很感激。
在實踐中,考慮到SQL Express的可用性,我也會推薦去那條路線。
多年來,通過閱讀Access新聞組,我的印象是現在只有在使用MS Access作爲基於RAD表單的開發環境時才推薦使用ACE/Jet引擎(.accdb,.mdb或.mde文件) 。如果您沒有Access前端,那麼在考慮更具擴展性(和功能)的備選方案時,很少有贊成ACE/Jet後端的參數:用於MS商店,MySQL的SQL Server Express或SQL Server Compact Edition,等等。
由於在ACE/Jet引擎中支持事務處理,所以它是存在的並且是本地的。另一個答案與一篇關於通過DAO使用交易的文章相關:請注意,DAO的許多方面都是有限的,因爲它的發展滯後於引擎和交易,就是一個例子。令人高興的是,您可以使用SQL DCL:BEGIN TRANSACTION,COMMIT TRANSACTION,ROLLBACK TRANSACTION等來完成DAO無法實現的功能,例如,嵌套事務。 SQL DCL要求Access接口處於ANSI-92查詢模式;使用ADO將工作,因爲ADO本身使用此模式。有關詳細信息,請參閱:
射流可爲任意數量的桌面開發平臺非常不錯的數據存儲,而不是僅僅與Access本身。它始終是VB開發人員的首選,並且仍然是(出於很好的理由)。
預計不會增長很多的1GB MDB在速度或可靠性方面不成問題。如果速度很慢,那麼你沒有對它進行索引,或者你正在編寫非常低效的SQL。低效SQL的一個例子是將WHERE子句表達式,因此不能使用索引 - 一個例子是
WHERE Year([MyTable].[MyDate]) = 2002
,而不是
WHERE MyTable.MyDate Between #1/1/2002# And #12/31/2002#
如果您遇到穩定性問題(即反覆發生的腐敗),這是一個需要解決的問題 - 通常是由於人爲錯誤,硬件問題或軟件問題(如AV軟件干擾內部Jet寫入操作)。
但是關鍵的決定因素是MDB的發展速度有多快。如果您推斷出歷史增長率並在5年內接近2GB,我會說你需要很快升值。如果它更像是10年,那麼無論如何你都應該這樣做。如果是20年,那麼不是那麼多。
隨Office XP一起提供的Access版本稱爲Access 2002. – 2008-10-08 16:44:21
它也稱爲Access XP; Access 2003與Office 2k3一起推出 – warren 2008-10-14 19:20:03
它僅被不知道Microsoft使用的官方應用程序名稱的最終用戶稱爲Access XP。它是Access 2002。Microsoft從來沒有任何產品稱爲Access XP。 – 2008-10-24 02:43:44