發表文章

目前顯示的是 10月, 2009的文章

FireFox速度變慢怎麼辦

FireFox 有個非常奇怪的狀況,就是使用越久… FireFox 啟動越慢、最後甚至連開啟網頁都慢。之前在公司的電腦上,最後還變成每次開啟 FireFox 之後,CPU就會無故吃到100%,電腦馬上就彷彿中風一般…每次新版推出,都寄望新版能解決這狀況,卻每每失望…最後實在沒辦法,只好改用 google 瀏覽器 。 當然,原本認為這 FireFox 變慢的原因,是自己在 FireFox 上面裝太多Add-ons。但作了測試後,發現問題應該不是這些Add-ons…直到有次測試,乾脆將 FireFox 全部移除,在直接安裝當時最新版本,沒想到…原本彷彿中風的電腦,卻正常了! 找問題期間,有在 Download Squad 看過兩個解決方案,如下… 限制瀏覽的歷史紀錄天數 清理FireFox所使用的SQLite資料庫 第一個方法,感覺沒什麼改善 :( 第二的方法,雖然有點感覺,卻沒『明顯』變快的感受… 最後,連家中雙核CPU,1G記憶體的NB,使用 FireFox 瀏覽網頁時,居然要停頓2-4秒後才有反應…這樣中風的狀況,實在令人難以忍受,打算找時間重灌。卻看到 SpeedyFox 這套軟體。看他網頁上的介紹,決定先試試看…如果還是沒效果,再重裝 FireFox 沒想到, SpeedyFox 的效果非常顯著!無論是公司、家中的 FireFox 在使用之後,馬上『脫胎換骨』。後來推薦給一些有飽受 FireFox 此狀況的同事,人人都說讚!且,使用非常簡單。 SpeedyFox 在 說明的網頁 中有提問這狀況的發生原因。不過,為何在使用 清理FireFox所使用的SQLite資料庫 的方法,卻沒如此明顯的感受呢?!這倒是令我不解… 附註: 第一次使用時,使用的是v1.3。最近出了v1.4。使用起來,覺得v1.4處理比較慢一些…但看網頁上的說明,似乎兩個版本的變化不大!

在trigger中利用@@rowcount

最近在對於系統作些調整、修改。其間,為了資料的一致性,最後還是決定採用觸發(trigger) 。為了照顧好資料庫(的效能),於是在思考如何減少trigger內不必要的語法執行(也就是沒資料被異動時,就算trigge被呼叫起來也不需要作任何動作) 翻了一下手上的工具書- Inside Microsoft SQL Server 2005:T-SQL PROGRAMMING 中文版 。在這本書(個人覺得這本書非常充實,欲瞭解MS SQL 2005、新功能、調教資料庫與進階應用等,建議可以看看本書)中提到一個作法,利用@@rowcount來協助判斷。 也就是在trigger一開始,就直接利用@@rowcount來判斷使否有資料被異動(以我的案例,我是要針對是否有資料真的被刪除,才去作一些處理)。有資料被異動,也就是@@rowcount傳回大於0的值,方才執行後續的SQL語法。否則就直接跳出,避免多作任何SQL語法,造成無用的資源浪費。 不過,一開始嘗試時卻是失敗的… 後來才注意到,因為我是利用SQL 2005 Studio 產生的trigger範例語法,因此他內建會放入SET NOCOUNT ON; ,這會導致@@rowcount不傳回值。 可是,在 MS SQL官方文件 中明明提及 - 即使 SET NOCOUNT 是 ON,也會更新 @@ROWCOUNT 函數。但…trigger中使用@@rowcount,就是會被影響! 以下,就是最基本的處理範例 CREATE TRIGGER [dbo].[tri_test] ON [dbo].[table_test] AFTER DELETE AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. --SET NOCOUNT ON; --以上三行語法為 SQL 2005 內建會產生的 IF @@rowcount=0 BEGIN --直接離開 RETURN ; END ELSE BEGIN