2008-10-07 27 views
3

有關MS Access數據庫的幾個問題 -MS Access的問題 - 可伸縮性/索引/交易

大小:訪問數據庫的大小是否有限制?我問的原因是我們有一個訪問數據庫,有一些簡單的表。數據庫的大小約爲1GB。當我對它進行查詢時,我發現它需要10多分鐘才能運行。

有了適當的索引,MS Access應該能夠處理這個問題還是有技術上的根本限制。

這是MS Access XP。

此外,MS Access是否支持數據庫事務,提交和回滾?

+0

隨Office XP一起提供的Access版本稱爲Access 2002. – 2008-10-08 16:44:21

+0

它也稱爲Access XP; Access 2003與Office 2k3一起推出 – warren 2008-10-14 19:20:03

+0

它僅被不知道Microsoft使用的官方應用程序名稱的最終用戶稱爲Access XP。它是Access 2002。Microsoft從來沒有任何產品稱爲Access XP。 – 2008-10-24 02:43:44

回答

4

你會在這裏得到很多不同的答案,但在我的意見中訪問只是沒有作爲一個可擴展的解決方案。它不能很好地處理多用戶情況,隨着您開始接近1Gb,穩定性開始成爲一個主要問題,實際上它不具備性能。

關於交易支援,請參閱this Microsoft Artic le。

此外,這裏是一篇文章,其中指出了limitations of access的絕大多數。

+0

在設計良好的訪問數據庫中的穩定性不會受到1GB的影響 – JohnFx 2008-11-12 03:39:45

+0

Access中每個數據庫的限制爲2GB - 而且我個人認爲性能開始下降得更快,尤其是一次只有幾個用戶同時登錄 – warren 2008-11-13 02:42:50

0

就我個人而言,我發現'可用'限制在幾百兆字節範圍內。

訪問是爲小型數據庫而設計的。對於路數,即那些不僅僅是你和一對夫婦,幾個人正在使用的東西,你應該看像SQL服務器,Oracle,DB2,MySQL的,等一個「真實」的RDBMS

編輯 - 見http://www.blueclaw-db.com/vb_transaction_processing.htm用於處理與Access交易的方式。顯然它不是本地的。

0

Access數據庫的最大大小爲2GB。您可以通過在其他文件中使用鏈接表來解決此問題,但是如果您已經遇到性能問題,那麼可能需要使用更強大的數據庫了。

我的建議是查看SQL Server Compact,這是一個免費的基於文件的數據庫,或者更好的是,它是一個免費的「lite」版SQL Server,它將支持多個用戶以及與SQL Server的互操作性。兩者都將您限制爲4GB數據庫。

提到的所有產品(包括Access)都支持交易。

2

回答 -

大小:Access數據庫的最大大小是2GB。

Transactions:交易完全由基礎JET數據庫引擎支持。

從過去的經驗來看,我傾向於說你可能達到了最大可用大小,應該考慮升遷到SQL Server Express。

0

我不確定他們是否還在XP版本,但在Access 97中,有緊湊和修復選項。如果這些仍然是選項,它們可能會有所幫助。

0

雖然這是回溯多年的時間,但進入SQL Server安裝的成本與Oracle一樣令人望而卻步,我的一位客戶正在使用Access來嘗試管理入站呼叫中心。

我們正在討論VLDB--超大型數據庫概念4000萬行。這是在電話公司推出呼叫者ID並向其訂戶提供接收免費呼叫者ID設備的方式的時代。由於成本上的限制,他們不得不忽視我對SQL Server投資的請求。

在實踐中,似乎Access大約在800MB。我們將表分區成多個Access數據庫來處理負載。信不信由你,它運作得非常好。客戶很感激。

在實踐中,考慮到SQL Express的可用性,我也會推薦去那條路線。

0

多年來,通過閱讀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本身使用此模式。有關詳細信息,請參閱:

Advanced Microsoft Jet SQL for Access 2000

-1

射流可爲任意數量的桌面開發平臺非常不錯的數據存儲,而不是僅僅與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年,那麼不是那麼多。