access连接mysql很慢_怎么解决ACCESS数据库太大造成运行慢的问题?
HUH函數
1.時候在使用Access文件的時候,隨著增刪改的不斷的連續,會導致文件越來越大。即使手動刪除或者使用delete語句刪除了大量的數據記錄,會發現文件的大小依然沒有減掉,而且隨著你再往里寫數據,又會增大。2.產生這個現象的原因跟Access本身的機制有關,具體也不清楚,好像是有什么歷史記錄還是什么存儲碎片。ACCESS數據庫在進行刪除操作后,并不從該數據庫中把數據清除掉,而是刪除其索引相關的東西,雖然顯示不出來,但是那些東西還是在文件中存在的,所以會引起ACCESS數據庫文件越來越大。即使是我們不通過代碼來訪問access文件,而只是通過用戶界面訪問,隨著文件的增大,也會帶來一系列的問題。其癥狀包括:對象可能打開得更慢,查詢可能比正常情況下運行的時間更長,各種典型操作通常似乎也需要使用更長時間。更何況如果在網站應用中,采用的是Access作為數據庫的話,這里就有了性能上的問題。文件越來越大,會影響查詢的速度,而且ACCESS是采用獨占方式工作的,也就是說一次只能一個進程打開這個數據庫執行操作,如果是多個用戶的話就要"排隊"了,所以ACCESS數據庫如果變為很大的話,執行一個查詢時間就會變長,而進程"排隊"的等待時間也就會變得很久,專業型的數據庫就不同,可以同時接收多個并發的訪問,可以采用SQL數據庫或其它大型并發數很強的數據庫。3.但是很多時候我們是需要Access文件,往不同的地方拷貝的,比如說,一個Server上生成了一個Access文件,需要拷貝到另外的Server上,而且Server間如果網速不是很好的話,會需要很長的時間來傳輸這個文件。所以這時候我們希望這個文件在內容不變的前提下,越小越好。所以我們可以去除這個Access的冗余信息。4.Office Access本身就有這種功能,我們可以通過菜單找到這個工具,然后單擊這個圖標手動壓縮。5.執行以下這幾句代碼就可以了。首先引用C:\Program Files\Common Files\System\ado\msadox.dll,該DLL包含ADOX命名空間;?接著引用C:\Program Files\Common Files\System\ado\msjro.dll,該DLL包含JRO命名空間?注意:如,導入dll不成功,手動把com組件?導入為 .net組件,在用vs.net工具導入?///壓縮修復ACCESS數據庫,mdbPath為數據庫絕對路徑??????? public void Compact(string mdbPath)??????? {??????????? if (!File.Exists(mdbPath)) //檢查數據庫是否已存在??????????? {??????????????? throw new Exception("目標數據庫不存在,無法壓縮");??????????? }??????????? //聲明臨時數據庫的名稱??????????? string temp = DateTime.Now.Year.ToString();??????????? temp += DateTime.Now.Month.ToString();??????????? temp += DateTime.Now.Day.ToString();??????????? temp += DateTime.Now.Hour.ToString();??????????? temp += DateTime.Now.Minute.ToString();??????????? temp += DateTime.Now.Second.ToString() + ".bak";??????????? temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\\") + 1) + temp;??????????? //定義臨時數據庫的連接字符串??????????? string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;??????????? //定義目標數據庫的連接字符串??????????? string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";??????????? //創建一個JetEngineClass對象的實例??????????? JetEngineClass jt = new JetEngineClass();??????????? //使用JetEngineClass對象的CompactDatabase方法壓縮修復數據庫??????????? jt.CompactDatabase(mdbPath2, temp2);??????????? //拷貝臨時數據庫到目標數據庫(覆蓋)??????????? File.Copy(temp, mdbPath, true);??????????? //最后刪除臨時數據庫??????????? File.Delete(temp);??????? }
總結
以上是生活随笔為你收集整理的access连接mysql很慢_怎么解决ACCESS数据库太大造成运行慢的问题?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐活族
- 下一篇: 压缩access数据库