国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

在線電話營銷系統(tǒng)的數(shù)據(jù)庫性能優(yōu)化

2012-04-29 00:44:03翁英萍
電腦知識與技術(shù) 2012年2期
關(guān)鍵詞:性能優(yōu)化數(shù)據(jù)庫

翁英萍

摘要:該文分析了一個在線電話銷售系統(tǒng)所遇到的數(shù)據(jù)庫性能瓶頸問題,研究了常見的性能優(yōu)化策略和方法,針對系統(tǒng)的具體特點選擇優(yōu)化方案,顯著地提升了系統(tǒng)性能。

關(guān)鍵詞:電話銷售;數(shù)據(jù)庫;性能優(yōu)化

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)02-0258-02

Performance Optimization in Online Telemarketing System Database

WENG Ying-ping

(College of Computer and Software,Nanjing Insititute of Industry Technology, Nanjing 210046, China)

Abstract:This paper analyses the database performance bottlenecks of an online telemarketing system, researches the popular optimization and tuning strategies,suggests the appropriate optimization scheme according to the features of the system, significantly improves the perfor? mance.

Key words: telemarketing; database; performance optimization

當前,電話營銷系統(tǒng)已經(jīng)將傳統(tǒng)的電話營銷和數(shù)據(jù)庫營銷結(jié)合在了一起,使得銷售人員可以更加方便的在顧客數(shù)據(jù)分析的基礎(chǔ)上進行有針對性的電話銷售,有效提高了擴大顧客群、提高顧客滿意度、維護顧客等市場行為的效率。而作為整個電話營銷系統(tǒng)關(guān)鍵的數(shù)據(jù)庫系統(tǒng)則顯得至關(guān)重要。隨著銷售業(yè)務(wù)的不斷發(fā)展,坐席數(shù)量、客戶數(shù)據(jù)、通話記錄和訂單數(shù)據(jù)的持續(xù)增長,數(shù)據(jù)庫系統(tǒng)面臨著日益嚴峻的考驗。并發(fā)高峰期系統(tǒng)響應(yīng)時間過長、電話坐席終端反應(yīng)遲緩甚至停止響應(yīng)等問題經(jīng)常發(fā)生,嚴重的影響了整個電話營銷系統(tǒng)的正常運行。

銷售業(yè)務(wù)的發(fā)展、數(shù)據(jù)庫并發(fā)數(shù)、數(shù)據(jù)庫數(shù)據(jù)量三者之間存在線性增長的關(guān)系,因此業(yè)務(wù)的發(fā)展意味著數(shù)據(jù)庫系統(tǒng)的維護將經(jīng)歷平穩(wěn)->逐漸變慢->測試和調(diào)優(yōu)->平穩(wěn)這樣一個反復的循環(huán)過程。而“測試和調(diào)優(yōu)”階段開始的一個有效信號就是數(shù)據(jù)庫系統(tǒng)偶爾出現(xiàn)短暫卡死的現(xiàn)象。

數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)涉及多個方面,根據(jù)優(yōu)化策略、適應(yīng)場合的不同,優(yōu)化代價也不相同。因此需要針對目標系統(tǒng)的具體情況,進行綜合考慮。本文首先研究了數(shù)據(jù)庫調(diào)優(yōu)的常見策略,并結(jié)合在線電銷系統(tǒng)的具體運行情況,選取可行且高性價比的策略進行調(diào)優(yōu),并隨時監(jiān)控每項策略進行后的性能改善,最終順利完成當前數(shù)據(jù)庫系統(tǒng)的“測試和調(diào)優(yōu)”階段。

1數(shù)據(jù)庫調(diào)優(yōu)的常見策略

數(shù)據(jù)庫的性能涉及硬件、網(wǎng)絡(luò)及應(yīng)用程序等多個方面。主要包括:

1)系統(tǒng)硬件。系統(tǒng)硬件的性能對數(shù)據(jù)庫的表現(xiàn)至關(guān)重要,配置合理的服務(wù)器及存儲設(shè)備能夠最有效的提高整個系統(tǒng)的性能。系統(tǒng)性能主要取決于磁盤、內(nèi)存、CPU和網(wǎng)絡(luò)。磁盤是最容易被忽略的薄弱環(huán)節(jié),快速的磁盤系統(tǒng)可能節(jié)省十倍甚至百倍的時間。內(nèi)存越大,則表的部分或全部保存在內(nèi)存中的機會也越大,可以大大的減少磁盤I/O的次數(shù),從而極大的提升檢索速度。Sql Server2005可以支持多達32個CPU并行工作,選擇多個高性能的CPU能提高每個任務(wù)的處理速度。網(wǎng)絡(luò)連接的快慢則決定了數(shù)據(jù)庫服務(wù)器與應(yīng)用服務(wù)器之間的數(shù)據(jù)交換能力。硬件系統(tǒng)的價格比較昂貴,如果單純采用升級硬件的方式來提升性能,能夠得到很好的效果,但付出的代價較高。

