亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟件開發(fā)中如何高效使用數(shù)據(jù)庫

        2012-10-15 12:39:04楊俊生
        科技傳播 2012年23期
        關鍵詞:數(shù)據(jù)庫

        楊俊生

        大連理工大學城市學院計算機工程分院,遼寧大連 116600

        通常一個應用軟件系統(tǒng)中涉及網(wǎng)絡系統(tǒng)、計算機系統(tǒng)、應用軟件系統(tǒng)以及數(shù)據(jù)庫系統(tǒng)。這些系統(tǒng)需要高效、協(xié)調(diào)一致地工作,方能給客戶提供良好的服務,客戶對系統(tǒng)的滿意度很大程度上取決于客戶的體驗,包括系統(tǒng)界面友好、簡單易用、健壯可靠、安全高效等。

        當系統(tǒng)在并發(fā)量不高的情況下,上述的用戶體驗大都可以滿足,但當并發(fā)量持續(xù)增加時,系統(tǒng)整體性能逐漸走低,數(shù)據(jù)庫系統(tǒng)將成為主要的性能瓶頸。

        當前系統(tǒng)硬件水平發(fā)展很快,CPU運算速度、內(nèi)存速度容量、網(wǎng)絡速度等都在大幅度提高,通過更換硬件設備提高性能無疑是一種解決辦法,但系統(tǒng)內(nèi)部問題卻容易被忽視,系統(tǒng)性能問題很多來自于系統(tǒng)設計本身。

        1 應用軟件中數(shù)據(jù)庫系統(tǒng)操作響應時間分析

        圖1 客戶執(zhí)行操作的內(nèi)部處理

        當前的主流應用軟件體系結構為B/S結構,客戶在瀏覽器中進行一項操作,信息的傳遞過程是:

        1)提交請求到應用服務器;

        2)應用服務器接收并處理信息;

        3)應用服務器訪問數(shù)據(jù)庫系統(tǒng);

        4)數(shù)據(jù)庫系統(tǒng)處理數(shù)據(jù);

        5)數(shù)據(jù)庫系統(tǒng)返回處理結果給應用服務器;

        6)應用服務器處理返回結果;

        7)應用服務器將最終顯示信息傳遞到瀏覽器。

        客戶執(zhí)行操作的內(nèi)部處理參見圖1所示。

        客戶執(zhí)行一項操作的響應時間是上述7個步驟的執(zhí)行時間之和,其中4部分是網(wǎng)絡傳輸時間,2部分是應用服務器處理時間,1部分是數(shù)據(jù)庫處理時間。

        在這幾個部分中真正與數(shù)據(jù)庫系統(tǒng)相關的操作時間是應用服務器與數(shù)據(jù)庫系統(tǒng)間的網(wǎng)絡傳輸時間和數(shù)據(jù)庫系統(tǒng)內(nèi)部的處理時間。

        2 數(shù)據(jù)庫系統(tǒng)操作響應時間優(yōu)化措施

        根據(jù)上述分析得知數(shù)據(jù)庫系統(tǒng)響應時間主要集中在網(wǎng)絡傳輸和數(shù)據(jù)庫系統(tǒng)內(nèi)部處理時間,針對這兩種情況我們分別具體分析。

        2.1 通過批處理方式優(yōu)化網(wǎng)絡傳輸時間

        應用服務器和數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)傳輸時間取決于傳輸?shù)臄?shù)據(jù)量和次數(shù),對于定量的數(shù)據(jù),傳輸?shù)拇螖?shù)將主要決定傳輸需要的總時間。

        一次數(shù)據(jù)傳輸包括發(fā)送端準備數(shù)據(jù)時間、數(shù)據(jù)在網(wǎng)絡中傳輸時間、接收端接收數(shù)據(jù)時間、接收端返回響應數(shù)據(jù)在網(wǎng)絡中傳輸時間。

        例如向數(shù)據(jù)庫表中連續(xù)插入10 000條記錄,兩種選擇,第一種逐條插入,第二種批量插入,以下是在Oracle10g版本中測試的跟蹤信息,圖2是逐條插入時的跟蹤信息,圖3是每1 000條插入一次的跟蹤信息。

        圖2 逐條插入網(wǎng)絡時間

        圖3 批量插入網(wǎng)絡時間

        圖2顯示在網(wǎng)絡中傳輸數(shù)據(jù)時等待次數(shù)累計20 000次、累計時間3.12秒,圖3顯示等待次數(shù)累計20次、累計時間0.04秒,可見批處理方式可顯著降低網(wǎng)絡傳輸所消耗的時間。

        數(shù)據(jù)庫的批處理不僅可用于向數(shù)據(jù)庫中存儲數(shù)據(jù),也可以用于從數(shù)據(jù)中讀取數(shù)據(jù),圖4顯示逐條讀取數(shù)據(jù)的跟蹤信息,圖5顯示每次讀取1 000條的跟蹤信息。

        圖4 逐條讀取網(wǎng)絡時間

        圖5 批量讀取網(wǎng)絡時間

        圖4顯示網(wǎng)絡中傳輸數(shù)據(jù)時等待次數(shù)累計20 000次、累計時間2.69s,圖5顯示等待次數(shù)累計20次,累計時間0.18s。上述試驗證明大數(shù)據(jù)量操作時,批處理方式可大幅度提高效率。

        2.2 優(yōu)化數(shù)據(jù)庫處理時間

        圖6 硬解析

        圖7 軟解析

        圖6顯示硬解析10 000次,累計時間消耗10.45秒,圖7顯示只發(fā)生1次硬解析,消耗時間幾近為0。軟解析的實現(xiàn)與應用開發(fā)中SQL語句的編寫直接相關,例如:“select name from tbluser where userid=1”和“select name from tbluser where userid=2”兩條語句,他們的差別在于查詢條件的值不同,又比如“SELECT name FROM tbluser where userid=1”和“select name from tbluser where userid=1”兩條語句,他們的差別在于關鍵字select和from的大小寫不同,這些對于數(shù)據(jù)庫來說可能都是不同的SQL語句。

        Oracle數(shù)據(jù)庫中保存SQL解析信息時以整個SQL文本計算的哈希值作為鍵值,SQL文本的細微差異都會導致硬解析發(fā)生。

        進行軟件開發(fā)時需要定義SQL開發(fā)規(guī)范,規(guī)定SQL文本中的大小寫限制、空格多少等,其次要使用預編譯語句(比如jdbc中使用PreparedStatement),避免SQL語句中直接寫查詢條件值,應由變量替代,以提高軟解析率。

        通過減少讀寫次數(shù)降低IO響應時間。

        數(shù)據(jù)庫的讀操作分為物理讀和邏輯讀兩種,物理讀指從磁盤讀取數(shù)據(jù),邏輯讀指從內(nèi)存獲取數(shù)據(jù)。在計算機的存儲結構中,磁盤讀寫的速度遠低于內(nèi)存讀寫速度,為降低讀操作響應時間,要盡可能減少讀,更要盡可能減少磁盤讀,減少讀但不能避免讀。合理利用索引結構定位數(shù)據(jù)可大大降低讀的數(shù)據(jù)量,圖8顯示有索引情況下讀10000行數(shù)據(jù)的統(tǒng)計信息。

        圖8 有索引的數(shù)據(jù)讀

        圖7和圖8的數(shù)據(jù)都來源于查詢同一數(shù)據(jù)庫表的10000行記錄,區(qū)別在于圖8顯示表中有索引時的查詢統(tǒng)計信息。分析這兩個圖中Fetch行中query列的數(shù)據(jù)量可知,沒有索引時查詢走全表掃描,讀10000行數(shù)據(jù)累計讀680000塊數(shù)據(jù),平均讀每行數(shù)據(jù)要掃描68塊才讀到需要的數(shù)據(jù);有索引情況下讀10000行數(shù)據(jù)累計讀30020塊數(shù)據(jù),平均讀每行數(shù)據(jù)僅掃描3.002塊,首先查找索引獲得數(shù)據(jù)的ROWID,再根據(jù)ROWID讀數(shù)據(jù)行,從而避免了全表掃描。減少物理讀的有效措施是提高緩存存儲量,使用內(nèi)存緩存讀取過的數(shù)據(jù),使之后的數(shù)據(jù)讀取直接從內(nèi)存中獲得。

        數(shù)據(jù)庫的寫操作由后臺進程完成,數(shù)據(jù)庫系統(tǒng)為提高性能,都是先寫日志文件,再根據(jù)觸發(fā)條件寫數(shù)據(jù)文件。這里與SQL編寫相關的是日志文件的寫操作,提交(COMMIT)語句直接觸發(fā)日志文件的寫操作,每執(zhí)行一次提交操作,數(shù)據(jù)庫會立即寫日志文件,這時就是一次物理寫,物理寫過于頻繁會大大降低系統(tǒng)性能,這時可考慮批量操作后再提交,比如向表中插入10 000數(shù)據(jù),可每插入1 000行提交1次,避免每插入1行提交1次。

        3 結論

        本文在分析軟件系統(tǒng)中數(shù)據(jù)庫系統(tǒng)的操作響應時間的基礎上,結合實際測試給出軟件開發(fā)過程中可對數(shù)據(jù)庫性能進行優(yōu)化的具體措施。這些措施已經(jīng)實施在基金項目中,系統(tǒng)性能得到了大幅度提高。

        [1]吳越勝,張耀輝.Oracle9i數(shù)據(jù)庫性能調(diào)整與優(yōu)化[M].清華大學出版社,2005.

        [2]蔣海鷗,李浩,金海.未公開的Oracle數(shù)據(jù)庫秘密[M].人民郵電出版社,2011.

        [3]蓋國強,馮春培,葉梁,馮大輝.Oracle數(shù)據(jù)庫性能優(yōu)化[M].人民郵電出版社,2005.

        [4]童家旺,胡怡文,馮大輝.Oracle性能診斷藝術[M].人民郵電出版,2009.

        猜你喜歡
        數(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
        兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        數(shù)據(jù)庫
        財經(jīng)(2015年3期)2015-06-09 17:41:31
        數(shù)據(jù)庫
        財經(jīng)(2014年21期)2014-08-18 01:50:18
        數(shù)據(jù)庫
        財經(jīng)(2014年6期)2014-03-12 08:28:19
        數(shù)據(jù)庫
        財經(jīng)(2013年6期)2013-04-29 17:59:30
        午夜男女很黄的视频| 亚洲国产精品美女久久久| 亚洲中文字幕第一页免费| 久久久99精品免费视频| 亚洲精品无amm毛片| 亚洲中文字幕第一页在线| 91极品尤物在线观看播放| 国产美女高潮流白浆视频| 好大好湿好硬顶到了好爽视频 | 2020年国产精品| 91丝袜美腿亚洲一区二区| 久久视频在线| 久久亚洲精品成人| 亚洲视频精品一区二区三区| 亚洲综合偷拍一区二区| 日韩精品中文字幕第二页| 粗大的内捧猛烈进出少妇| 人人妻人人澡人人爽欧美一区九九| 精品丝袜人妻久久久久久| 亚洲av乱码国产精品色| 亚洲国产精品中文字幕久久| 精品少妇无码av无码专区| 国产主播福利一区二区| 亚洲av一二三又爽又爽又色| 91在线视频在线视频| 一本一道av中文字幕无码| 老熟妇Av| 亚洲国产精品夜男人天堂| 国产精品国产三级国产av18| 又大又紧又粉嫩18p少妇| 国产久视频国内精品999| 亚洲av色香蕉第一区二区三区 | 亚洲欧美日韩精品久久| 久久精品国产精品亚洲毛片| 水蜜桃视频在线观看免费18| 亚洲精品熟女av影院| 隔壁老王国产在线精品| 久久精品国产亚洲av四虎| 国产主播在线 | 中文| 亚洲av激情久久精品人| 亚洲精品一区二区三区在线观|