從上個月起,秋色園QBlog的數據庫,已經從access+sqlite變更為sql2000+sqlite,從此,access離開了秋色園的懷抱。
該走的還是走了,秋色園在用Access一年多后,目前對本人來說,已優無可優,甚到為之擔憂的地步,終於還是離開了。
下面讓我們簡單回顧一下秋色園與Access恩怨情仇(太久沒寫文章,不習慣寫長文了):
恩:還記得最早秋色園使用Access,是由於秋色園是寄在朋友的godaddy的虛擬子目錄下,那時候還沒咋認識sqlite,因此access是最優選擇,access感覺還是不錯的,一開始感覺速度還是挺快的。
優點:簡單實用,啥也不用想,傳上去就OK了。
怨:隨着秋色園文章量的增加,access在速度上,特別是分頁速度,已經明顯的力不從心,文章量越大,速度越是下降的明顯,多次優化分頁方法,終於速度上去了一點點,但這一點點並解決不了問題,后來換上了512M內存的vps。
缺點:經不起量(幾萬以上)的折磨。
情:雖然秋色園多次嘗試換其它數據庫,包括在oracle、Mysql、mssql等數據庫上運行過秋色園,但由於內存實在太小,最終還是回歸到access上,雖然也一度在sqlite上運行了,但沒發sqlite有啥速度改善,於是一切回到了access,為並之優化打算奮斗到底。
優點:原來還好很多可優化的地方。
每次優化完access的問題,總多少會感覺到點優越感,弄久了,似覺的感情深了,以下回憶一下和Access優化有關的都有什么來着:
2:數據庫分庫:其實就是鏈接表,用鏈接表,的解可以在某種程度上解決一些問題。
這個分庫涉及:把大量段的分離,或者表分離,盡量保持一個數據庫小一點。
3:建立索引:Access也有索引的,不過我設了和沒設,沒感覺到有區別(不像其它數據庫,設置后效果太明顯)。
4:壓縮數據庫,用久了壓一壓,數據庫小點,感覺還是有點用處的。
暈,總結了一下,才發現access沒多少可優化點,以前優化都是在盡量避免和access接觸,基本上是程序上的優化。
仇:由於Access本身並不具備多少優化點,因此,程序上根本無法100%阻擋access的寫入或讀取,因此,總在某一時刻,數據庫死鎖了,最可怕的,最后還經常出現aspnet_isapi檢測到死鎖,重啟應用程序池,這對本來內存就小的服務器是最致命的打擊,從此,我恨access。
缺點:當access死鎖時,這是相當可怕的,因為除了重啟IIS,你幾乎沒有其它方式可以恢復網站的正常運行。
補充另外一招:調用GC.Collect(),這招可以釋放Access未關閉鏈接而鏈接引用丟失時造成的臨時鎖。
最后,我必須總結一下:
1:access本來就是桌面數據庫,還是不要勉強逼它吃多線程應用。
2:站點有點流量的,內存一定要夠大,vsp買時,內存至少得1G以上夠開個sql2000,多花點錢,省N多時間。
3:目前秋色園QBlog運行在sql2000下+sqlite輔助,一切正常。
4:本來是想寫文本數據庫(CYQ.Data 數據框架操作文本)相關的文章,沒想到寫着寫着寫成這文章了,歪了。。。