junjie

           

          操作數據庫應該養成的好習慣(轉載)

          我們開發的系統中,數據是最重要的一部分,如果程序的代碼錯了,我們可以通過各種方式修改回來,但如果數據失真了,將永遠無法還原,那種欲哭無淚的滋味,相信經歷過的人是深有體會的。可能這些小的細節對我們來說都是微不足道的,但往往這些微不足道而且是小概率的事件將會毀了你。
                  記得剛開始工作的時候,我們項目組的幾個人對某個市的數據進行操作,由于自己的一個不小心,寫錯了一個SQL就把其中一部分的數據給毀了,那時候心理真的很難受,多么希望有個人可以罵罵我,至少心理會好受一點,但是沒有人理我,這樣一直在水深火熱這中,感覺自己已經到了地獄一般。經過多年程序生涯,在地獄中也得到了一些成長,于是把自己的一點用金錢換來的經驗全盤托出,希望對一些朋友有所幫助。




          1、不要用Truncate Table語句。剛開始學這個語句的時候,相信很多人多會拿出來跑一跑,會很高興地向同事證明你的Truncate Table比Delete跑得更快,但是如果你養成這樣的習慣,萬一有一天誤刪東西的時候,就還原不回來了,因為Truncate Table不會記錄日志,所以,如果操作重要數據的時候,還是用回Delete語句吧。

          2、每次動數據庫之前,都先要把數據庫備份起來。這個習慣一定要養成,你操作數據庫的時候,哪怕只是做一次簡單的查詢或只是刪除幾條普通的數據,都先備份一下,不會花你很多時間,卻在你失誤的時候可以把你從死亡的邊緣拉回來。如果數據比較大,至少也要把表里的數據備份出來。

          3、把刪除語句以及更新語句、插入語句注釋掉。我們操作數據庫時,通常都喜歡在查詢分析器里寫一大堆SQL,然后選擇某一條,按F5來執行,但有時候會直接按下F5,導致所有的語句都執行,給數據造成一定的損害。如果你把那些有影響的語句注釋掉了,就算按錯了也沒有關系。


          4、不要隨便地去分離數據庫。如果我們要獲取整個數據庫的數據時,盡量采用把數據備份下來,然后取到其他機器上還原,而不要把數據庫分離,然后再復制到其它機器附加。有時候,數據庫分離了之后就會造成無法附加,雖然概率很小,但一旦碰上了就會很麻煩,尤其是一些實時的系統。

          5、自己不熟悉的數據庫,不要去動它。我們維護數據庫時,有時候要 出差到其他市去操作數據,這時,其他項目組的同事可能會叫你幫忙更新這個更新那個的,如果你很熟悉數據庫的結構,以及了解更新的影響程度,那么你幫忙操作就無所謂,如果你不熟悉,盡量不操作,如果你做好了,功勞不是你的,如果出了什么差錯,你就要背黑鍋了。

          6、身體疲勞時不要操作數據庫。加班是程序員的家常便飯,當你加班到身體很疲勞時,操作數據庫失誤的概率會很大,我記得剛剛出來工作時有一次我寫了一個DELETE語句,選擇執行了居然漏選了一個WHERE條件,還好數據比較多,超時了,要不然就.........

          7、如果自己對數據庫結構了解很透徹,而且你的數據庫技術水平已經達到一定的高度,更加要小心了,通常出現誤操作導致數據失真就是這個階段,有時候學了一個新語法就會馬上拿去試著使用。

          8、經常要考慮你的SQL腳本有沒有什么漏洞,或者有沒有其他方法可以更有效率地執行。


          9、SQL SERVER2000里面有一個寶藏,就是它的聯機叢書,建議經常去閱讀它,當你把它讀完并理解之后,你的SQL水平基本就可以超80%的程序員了,根本不要去迷信什么NB的教材,但到了那個時候,你會發現自己懂的東西少了,要學習的東西更多了。

               先總結到這里,如果大家有什么好的經驗或建議,請多多提出,大家共同交流!

          posted on 2008-12-19 13:18 wangjunjie 閱讀(142) 評論(0)  編輯  收藏

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 平顺县| 扶余县| 南通市| 乌什县| 兴文县| 太和县| 偏关县| 禄丰县| 宣武区| 邵武市| 台江县| 吉林省| 炉霍县| 新晃| 平安县| 云南省| 古蔺县| 田东县| 阜平县| 青铜峡市| 策勒县| 金川县| 德兴市| 历史| 独山县| 抚顺县| 甘洛县| 长丰县| 武山县| 郎溪县| 油尖旺区| 洪雅县| 新宾| 南城县| 左贡县| 南开区| 康平县| 滕州市| 璧山县| 雷州市| 揭西县|