close

最近的生活完全處在程式裡頭
早上趕著寫公司的程式,下班回家後趕著處理專題flash的bug
真的還難想像一個已經歷經多次測試的程式還是有bug的存在
不懂為什麼以前沒有發生過的問題,在現在會突然發生呢?
故事是這樣開始的...V3版的程式總算在之前改完所要求的部分
本已為已經沒有自己的事情,
無奈在實際測試時發生了連線過慢的事實
本來這早就可以預測的,因為使用ACCESS免費資料庫
哪能每半秒就同時接受快30幾筆的query呀
於是實驗人總算聽我的話換成了SQL 2005
原來我是推薦SQL 2000的,因為我沒有玩過SQL 2005
照道理來說換個要錢的軟體應該就可以比較穩

沒有想到今天突然接到來信說反而更慢,會LAG
接到這個動畫,我就覺得頭大,因為晚上的休息時間又要不見了
回家後,稍微測試了一下,場景跳來跳去,發現走路並沒有慢到LAG呀
經過確認後,才知道原來LAG的定義是指點選人物時,對話會很慢才出現...
挖勒!!LAG的定義是這樣的嗎?跟我想的完全不一樣

今天整個晚上就痛苦在搞為什麼會慢出現
發現在進行遊戲時,SQL的連線數爆炸了
居然會有上千條的連線同時產生???
讀取人物對話基本上就要執行一行SQL指令
因為已經爆炸了,當然連線就很慢

經過一測再測,一試再試,抽絲剝繭下
發現連線爆炸的原因是我用巢狀迴圈去取資料造成的
我先用程式從A資料表取出a值後,再丟入B資料表取b值
SQL=select a from A
rs = st.executeQuery(SQL)
DO{
SQL2=select b from B where a=rs("a")
rs2 = st.executeQuery(SQL2)
}LOOP

雖然程式執行完了,但因此開了一堆連線卻又都沒有被自動關閉
又這個巢狀迴圈的程式是每0.5秒就要執行一次
幾分鐘後,資料庫連線數就爆炸了...
後來我程式改寫成一次同時去讀取A,B資料表去取出C值來,
就沒有造成連線數爆炸的問題了

事情好像這樣總算被解決了
但是這個問題還是吊詭!!
因為我這個程式早在三年前寫好後就沒有改過了
ACCESS沒有這個問題
那時用SQL 2000沒有此問題
之前有灌一台SQL2005測時也沒有這個問題
怎麼會今天出現這問題呢?????

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 45 的頭像
    45

    FIVE

    45 發表在 痞客邦 留言(3) 人氣()