于雷
摘要:如果能夠做好SQL數(shù)據(jù)庫語言的優(yōu)化,可以提高數(shù)據(jù)庫的整體性能。本次研究從影響SQL數(shù)據(jù)庫性能的因素著手,說明了SQL數(shù)據(jù)庫優(yōu)化的方向,并給出了優(yōu)化SQL數(shù)據(jù)庫流程設(shè)計(jì)、內(nèi)容規(guī)劃設(shè)計(jì)、內(nèi)容反饋設(shè)計(jì)這三方面優(yōu)化的策略。應(yīng)用本次研究提出的成果,程序員可做好SQL數(shù)據(jù)庫優(yōu)化的工作。
關(guān)鍵詞:SQL數(shù)據(jù)庫;程序設(shè)計(jì);數(shù)據(jù)庫優(yōu)化
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)26-0019-02
SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。是一種為了管理數(shù)據(jù)庫而開發(fā)的命令集,編程者只要應(yīng)用SQL數(shù)據(jù)庫管理命令來編輯數(shù)據(jù)庫命令,就能完成數(shù)據(jù)庫命令集成化的編輯。SQL的功能強(qiáng)大,操作方便,兼容性強(qiáng),它是目前最主流的數(shù)據(jù)庫應(yīng)用軟件。如果能夠做好SQL數(shù)據(jù)庫語言的優(yōu)化,可以提高數(shù)據(jù)庫的整體性能。
1 數(shù)據(jù)庫性能的幾個(gè)主要因素
評(píng)價(jià)數(shù)據(jù)庫的性能標(biāo)準(zhǔn)有三個(gè)。第一個(gè),數(shù)據(jù)庫的功能性能,數(shù)據(jù)庫的功能性能是指人們?cè)诓僮鲾?shù)據(jù)庫時(shí),希望能夠希望數(shù)據(jù)庫的功能更強(qiáng)大。比如人們希望數(shù)據(jù)庫不僅具有常規(guī)的建立數(shù)據(jù)、增刪數(shù)據(jù)、修改數(shù)據(jù)的功能,還希望數(shù)據(jù)庫具備圖表展現(xiàn)的功能、數(shù)據(jù)庫自我備份極恢復(fù)的功能、自我校正錯(cuò)誤的功能等。第二個(gè),數(shù)據(jù)庫的速度性能,人們?cè)趹?yīng)用數(shù)據(jù)庫時(shí),希望輸入一個(gè)命令以后,能夠迅速得到反饋,否則人們會(huì)認(rèn)為該數(shù)據(jù)庫不實(shí)用。比如人們?cè)谡{(diào)用數(shù)據(jù)庫時(shí),希望數(shù)據(jù)庫能夠迅速的呈現(xiàn)出結(jié)果,如果數(shù)據(jù)庫此時(shí)不能迅速地給出結(jié)果,也希望知道數(shù)據(jù)庫正在進(jìn)行哪一個(gè)步驟的工作、工作進(jìn)行的進(jìn)度等。第三個(gè),數(shù)據(jù)庫的管理功能,人們希望使用數(shù)據(jù)庫時(shí)有良好的體驗(yàn),比如人們應(yīng)用一個(gè)數(shù)據(jù)庫時(shí),不希望數(shù)據(jù)庫頻繁出錯(cuò),不希望數(shù)據(jù)庫常??ㄋ?。
2 數(shù)據(jù)庫性能提升的方向
結(jié)合數(shù)據(jù)庫性能的衡量標(biāo)準(zhǔn)可以看到數(shù)據(jù)庫優(yōu)化的方向如下。第一個(gè),優(yōu)化數(shù)據(jù)庫的讀取及反饋。程序員在應(yīng)用SQL數(shù)據(jù)庫編輯數(shù)據(jù)庫命令時(shí),要簡化數(shù)據(jù)庫運(yùn)行的流程,這種編程方法具有以下的效果:具有簡少服務(wù)器訪問次數(shù)的效果,如果數(shù)據(jù)庫命令較多,用戶需要獲得反饋的時(shí)間就要增多,影響了用戶體驗(yàn)的效果;減少命令錯(cuò)誤率的效果,如果SQL數(shù)據(jù)庫命令過多,命令和命令之間可能存在沖突,從而用戶在應(yīng)用數(shù)據(jù)庫的時(shí)候會(huì)看到種種的錯(cuò)誤;強(qiáng)化數(shù)據(jù)庫穩(wěn)定性的效果,如果SQL數(shù)據(jù)庫命令較短,數(shù)據(jù)庫可完成命令以后迅速做好數(shù)據(jù)庫的更新及備份工作,反之,數(shù)據(jù)庫在運(yùn)行時(shí)可能不堪重負(fù),出現(xiàn)數(shù)據(jù)溢出,帶來數(shù)據(jù)庫不穩(wěn)定的問題。第二個(gè),優(yōu)化數(shù)據(jù)庫反應(yīng)的時(shí)間,用戶在應(yīng)用數(shù)據(jù)庫時(shí),希望快速獲得數(shù)據(jù)庫的反饋,反之就會(huì)失去操作的耐心。程序員要了解用戶心理的特點(diǎn),優(yōu)化SQL數(shù)據(jù)庫命令的設(shè)計(jì)。比如程序員可將數(shù)據(jù)庫劃分區(qū)域,當(dāng)數(shù)據(jù)庫在第一個(gè)區(qū)域完成搜索以后,能立即將第一個(gè)區(qū)域的數(shù)據(jù)反饋給用戶;在第二個(gè)區(qū)域完成搜索以后,立即把第二個(gè)區(qū)域的數(shù)據(jù)反饋給用戶;如果用戶在應(yīng)用數(shù)據(jù)庫時(shí)出現(xiàn)了錯(cuò)誤,數(shù)據(jù)庫也當(dāng)給出最佳的處理方案,比如幫助用戶保存當(dāng)前的數(shù)據(jù),方便用戶繼續(xù)應(yīng)用數(shù)據(jù)庫。
3 優(yōu)化SQL數(shù)據(jù)庫性能的方法
3.1 從SQL數(shù)據(jù)庫處理流程的角度優(yōu)化
程序員應(yīng)用從SQL數(shù)據(jù)庫設(shè)計(jì)網(wǎng)頁的時(shí)候,要設(shè)計(jì)一個(gè)從SQL數(shù)據(jù)庫處理流程,如果這一流程結(jié)果冗長,從SQL數(shù)據(jù)庫處理出現(xiàn)分歧,用戶在應(yīng)用數(shù)據(jù)庫的時(shí)候就會(huì)出現(xiàn)種種問題。比如以設(shè)計(jì)一套二手交易網(wǎng)站為例。現(xiàn)可將二手交易網(wǎng)站的用戶登錄使用流程描述如下:
步驟1:開始流程(開始用戶登錄流程)
步驟2:用戶提交購物命令;
步驟3:判斷用戶是否登陸,如是進(jìn)入步驟4,如不是進(jìn)入步驟5;
步驟4:進(jìn)入在線購物網(wǎng)站,過入步驟9;
步驟5:詢問用戶是否登陸,用戶要求登錄進(jìn)入步驟6,用戶要求注冊(cè)用戶進(jìn)入步驟7;
步驟6:進(jìn)入用戶錄陸頁面,用戶如果正確登陸,進(jìn)入步驟4,如果用戶未能正確登陸,進(jìn)入步驟6;
步驟7:判斷用戶是否完成注冊(cè),如完成注冊(cè),進(jìn)入步驟4;如果用戶未能正確注冊(cè)進(jìn)入步驟8;
步驟8:判斷用戶是否粥注冊(cè),如果用戶愿意繼續(xù)注冊(cè),進(jìn)入步驟7,如果用戶不愿意繼續(xù)注冊(cè),進(jìn)入步驟1;
步驟9:進(jìn)入在線購物網(wǎng)站,進(jìn)入步驟10;
步驟10:完成用戶附帶陸流程。(進(jìn)入在線購物流程)
參看以上的流程描述。這種流程的描述有三個(gè)優(yōu)勢(shì)。第一個(gè)優(yōu)勢(shì),它將用戶購物這個(gè)長的流程劃分為數(shù)個(gè)短的流程:用戶登錄流程、在線網(wǎng)站選購流程等。這種流程分割的方法能夠?qū)崿F(xiàn)SQL數(shù)據(jù)庫每一個(gè)流程完成以后,都能開展數(shù)據(jù)庫管理活動(dòng),比如數(shù)據(jù)庫可完成一段流程后,做好數(shù)據(jù)更新、備份等工作,強(qiáng)化數(shù)據(jù)庫的穩(wěn)定性。第二個(gè)優(yōu)勢(shì),如果流程命令過長,計(jì)算機(jī)在完成命令的時(shí)候,會(huì)做太多的數(shù)據(jù)運(yùn)算,給硬件及服務(wù)器帶來太多的負(fù)擔(dān),帶來數(shù)據(jù)庫運(yùn)行速度慢的問題,應(yīng)用短流程的設(shè)計(jì)方式可以加快數(shù)據(jù)庫運(yùn)行的速度。第三個(gè)優(yōu)勢(shì),短的流程設(shè)計(jì)較為簡潔,這種設(shè)計(jì)方法能夠避免數(shù)據(jù)庫命令出現(xiàn)分岐的問題。
程序員如果要優(yōu)化SQL數(shù)據(jù)庫,就要從宏觀的角度把握數(shù)據(jù)庫建立的目的,優(yōu)化SQL數(shù)據(jù)庫命令流程。
3.2 從SQL數(shù)據(jù)庫處理內(nèi)容的角度優(yōu)化
程序員在編寫SQL數(shù)據(jù)庫時(shí),要從數(shù)據(jù)庫處理的角度優(yōu)化數(shù)據(jù)庫命令的參數(shù)。比如正如前文所說,二手交易網(wǎng)站的數(shù)據(jù)庫更新的速度極快,它很快就能從一個(gè)小型數(shù)據(jù)庫變成一個(gè)超大型數(shù)據(jù)庫。如果程序員未能做好這種趨勢(shì)的預(yù)測(cè),應(yīng)用小型數(shù)據(jù)庫的參數(shù)設(shè)計(jì)方法來設(shè)計(jì)SQL數(shù)據(jù)庫命令,就會(huì)帶來SQL數(shù)據(jù)庫數(shù)據(jù)處理速度慢的問題。為了優(yōu)化SQL數(shù)據(jù)庫命令處理的效果,程序員要做好數(shù)據(jù)庫內(nèi)容的規(guī)劃,以此為基礎(chǔ)優(yōu)化數(shù)據(jù)庫命令參數(shù)。程序員可以以數(shù)據(jù)庫容量為單位,劃數(shù)據(jù)庫的區(qū)域,SQL數(shù)據(jù)庫命令可依次處理數(shù)據(jù)庫區(qū)域。當(dāng)數(shù)據(jù)庫以一個(gè)較小的區(qū)域?yàn)閱挝惶幚頂?shù)據(jù)時(shí),可以數(shù)據(jù)處理的速度。
程序員要規(guī)劃好SQL數(shù)據(jù)庫處理的內(nèi)容,根據(jù)規(guī)劃做好參數(shù)設(shè)計(jì),加快數(shù)據(jù)庫處理的速度,為做好數(shù)據(jù)庫內(nèi)容的反饋打好基礎(chǔ)。
3.3 從SQL數(shù)據(jù)庫反饋設(shè)計(jì)的角度優(yōu)化
部分程序員習(xí)慣以個(gè)人的角度來編寫SQL數(shù)據(jù)庫命令,而不習(xí)慣從用戶習(xí)慣的角度來編寫SQL數(shù)據(jù)庫命令,這就帶來SQL數(shù)據(jù)庫命令應(yīng)用性不強(qiáng)的問題。依然以程序員編寫二手交易網(wǎng)站為例。用戶注冊(cè)用戶信息的時(shí)候,有時(shí)會(huì)出現(xiàn)注冊(cè)錯(cuò)誤或注冊(cè)不全的問題。如果用戶注冊(cè)錯(cuò)誤了,二手交易網(wǎng)站就要求用戶重新填寫全部的注冊(cè)信息,用戶就會(huì)認(rèn)為二手交易網(wǎng)站注冊(cè)很麻煩,從而可能放棄注冊(cè);如果二手交易網(wǎng)站在用戶注冊(cè)錯(cuò)誤或注冊(cè)不全以后,保留了剛才用戶注冊(cè)的信息,給予錯(cuò)誤的提示或信息不全的提示,要求用戶更改注冊(cè),用戶就會(huì)感覺二手交易網(wǎng)站設(shè)計(jì)很人性化。再比如如果用戶在搜索商品信息時(shí),二手網(wǎng)站遲遲不反饋信息,用戶會(huì)不了解究竟是該網(wǎng)站的數(shù)據(jù)庫出現(xiàn)了問題,還是使用的設(shè)備出現(xiàn)了問題。此時(shí)如果SQL數(shù)據(jù)庫命令給予用戶反饋,比如分批給予用戶信息,告訴用戶數(shù)據(jù)庫處理的進(jìn)度,用戶就會(huì)愿意認(rèn)為二手交易網(wǎng)站設(shè)計(jì)非常貼心,能夠滿足他們的需求。
程序員在編寫SQL數(shù)據(jù)庫命令時(shí),要熟悉用戶的習(xí)慣,了解用戶的需求,做好SQL數(shù)據(jù)庫細(xì)節(jié)設(shè)計(jì)。
4 總結(jié)
本次研究從影響SQL數(shù)據(jù)庫性能的因素著手,說明了SQL數(shù)據(jù)庫優(yōu)化的方向,并給出了SQL數(shù)據(jù)庫優(yōu)化的策略。應(yīng)用本次研究提出的成果,程序員可做好SQL數(shù)據(jù)庫優(yōu)化的工作。
參考文獻(xiàn):
[1] 高欣. 關(guān)于如何優(yōu)化SQL數(shù)據(jù)庫性能的幾點(diǎn)分析[J]. 科技創(chuàng)新與應(yīng)用, 2013(27).
[2] 李宏著, 譚娜. 關(guān)系數(shù)據(jù)庫SQL查詢語句優(yōu)化應(yīng)用[J]. 科技創(chuàng)新導(dǎo)報(bào), 2011(36).
[3] 丁燕云, 魏娟. 淺析SQL數(shù)據(jù)庫的性能優(yōu)化問題[J]. 科技信息(學(xué)術(shù)研究), 2007(34).