2)數(shù)據(jù)庫的設(shè)計。數(shù)據(jù)庫設(shè)計同樣能夠極大的影響數(shù)據(jù)庫的性能。數(shù)據(jù)庫設(shè)計方面主要考慮如下方面:表的設(shè)計、索引的設(shè)計和存儲過程的使用。數(shù)據(jù)庫表的設(shè)計一般應(yīng)滿足三范式,消除冗余,避免插入、刪除和修改異常。但適當?shù)姆且?guī)范化處理可以減少頻繁連表和重復計算,和應(yīng)用程序結(jié)合在一起能夠很好的降低對數(shù)據(jù)庫查詢量的需求。表的設(shè)計另一方面需考慮盡可能減少可空列,而采用默認值的方法,減少行的大小。索引的設(shè)計在提升查詢性能上至關(guān)重要,一個有效利用索引的查詢可以迅速的定位記錄,而不需要全表搜索。有效的使用存儲過程,來批量的處理數(shù)據(jù)可以很好的減少連接數(shù)據(jù)庫的次數(shù)。數(shù)據(jù)庫的設(shè)計方面的調(diào)優(yōu)一部分可以獨立進行,而不影響應(yīng)用程序和現(xiàn)有系統(tǒng),沒有額外的投資,但是有些部分則需要應(yīng)用程序做出相應(yīng)的調(diào)整,有些部分則會帶來負面影響,比如索引,表的索引越多,增加、刪除和修改時的速度越慢。要根據(jù)情況均衡考慮。

3)應(yīng)用程序的設(shè)計。主要涉及查詢語句的設(shè)計方式、鎖的類型和持續(xù)時間,能不能充分利用索引和存儲過程。除此以外還需要平衡業(yè)務(wù)的需求和整個系統(tǒng)的性能。應(yīng)用程序的設(shè)計準則包括:消除過多的網(wǎng)絡(luò)流量,使用小結(jié)果集;使用存儲過程,避免死鎖等。

2在線電銷系統(tǒng)數(shù)據(jù)庫問題的分析

我們了解到該企業(yè)的電銷系統(tǒng)數(shù)據(jù)庫的應(yīng)用程序采用多層架構(gòu),有豐富的現(xiàn)場日志,且能夠做到直接修改查詢語句而不需要重新編譯源代碼。

首先分析了應(yīng)用程序保留的卡死那段時間的現(xiàn)場日志。經(jīng)過對日志的分析發(fā)現(xiàn)了如下問題:

1)當時有很多條需要對十多張百萬級數(shù)據(jù)表的聯(lián)結(jié)查詢。其中數(shù)十條查詢時長超過1000ms。對這些查詢進一步的分析表明,sql語句中的查詢條件不能有效的利用索引,主要原因有如下幾點:a.有些字段沒有包含在索引之中。b.諸如like‘%xxx%的模糊查詢。c.諸如in(x,x,x)的查詢。

上述情況由于不能利用索引來查詢,導致全表搜索,而全表的數(shù)據(jù)量非常巨大,因此導致查詢時間很長,在并發(fā)數(shù)很大的情況下會導致系統(tǒng)響應(yīng)很慢。

2)某個檢查工作狀態(tài)的查詢語句每10s檢查一次。

3)經(jīng)常查詢的表數(shù)據(jù)量巨大,最多的通話相關(guān)的表達500萬條以上,更頻繁操作的客戶表和訂單表也達100萬條,還在持續(xù)增長之中,很多業(yè)務(wù)查詢都需要這些大表互相連接或聚合統(tǒng)計分析。

其次為了了解當并發(fā)量很大,查詢集中時,整個系統(tǒng)的瓶頸在哪里,決定選擇一個正常的工作周期打開性能監(jiān)視器,了解性能瓶頸所在。我們選擇了正常工作日的一整天24小時。

經(jīng)過檢查發(fā)現(xiàn)磁盤I/O存在較大異常,avg.disk.queue.length的平均值都高達60~80,最大值高達700,而合理值是1~3/每塊磁盤,當前系統(tǒng)包含2塊物理磁盤,那么平均值不應(yīng)該超過6。因此可以判斷磁盤I/O存在異常。

