劉上朝
摘 要:數(shù)據(jù)庫的規(guī)劃與建設(shè)是企業(yè)信息化建設(shè)的一項重要工作,信息化建設(shè)的基點在數(shù)據(jù)庫。信息化的優(yōu)化策略一般包括服務(wù)器操作系統(tǒng)參數(shù)調(diào)整、數(shù)據(jù)庫性能調(diào)整、SQL語句分析等幾個方面。分析評價數(shù)據(jù)庫性能主要指標(biāo)有數(shù)據(jù)庫吞吐量、數(shù)據(jù)庫用戶響應(yīng)時間兩項指標(biāo)。其中對海量數(shù)據(jù)的篩選、統(tǒng)計,存儲過程的執(zhí)行及響應(yīng)速度效率高.
關(guān)鍵詞:性能調(diào)優(yōu);響應(yīng)速度;優(yōu)化策略;
中圖分類號:F49 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-3520(2015)-09-00-01
一、引言
數(shù)據(jù)庫技術(shù)在20世紀(jì)興起,幫助企業(yè)解決數(shù)據(jù)處理的問題。隨著信息時代的來臨,數(shù)據(jù)越來越多,現(xiàn)階段企業(yè)信息化建設(shè)過程當(dāng)中,數(shù)據(jù)庫的使用已經(jīng)成為企業(yè)信息化的標(biāo)志。數(shù)據(jù)庫作為信息產(chǎn)業(yè)的重要組成部分對全球經(jīng)濟(jì)的發(fā)展與推動起到了非常重要的作用。近幾年隨著我國等新興國家信息化建設(shè)的迅速發(fā)展,為數(shù)據(jù)庫及其相關(guān)信息服務(wù)業(yè)帶來了更大的機(jī)遇,傳統(tǒng)制造行業(yè)的信息化水平也得到了發(fā)展。
二、存儲過程
存儲過程是存放在服務(wù)器上的SQL語句的預(yù)編譯集合.與傳統(tǒng)的SQL語句相比,使用存儲過程明顯具有以下優(yōu)點:
1、模塊化編程.創(chuàng)建好存儲過程后,將其存放在數(shù)據(jù)庫中,可以在程序中多次調(diào)用。
2、更快的執(zhí)行速度. 如果一個程序需要大量T-SQL代碼,或需要被反復(fù)執(zhí)行,那么使用存儲過程的速度會快很多。因為存儲過程是放在服務(wù)器端執(zhí)行的,通過網(wǎng)絡(luò)把計算機(jī)結(jié)果傳遞給調(diào)用的客戶端,同樣的計算在服務(wù)器端執(zhí)行比在客戶端執(zhí)行效率要高很多。
3、減少網(wǎng)絡(luò)流量
一個需要數(shù)百行Transact-SQL語句的操作有時只需要執(zhí)行一條調(diào)用存儲過程的語句就可以了.在網(wǎng)絡(luò)上傳送一個調(diào)用而不是幾百行代碼,可以減少網(wǎng)絡(luò)流量,提高響應(yīng)速度。
4、增強(qiáng)數(shù)據(jù)庫的安全性
一個用戶可能沒有執(zhí)行存儲過程中語句的權(quán)限,但是可以被賦予執(zhí)行存儲過程的權(quán)限,這就增強(qiáng)了數(shù)據(jù)庫的安全性。另外,可以通過存儲過程來隱藏用戶可用的數(shù)據(jù)和數(shù)據(jù)操作中涉及的商業(yè)規(guī)則,提高了數(shù)據(jù)安全級別。
三、核心代碼
下面通過在傳統(tǒng)的制造業(yè)中企業(yè)工廠日歷原始數(shù)據(jù)的生成來闡述在SQLSERVER中怎樣創(chuàng)建存儲過程及創(chuàng)建好存儲過程后怎樣調(diào)用.工廠日歷是制造企業(yè)ERP系統(tǒng)的一個重要組成部分,數(shù)據(jù)來自數(shù)據(jù)庫,本例中具體的目的是生成一個月的日期和工作狀態(tài),最大工時和最小工時.并根據(jù)當(dāng)前日期是否是星期六或星期日來調(diào)整工作狀態(tài), 如果當(dāng)前日期是星期六或星期日則工作狀態(tài)為休息,否則為工作日.根據(jù)以上業(yè)務(wù)需求,操作步驟如下:
(一)在SQLSERVER中建立一張名為Factory_date的表,在這個表中建立四個字段Pdate 、State、maxworktime、minworktime、 pdate字段的數(shù)據(jù)類型為日期時間型, State字段的數(shù)據(jù)類型為字符型, 其余兩個字段為整型數(shù)據(jù),用于存放每天最長工作時間和最短工作時間,企業(yè)業(yè)務(wù)里一般是最大工時為20小時,最小工時8小時,Pdate字段為主鍵,用于存儲當(dāng)調(diào)用存儲過程后生成的日期, State字段有兩個值:工作日或休息.
(二)在SQLSERVER的查詢分析器編寫代碼如下:
--功能說明:生成一個月的日歷和工作狀態(tài)
--定義變量
declare @v_firstday datetime
declare @v_lastday datetime
declare @v_date datetime
declare @v_sumdays int
declare @v_counter int
set @v_firstday=convert(datetime, @p_month+'-01')
--求出這個月的總天數(shù)
set @v_lastday=dateadd(mm,datediff(mm,0,@v_firstday)+1,0)-1
set @v_sumdays=day(@v_lastday)-1
--向表中初始化日歷
while @v_counter<=@v_sumdays
begin
數(shù)據(jù)插入語句
--插入的日期為星期六或星期日時把工作狀態(tài)調(diào)為休息
update factory_Date set state='休息'
where datename(dw,pdate) in ('星期六', '星期日')
set @v_counter=@v_counter+1
end;
四、結(jié)束語
本文論述了在SQLSERVER中怎樣創(chuàng)建存儲過程,從系統(tǒng)的架構(gòu)設(shè)計到存儲過程設(shè)計和代碼的編寫,每個環(huán)節(jié)都息息相關(guān)。在設(shè)計過程中充分地考慮存儲過程的應(yīng)用,會給軟件設(shè)計帶來極大的便利,從而大大地提高數(shù)據(jù)庫的讀取效率。
參考文獻(xiàn):
[1]閃四清 <> 清華大學(xué)出版社 2009年
[2]楊明<