從上述分析可以得出該數(shù)據(jù)庫系統(tǒng)的問題主要有:(1)歷史數(shù)據(jù)過于龐大;(2)表的索引設(shè)計存在問題;(3)查詢語句設(shè)計存在問題;(4)硬件的性能已經(jīng)無法應(yīng)付日益龐大的數(shù)據(jù)量和并發(fā)數(shù)。

3針對性調(diào)優(yōu)策略的選取

由于該企業(yè)的數(shù)據(jù)庫系統(tǒng)是始終運行之中,很多優(yōu)化措施在應(yīng)用程序和數(shù)據(jù)庫的設(shè)計和開發(fā)階段是比較容易解決的問題,現(xiàn)在卻變得不可實現(xiàn),比如對應(yīng)用程序的修改,雖然該應(yīng)用程序可以方便的修改查詢語句,但是對于數(shù)據(jù)的處理方式將很難修改。而且一個表會涉及到多處使用,因此數(shù)據(jù)庫設(shè)計方面的缺陷所能做的優(yōu)化也幾乎不可能。因此需要針對數(shù)據(jù)庫系統(tǒng)存在的4類問題進行分析處理。

這4類問題中,其中最容易處理的是(2),因為僅需要對數(shù)據(jù)庫進行操作即可。其次為(3),需要對查詢語句進行修改,本來是比較復雜的工作,由于該企業(yè)的應(yīng)用程序是多層架構(gòu),查詢語句可以方便的修改而不需要重新編譯源代碼。再然后是(1),歷史數(shù)據(jù)中有很多類型,有些是基本不會被查詢的可以移除,有些是核心數(shù)據(jù)如客戶數(shù)據(jù)和訂單數(shù)據(jù),這些對公司的業(yè)務(wù)有著巨大的價值,不可能被轉(zhuǎn)移。對于(4)則更加麻煩,這不僅僅涉及到公司資金的投入,還涉及到如何擴展或更新硬件而不影響現(xiàn)有業(yè)務(wù)的進行,如何應(yīng)對擴展或更新過程中所遇到的風險。

因此我們的解決方案是:首先解決(2)、(3),然后是(1)。經(jīng)過觀察后,如有必要再考慮對硬件的升級。具體來說,采用了如下步驟:

1)從日志中選出所有耗時巨大的查詢語句,逐一分析,分別處以如下操作:

(1)對于經(jīng)常需要進行的操作,盡可能去除模糊查詢(like和in)。如果業(yè)務(wù)需要,確實在某些情況下需要模糊查詢,則提供2個版本供選擇:可以模糊查詢和不可以模糊查詢的版本。并控制模糊查詢的使用

(2)對于所有耗時巨大的且不是因為模糊查詢的語句,運用數(shù)據(jù)庫引擎優(yōu)化顧問來優(yōu)化,根據(jù)建議來重新建立表的索引,確保查詢能充分利用索引,減少查詢時間

經(jīng)過步驟(1)的處理后,系統(tǒng)的壓力得到了緩解,但是仍然反映很慢。

2)鑒于數(shù)據(jù)量正在日新月異的增加。沉重的歷史數(shù)據(jù)始終是系統(tǒng)的包袱。因此需要向業(yè)務(wù)部門提出建議,每種數(shù)據(jù)確定需要保留的時間。并據(jù)此寫出清理數(shù)據(jù)的存儲過程,每周進行一次清理,將超過半年、一年以上的數(shù)據(jù)(根據(jù)業(yè)務(wù)的需求保留時長不等)轉(zhuǎn)移到其他備份數(shù)據(jù)庫中,并在原數(shù)據(jù)庫中清理掉。

經(jīng)過步驟(2)的處理之后,以及進一步的性能監(jiān)視之后,發(fā)現(xiàn),磁盤I/O的avg.disk.queue.length的最大值仍然在200以上。雖然對比最初已經(jīng)有了很好的降低,仍然遠遠超出建議的值。

3)仔細分析了系統(tǒng)硬件之后發(fā)現(xiàn),當前的數(shù)據(jù)庫文件的大小已達20G,而內(nèi)存大小僅為4G,顯然如果涉及大數(shù)據(jù)量的查詢時,數(shù)據(jù)庫的大部分都在磁盤而非內(nèi)存中,需要多次磁盤I/O來應(yīng)對,從而導致磁盤I/O成為瓶頸所在。鑒于這樣的原因,建議升級內(nèi)存到32G。

升級后發(fā)現(xiàn),磁盤I/O迅速的下降為2~4之間。坐席終端也反映系統(tǒng)使用比較流暢。整個系統(tǒng)運行多日未出現(xiàn)卡死現(xiàn)象。至此本次優(yōu)化取得了很好的效果。

4結(jié)論和展望

經(jīng)過本次數(shù)據(jù)庫系統(tǒng)系統(tǒng)終端的設(shè)計會優(yōu)化,可以發(fā)現(xiàn)聯(lián)機數(shù)據(jù)庫調(diào)優(yōu)涉及很多方面,絕不僅僅是數(shù)據(jù)庫本身的知識。還涉及業(yè)務(wù)需求、查詢語句和應(yīng)用程序的架構(gòu)以及硬件的性能。每個方面都對數(shù)據(jù)庫的性能有重大影響。從業(yè)務(wù)的角度,如何在有限的系統(tǒng)資源中,確保核心業(yè)務(wù)的進行;如何在業(yè)務(wù)的便利性和系統(tǒng)資源的消耗之間找到平衡。從應(yīng)用程序結(jié)構(gòu)的角度,不僅需要考慮實現(xiàn)用戶提出的功能,還要預(yù)見到在大數(shù)據(jù)量和高并發(fā)情況下,系統(tǒng)性能的影響。如果在設(shè)計時就考慮到這一點,就能有更多的優(yōu)化策略可以采用,比如數(shù)據(jù)的劃分,將同一種數(shù)據(jù)分在不同表中,從而縮小每個人需要查詢的總范圍,且減少讀寫鎖的爭用。比

如將常見歷史數(shù)據(jù)的查詢在業(yè)務(wù)空閑的夜間進行預(yù)查詢,并寫在臨時表中,減少并發(fā)高峰時對數(shù)據(jù)庫的查詢。比如采用數(shù)據(jù)倉庫來存放不會改變的歷史數(shù)據(jù),將動態(tài)的數(shù)據(jù)保存在實時庫中,大大減少數(shù)據(jù)庫查詢的記錄數(shù)。從硬件的角度來說,如何找到硬件的真正瓶頸,并具有前瞻性的了解業(yè)務(wù)將來的發(fā)展情況,從而估算數(shù)據(jù)庫的大小和需要投入的硬件,避免重復投資。如果能夠使用數(shù)據(jù)庫集群,在適當?shù)狞c添加服務(wù)器的數(shù)量,從而能夠無縫的增加服務(wù)器的處理能力,也是將來需要考慮的方向。

參考文獻:

[1] Dennis Shasha,Philippe Bonnel.數(shù)據(jù)庫性能調(diào)優(yōu)----原理與技術(shù)[M].孟小峰,李戰(zhàn)懷,譯.北京:電子工業(yè)出版社,2004.5.

[2]宋改勤.基于電力負荷管理系統(tǒng)的數(shù)據(jù)庫性能改善[D].鄭州:鄭州大學,2006.

[3]谷震離.SQL Server數(shù)據(jù)庫應(yīng)用程序性能優(yōu)化方法[J].計算機工程與設(shè)計,2006,8.

[4]王振輝,吳廣茂.SQL查詢語句優(yōu)化研究[J].計算機應(yīng)用,2005,12.

[5]郭忠南,孟凡榮.關(guān)系數(shù)據(jù)庫性能優(yōu)化研究[J].計算機工程與設(shè)計,2006,12.

猜你喜歡
性能優(yōu)化數(shù)據(jù)庫
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
SQL Server數(shù)據(jù)庫性能優(yōu)化的幾點分析
Web應(yīng)用的前端性能優(yōu)化
660MW超超臨界火電機組RB性能優(yōu)化
WEB網(wǎng)站緩存性能優(yōu)化
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
淺析Lustre的優(yōu)化設(shè)置
Oracle數(shù)據(jù)庫性能調(diào)整與優(yōu)化分析
科技視界(2016年1期)2016-03-30 14:27:50
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
大余县| 金坛市| 北安市| 铁岭县| 海伦市| 资中县| 阳城县| 徐闻县| 麦盖提县| 仁化县| 南部县| 兴文县| 珠海市| 永兴县| 阳朔县| 西林县| 云梦县| 寿光市| 庆云县| 闽清县| 探索| 壤塘县| 昭平县| 宝清县| 迁安市| 汕尾市| 高平市| 许昌市| 静宁县| 西乌珠穆沁旗| 敖汉旗| 泗阳县| 平远县| 无极县| 阿拉善右旗| 罗甸县| 临洮县| 渭南市| 彭州市| 钟祥市| 顺昌县|