劉思穎,陶正亮,何云峰,于俊清*
(1.廣東粵電信息科技有限公司,廣東 廣州510630;2.華中科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,湖北 武漢430074)
數(shù)據(jù)庫技術(shù)是當代信息科學(xué)與技術(shù)的重要組成部分之一,主要研究計算機在信息處理過程中數(shù)據(jù)組織和存儲的問題,是管理信息系統(tǒng)的核心[1]。隨著信息技術(shù)的發(fā)展,數(shù)據(jù)庫系統(tǒng)在電力企業(yè)中得到了廣泛的應(yīng)用,包括燃料信息系統(tǒng)[2-3]、財務(wù)系統(tǒng)[4]、大型設(shè)備在線監(jiān)測和故障診斷系統(tǒng)[5-6]、大數(shù)據(jù)分析系統(tǒng)[7-8]等。然而,隨著數(shù)據(jù)庫存儲量的變大,數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能問題也越來越突出[9-10],應(yīng)用系統(tǒng)的用戶體驗越來越差,提高數(shù)據(jù)庫的性能是一個亟需解決的問題。Oracle 數(shù)據(jù)庫是前應(yīng)用比較廣泛的關(guān)系型數(shù)據(jù)庫之一,據(jù)統(tǒng)計,在全球有93%的上市.COM 公司和65 家“財富全球100強”企業(yè)都選擇Oracle 數(shù)據(jù)庫來開展電子商務(wù),中國企業(yè)也廣泛采用了Oracle數(shù)據(jù)庫[11],因此基于Oracle 數(shù)據(jù)庫性能優(yōu)化的研究具有十分重要的意義[12-14]。
通過對火力發(fā)電企業(yè)中重要的應(yīng)用系統(tǒng)燃料信息系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)以及Oracle 的分區(qū)特性進行分析,使用平均每條SQL語句的執(zhí)行時間來衡量數(shù)據(jù)庫的性能,采用多項式擬合求解出局部最優(yōu)的內(nèi)存參數(shù),通過調(diào)整、記錄幫助用戶找到使性能最優(yōu)的內(nèi)存參數(shù)。結(jié)合Oracle 數(shù)據(jù)庫以及系統(tǒng)數(shù)據(jù)的特點,制定合理的優(yōu)化方案,合理分配Oracle 的內(nèi)存并解決系統(tǒng)數(shù)據(jù)庫中表的數(shù)據(jù)太多的問題,提高系統(tǒng)訪問數(shù)據(jù)庫的速度,保證系統(tǒng)高效且穩(wěn)定地運行[15]。
燃料信息系統(tǒng)是一個典型B/S 架構(gòu)的應(yīng)用系統(tǒng),利 用Java 數(shù) 據(jù) 庫 連 接(Java Database Connectivity,JDBC)來訪問數(shù)據(jù)庫。前臺界面發(fā)送數(shù)據(jù)請求傳給Tomcat 應(yīng)用服務(wù)器,Tomcat 通過Java 調(diào)用Oracle 數(shù)據(jù)驅(qū)動程序,數(shù)據(jù)庫驅(qū)動程序?qū)?shù)據(jù)請求傳給數(shù)據(jù)庫服務(wù)器,然后從數(shù)據(jù)庫返回數(shù)據(jù),數(shù)據(jù)沿著請求順序返回到前臺界面。其中,Java 代碼會被編譯成字節(jié)碼直接運行,Java 字節(jié)碼是Java 虛擬機(Java Virtual Machine,JVM)執(zhí)行的一種命令格式。Oracle 數(shù)據(jù)庫的SGA 提供一塊區(qū)域——Java 池,供運行的Java 代碼以及JVM內(nèi)的數(shù)據(jù)使用,Java 池的大小會影響Java 代碼運行的效率,從而影響數(shù)據(jù)庫的訪問性能。Java 池由參數(shù)JAVA_POOL_SIZE 控制,調(diào)整該參數(shù)的大小會改變系統(tǒng)數(shù)據(jù)庫的性能。
緩存是數(shù)據(jù)交換的緩沖區(qū),一般存在于內(nèi)存中。當應(yīng)用程序需要讀取數(shù)據(jù)的時候,會優(yōu)先訪問緩存,如果緩存中存在相應(yīng)的數(shù)據(jù),就直接返回數(shù)據(jù),這樣就能提高應(yīng)用程序的執(zhí)行效率,縮短用戶的等待時間。Oracle 數(shù)據(jù)庫在執(zhí)行一條SQL 語句的時候,會在共享池里面確定這條語句的哈希值是否存在。如果哈希值存在,Oracle 執(zhí)行軟解析,直接運行執(zhí)行計劃;如果哈希值不存在,Oracle 執(zhí)行硬解析,對SQL 語句進行解析,生成解析樹,包括視圖替換、表達式轉(zhuǎn)換等等,然后生成并運行執(zhí)行計劃。硬解析是很昂貴的操作,大約占整個SQL語句執(zhí)行時間的70%左右。
在運行執(zhí)行計劃之后,返回結(jié)果數(shù)據(jù),oracle 會在數(shù)據(jù)緩存區(qū)里查找結(jié)果數(shù)據(jù)是否存在,如果數(shù)據(jù)存在,則直接將數(shù)據(jù)從內(nèi)存返回給應(yīng)用程序。如果數(shù)據(jù)不存在,會將數(shù)據(jù)從硬盤加載到數(shù)據(jù)緩存區(qū)中,再返回給用戶。內(nèi)存的存取速度與硬盤的存取速度差異較大,數(shù)據(jù)從硬盤讀取相當耗時,相對于從硬盤讀取,從內(nèi)存中讀取數(shù)據(jù)幾乎不耗時。因此如果數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)中,其返回給應(yīng)用程序的時間將會很短。
由此可見,共享池和數(shù)據(jù)緩存區(qū)的大小會影響數(shù)據(jù)庫的性能。在Oracle 數(shù)據(jù)庫中,共享池大小由參數(shù)SHARED_POOL_SIZE決定,數(shù)據(jù)緩存區(qū)的大小由參數(shù)DB_CACHE_SIZE 決定,對這兩個參數(shù)進行合理的調(diào)整,就可能提高數(shù)據(jù)庫的性能。
燃料信息系統(tǒng)是一個實時系統(tǒng),并發(fā)量比較低,對于每一次操作,好的用戶體驗是最小時間內(nèi)返回數(shù)據(jù)結(jié)果。用戶的每一次操作都是后臺訪問數(shù)據(jù)庫的一個過程,因此,可以通過SQL語句的平均執(zhí)行時間來衡量系統(tǒng)數(shù)據(jù)庫的性能,平均執(zhí)行時間越短,數(shù)據(jù)庫性能越好,平均執(zhí)行時間越長,數(shù)據(jù)庫性能問題越嚴重。
通過前面分析,調(diào)整Oracle的3個參數(shù):SHARED_POOL_SIZE、DB_CACHE_SIZE 和JAVA_POOL_SIZE可以影響運行性能。每次調(diào)整都會帶來不同的性能影響,依次根據(jù)每個參數(shù)(x值)以及最后的結(jié)果(平均一條SQL語句的執(zhí)行時間,y值)進行多項式擬合,找到這個參數(shù)的最優(yōu)值。
記錄每一次調(diào)整的內(nèi)存參數(shù)值以及對應(yīng)的數(shù)據(jù)庫性能情況,由參數(shù)的值與最終結(jié)果構(gòu)成的集合(xi,yi),i=0,1,2,…,m,求出一個函數(shù):
使偏差的平方和:
達到最小。
顯然I 為a0,a1,a2,…,an的多元函數(shù),求偏差的平方和即為求I 的極小值,根據(jù)多元函數(shù)求極值的必要條件,就是求I對a0,a1,a2,…,an的偏導(dǎo)數(shù)為0,即
在內(nèi)存參數(shù)開始調(diào)整的時候,隨著參數(shù)值的變大,最終結(jié)果y值會慢慢變?。ㄐ阅茏兒茫骄鶊?zhí)行時間變短),當達到最合理值的時候,y值達到最小值,超過這個合理的值繼續(xù)變大,y 值會慢慢變大。這符合二次曲線的變化特點,可以采用二次曲線進行擬合并求解。對于求出的二次曲線方程,找到使y 值最小的x 值,即為這個內(nèi)存參數(shù)的最優(yōu)值。另外,由于x 值必須大于零,并且二次曲線擬合可能帶來誤差,所以根據(jù)二次曲線方程求出來的x 值,必須落在給定集合中最大值與最小值之間,如果不在此區(qū)間,則該內(nèi)存參數(shù)的最優(yōu)值為集合中最大值與最小值之一。
多項式擬合的方法求解最優(yōu)內(nèi)存參數(shù)的方法在理論上能求出合理的內(nèi)存參數(shù)值,如果3 個參數(shù)之間互不影響,則能求出最優(yōu)值。如果3 個參數(shù)相互影響較大,則每次求出只是合理的值,多次求解會慢慢逼近最優(yōu)值。另外,由于這個方法依據(jù)之前的調(diào)整結(jié)果,所以之前的結(jié)果集對求出最優(yōu)內(nèi)存參數(shù)速度的影響較大,即對算法的收斂速度影響較大。在實際使用中,可以先對內(nèi)存參數(shù)以遞增的方式進行調(diào)整,若干次調(diào)整之后就可以使用算法求解的參數(shù)進行設(shè)置,這樣多項式擬合求解的效果較好。
信息系統(tǒng)最基本的功能是數(shù)據(jù)處理功能,包括數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲、數(shù)據(jù)管理、數(shù)據(jù)檢索以及數(shù)據(jù)傳遞等,屬于數(shù)據(jù)密集型的應(yīng)用系統(tǒng)[16]。通常,信息系統(tǒng)在使用初期,數(shù)據(jù)量都比較小,隨著時間的累計,數(shù)據(jù)量會慢慢變大,從而引起數(shù)據(jù)庫性能的問題。
作為一個典型的信息系統(tǒng)——燃料信息系統(tǒng),數(shù)據(jù)庫數(shù)據(jù)量大,數(shù)據(jù)種類比較雜,但大部分數(shù)據(jù)都具有相似的特點:近期的數(shù)據(jù)使用較頻繁,時間久遠的數(shù)據(jù)很少甚至不會被使用。這樣的數(shù)據(jù)特點很符合Oracle表分區(qū)的應(yīng)用場景,對于表分區(qū),Oracle 給了兩條建議[17]:
1)一個表的數(shù)據(jù)大小大于2 GB 時要考慮進行分區(qū)。
2)如果表中包含歷史數(shù)據(jù),并且新的數(shù)據(jù)會加到新的分區(qū)。比如一個包含一年歷史數(shù)據(jù)的表,只有當前月份的數(shù)據(jù)可以被修改,而其他十一個月的數(shù)據(jù)為只讀。
很多數(shù)據(jù)表符合第二條建議,對這樣的表可以進行分區(qū)。使用Oracle支持的范圍分區(qū)技術(shù)可以將這些數(shù)據(jù)表按照時間分為兩部分,進行分區(qū)的時候指定一個分區(qū)時間,在指定時間之前的數(shù)據(jù)作為一個部分,之后的數(shù)據(jù)作為另一部分。由于對各分區(qū)的操作可以相互獨立地進行,這樣將數(shù)據(jù)表拆分為了兩個比較小的數(shù)據(jù)表,解決大表帶來的性能問題。
雖然數(shù)據(jù)表分區(qū)可以解決大表帶來的問題,但是表分區(qū)也是有代價的,一個表分成幾個區(qū),對于這幾個分區(qū)的維護需要時間,因此,并不是所有的表都適合被分區(qū),分區(qū)能否帶來數(shù)據(jù)庫性能提升不能僅從理論方面分析,還需結(jié)合實際系統(tǒng)應(yīng)用的場景。
下面將從兩種情況——表有無索引和表的增刪改查操作比例不同,通過具體的實驗來測試表分區(qū)對數(shù)據(jù)庫性能的影響。由于系統(tǒng)中對表的使用主要是查找和插入數(shù)據(jù),刪除和修改數(shù)據(jù)情況相對較少,為了簡化實驗,將表的使用只分為查找和插入數(shù)據(jù)兩種情況。
實驗選擇了一個55 個字段的數(shù)據(jù)庫表(HC_GHJLD),它是燃料系統(tǒng)的核心表之一,存儲入廠煤計量數(shù)據(jù),查詢和插入操作頻繁。根據(jù)HC_GHJLD 構(gòu)造3 張結(jié)構(gòu)完全相同的表,其中一張表(表名為HC_TEST)臨時存儲數(shù)據(jù),另外兩張表作為測試表,其中一個表(表名為HC_TEST_BEFORE)不做任何處理,另一個表(表名為HC_TEST_AFTER)按日期類型的字段到廠日期(DCRQ)進行分成兩個區(qū),分區(qū)時間間隔為一年,即一年前至今的數(shù)據(jù)作為一個分區(qū),一年以前的所有數(shù)據(jù)作為另一個分區(qū)。
1)查找插入語句比例不同對表分區(qū)的影響
準備11組測試數(shù)據(jù),每組120 000條測試語句,這120 000條語句只包含查找和插入語句,11組數(shù)據(jù)的查找和插入語句的比例分別為0∶10、1∶9、2∶8、3∶7、4∶6、5∶5、6∶4、7∶3、8∶2、9∶1、10∶0。其中,查找和插入語句比例為0∶10 表示一個表只會插入數(shù)據(jù),而不會查找,這樣的表基本不會存在;查找和插入語句比例為10∶0表示一個表的數(shù)據(jù)不會增加,這樣的表中可能存放一些固定數(shù)據(jù),基本不更新。
根據(jù)實驗結(jié)果生成折線圖如圖1 所示,從圖中可以看出,當查找與插入語句比例為0∶10到6∶4之間時,隨著比例的變大,時間縮短比例也會變大。當查找與插入語句比例為6∶4 的時候,時間縮短的比例達到最大,為63.34%。當查找與插入語句比例為7∶3 到9∶1之間時,時間縮短比例很穩(wěn)定,都是60%以上。當查找與插入語句比例為10∶0 時,分區(qū)并不能縮短執(zhí)行時間。
圖1 分區(qū)前后不同查找與插入比例的執(zhí)行時間縮短比例圖Fig.1 The execution time reduction ratio of different query and insertion ratios before and after table partition
2)表索引對分區(qū)的影響
在關(guān)系型數(shù)據(jù)庫中,索引是一種與表有關(guān)的數(shù)據(jù)庫結(jié)構(gòu),使用索引可以加快數(shù)據(jù)查找的速度[18]。對表進行分區(qū)時,如果表本身就包含索引,表的幾個分區(qū)可以共同使用一個索引,這種索引叫全局索引。每個分區(qū)也可以有自己的索引,這種索引稱為本地索引,下面的實驗過程與前面的相同,選擇的表和測試數(shù)據(jù)完全一樣,唯一的區(qū)別就是測試表(HC_TEST_BEFORE 和HC_TEST_AFTER)都不包含索引。
根據(jù)實驗結(jié)果生成折線圖如圖2所示,可以看出,時間縮短比例基本和查找與插入語句比例呈線性關(guān)系,查找與插入語句的比例越大,時間縮短的百分比越高。
圖2 表沒有索引在分區(qū)前后不同查找與插入比例的執(zhí)行時間縮短比例圖Fig.2 The execution time reduction ratio of different query and insertion ratios before and after table(no index)partition
將兩次實驗結(jié)果進行對比,當查找與插入語句比例在0∶10 到4∶6 之間時,有索引和沒有索引在表分區(qū)前后的時間縮短比例基本相同,有索引情況的時間縮短比例略高。當查找與插入語句比例在5∶5到10∶0之間時,沒有索引情況下在表分區(qū)前后的時間縮短比例比有索引情況下的時間縮短比例更高,并且隨著查找與插入語句比例增大,兩者的差別也變大。
Oracle 提供的分區(qū)建議是面向所有的數(shù)據(jù)庫,沒有結(jié)合實際系統(tǒng)的數(shù)據(jù)表和特定的分區(qū)方法。燃料信息數(shù)據(jù)庫采用時間范圍分區(qū),將數(shù)據(jù)分為兩個區(qū),制定數(shù)據(jù)表分區(qū)的策略還需結(jié)合具體的情況。一般來說,數(shù)據(jù)表表中的記錄越多,表的大小就越大,下面通過實驗測試表中記錄條數(shù)不同對分區(qū)的影響,根據(jù)實驗結(jié)果來制定分區(qū)策略。
為了加快縮短每組實驗的時間,在表HC_TEST_BEFORE 和HC_TEST_AFTER 同樣的字段上建立唯一索引,準備兩組數(shù)據(jù):
1)準備12 組分別包含1 000 條、3 000 條、5 000條、10 000條、20 000條、50 000條、100 000條、150 000條、200 000 條、300 000 條、400 000 條、500 000 條數(shù)據(jù)作為數(shù)據(jù)庫表中的原始數(shù)據(jù)。
2)準備12 組測試數(shù)據(jù),查找與插入語句比例為6∶4,每組數(shù)據(jù)的條數(shù)為原始數(shù)據(jù)條數(shù)*0.8,即對于1 000 條原始數(shù)據(jù)準備1 000*0.8=800 條測試數(shù)據(jù),以此類推。
根據(jù)實驗結(jié)果生成折線圖如圖3 所示,紅色字體表示負值,可以看出,20 000 條記錄是一個臨界點,當表中的記錄條數(shù)小于20 000條時,記錄條數(shù)越少,表分區(qū)帶來的開銷比例越大;當表中的記錄條數(shù)大于20 000 條時,表分區(qū)會在不同程度上縮短執(zhí)行時間。當表中的記錄條數(shù)為100 000條時,表分區(qū)時間縮短比例達到最大—77.13%。
圖3 不同記錄條數(shù)在表分區(qū)前后的執(zhí)行時間縮短比例圖Fig.3 The execution time reduction ratio of different number of records before and after table partition
根據(jù)這個實驗,制定數(shù)據(jù)表分區(qū)策略為:當表中包含的記錄條數(shù)大于20 000 條時,如果表上執(zhí)行的查找和插入操作次數(shù)在0∶10到9∶1 之間,就對這個表進行分區(qū),分區(qū)方法為時間范圍分區(qū)。
為了方便燃料信息系統(tǒng)的用戶隨時了解數(shù)據(jù)庫的性能情況,設(shè)計了一個Oracle數(shù)據(jù)庫性能監(jiān)控的系統(tǒng),其結(jié)構(gòu)如圖4所示。系統(tǒng)展示了數(shù)據(jù)庫的四種性能信息:共享SQL 區(qū)的使用率、數(shù)據(jù)字典緩沖區(qū)的命中率、數(shù)據(jù)緩存區(qū)的命中率以及日志緩沖區(qū)的申請失敗率,并實現(xiàn)了兩種數(shù)據(jù)庫性能調(diào)整與優(yōu)化的方案:調(diào)整內(nèi)存參數(shù)和數(shù)據(jù)表分區(qū)。在數(shù)據(jù)庫性能監(jiān)控的系統(tǒng)中,用戶在發(fā)現(xiàn)數(shù)據(jù)庫出現(xiàn)性能問題的時候,可以通過調(diào)整內(nèi)存參數(shù)或者對表進行分區(qū)來優(yōu)化數(shù)據(jù)庫的性能。
圖4 系統(tǒng)功能模塊圖Fig.4 System function module diagram
數(shù)據(jù)庫性能監(jiān)控是為了實時反映數(shù)據(jù)庫的性能情況,為了能很直觀地顯示數(shù)據(jù)庫性能情況,通過折線圖來實時展示數(shù)據(jù)庫性能信息,利用多線程技術(shù),每隔5 s從數(shù)據(jù)庫系統(tǒng)視圖中讀取一次性能數(shù)據(jù),主要采集SGA的性能信息,包括共享池、數(shù)據(jù)緩沖區(qū)和日志緩沖區(qū)。用戶登錄系統(tǒng)之后,會顯示性能監(jiān)控界面,如圖5所示。
調(diào)整內(nèi)存參數(shù)只能調(diào)整3 個參數(shù)DB_CACHE_SIZE、JAVA_POOL_SIZE 和SHARED_POOL_SIZE,同時還會顯示SGA 當前的大小,但SGA 的值SGA_TARGET 不可改,用戶設(shè)置最小的參數(shù)值點擊確定會彈出確定對話框,圖6所示。
用戶通過最優(yōu)設(shè)定,系統(tǒng)后臺會根據(jù)當前的SGA_TARGET 值,利用二次曲線擬合,求出每個參數(shù)的最優(yōu)值,即為推薦給用戶的最優(yōu)內(nèi)存參數(shù)。
圖5 數(shù)據(jù)庫性能監(jiān)控Fig.5 Database performance monitoring interface
圖6 調(diào)整內(nèi)存參數(shù)Fig.6 Interface for adjusting memory parameters
數(shù)據(jù)表分區(qū)首先要根據(jù)分區(qū)策略確定需要進行分區(qū)的數(shù)據(jù)表。通過數(shù)據(jù)庫的審計功能,可以獲得表名、使用次數(shù)(查找和插入次數(shù)和)、查找次數(shù)、插入次數(shù)等信息。遍歷AUDIT_SUMMARY中的每一條記錄,如果查找和插入比例在0∶10到9∶1 之間,則根據(jù)表名從數(shù)據(jù)庫系統(tǒng)視圖USER_TAB_COLUMNS中查詢表中是否包含日期字段,如果包含,則根據(jù)聚集函數(shù)COUNT(*)查詢表中的記錄條數(shù),如果記錄條數(shù)大于20 000,則根據(jù)表名從系統(tǒng)視圖USER_INDEXES 中查詢表上是否包含索引,根據(jù)查詢的結(jié)果更新當前表的記錄條數(shù)和有無索引的信息。最后得到的結(jié)果顯示在界面上,如圖7所示。
圖7 根據(jù)算法求出適合分區(qū)的表Fig.7 The table suitable for partition according to the algorithm
Oracle 數(shù)據(jù)庫支持分區(qū),但是只支持在表創(chuàng)建的時候進行分區(qū),對于存在數(shù)據(jù)的表不能直接分區(qū)。系統(tǒng)利用SQL 語句實現(xiàn)動態(tài)分區(qū),即由用戶選擇分區(qū)的表并且指定分區(qū)時間間隔,過程對用戶透明。分區(qū)的具體步驟如下:
1)根據(jù)當前時間生成字符串與待分區(qū)的表名拼成新表的臨時表名。
2)按照分區(qū)字段和分區(qū)時間生成分區(qū)語句,其中分區(qū)語句包含舊表信息(表字段和字段數(shù)據(jù)類型)和舊表數(shù)據(jù)。
3)執(zhí)行分區(qū)語句創(chuàng)建臨時新表,此時臨時表已分區(qū)并包含舊表的數(shù)據(jù)。
4)通過數(shù)據(jù)庫提供的RENAME(重命名)操作將舊表重命名,將臨時表表名重命名為舊表表名,此時舊表表名已為別名,臨時表(稱為新表)已命名為舊表表名。
5)從舊表的元數(shù)據(jù)中提取字段默認值、備注、約束等字段信息增加到新表。
6) 從 系 統(tǒng) 視 圖 USER_INDEXS 和 USER_TRIGGERS 中分別提取舊表的索引、觸發(fā)器等表的信息。
7)通過DROP 語句刪除舊表的所有信息(數(shù)據(jù)和結(jié)構(gòu)),索引、觸發(fā)器等信息會同時被刪除。
8)將提取的舊表索引、觸發(fā)器等信息增加到新表。
9)分區(qū)結(jié)束。
隨著信息時代的發(fā)展,數(shù)據(jù)庫技術(shù)的應(yīng)用從傳統(tǒng)的商務(wù)數(shù)據(jù)處理逐漸發(fā)展到許多新的領(lǐng)域,數(shù)據(jù)庫的規(guī)模也不斷擴大,數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能問題也越來越突出。在對數(shù)據(jù)庫優(yōu)化技術(shù)的國內(nèi)外研究現(xiàn)狀以及信息系統(tǒng)進行深入研究分析之后,發(fā)現(xiàn)許多優(yōu)化思想對現(xiàn)有的系統(tǒng)并不適用,數(shù)據(jù)庫性能優(yōu)化工具也不能很好地解決數(shù)據(jù)庫的性能問題。本文結(jié)合數(shù)據(jù)庫性能優(yōu)化理論方面的研究,從兩個方面制定優(yōu)化策略對數(shù)據(jù)庫進行調(diào)整以達到優(yōu)化目的,并且設(shè)計了一個數(shù)據(jù)庫性能監(jiān)控系統(tǒng)。
1)結(jié)合信息系統(tǒng)訪問數(shù)據(jù)庫的原理以及緩存對SQL 語句執(zhí)行的影響選擇需要調(diào)整的內(nèi)存參數(shù),使用平均一條SQL 語句的執(zhí)行時間來衡量數(shù)據(jù)庫的性能,對內(nèi)存參數(shù)和數(shù)據(jù)庫性能關(guān)系構(gòu)建數(shù)學(xué)模型,采用多項式擬合,并利用貪心算法,求出每個參數(shù)的局部最優(yōu)解,通過不斷迭代找到最適合系統(tǒng)的內(nèi)存參數(shù)值。
2)根據(jù)數(shù)據(jù)庫支持的分區(qū)技術(shù)結(jié)合信息系統(tǒng)數(shù)據(jù)的特點,確定分區(qū)的方法為根據(jù)時間范圍分區(qū),通過大量實驗來研究不同情況下表分區(qū)對數(shù)據(jù)庫性能的影響,確定合適的分區(qū)策略,給用戶推薦系統(tǒng)數(shù)據(jù)庫中所有適合分區(qū)的表,并使用程序?qū)崿F(xiàn)分區(qū)。
3)設(shè)計了一款數(shù)據(jù)庫性能監(jiān)控工具,通過折線圖從共享SQL區(qū)的使用率、數(shù)據(jù)字典緩沖區(qū)命中率、數(shù)據(jù)緩存區(qū)的命中率以及日志緩沖區(qū)的申請失敗率4個方面實時顯示系統(tǒng)性能情況。
[參 考 文 獻](References)
[1] Marco Vieira,Henrique Madeira. Towards a security benchmark for database management systems[C]. 2005 International Conference on Dependable Systems and Networks(DSN 2005),2005.
[2] 韓鵬.某火電廠燃料全過程信息化管理系統(tǒng)開發(fā)與應(yīng)用[D].北京:華北電力大學(xué),2016.HAN Peng.Development and application of the fuel overall process management information system of a thermal power plant[D].Beijing:North China Electric Power University,2016.
[3] 王夢婷,馬平.B/S模式火電廠燃料管理信息系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機仿真,2014,31(10):137-140,169.WANG Mengting,MA Ping.B/S mode coal-fired power plant fuel management information system design and implementation[J].Computer Simulation,2014,31(10):137-140,169.
[4] 杜梓平.財務(wù)信息管理系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2009.DU Ziping. Design and implementation of the financial management information system [D]. Beijing:Beijing University of Posts and Telecommunications,2009.
[5] 王頂磊.大型發(fā)電機組轉(zhuǎn)機狀態(tài)智能監(jiān)測[J].湖北電力,2019,43(06):61-66.WANG Dinglei.Intelligent monitoring on rotary machinery status of large generating sets[J]. Hubei Electric Power,2019,43(06):61-66.
[6] 宋宇.水輪發(fā)電機組故障診斷系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)與軟件工程,2020,(19):162-163.
[7] 孫鵬,林光,邢智,等.智能電表及其數(shù)據(jù)在共享型配網(wǎng)中的深度應(yīng)用研究[J].湖北電力,2020,44(02):58-66.SUN Peng,LIN Guang,XING Zhi,et al.Deep application research of smart meters and its data in sharing-type distribution network[J].Hubei Electric Power,2020,44(02):58-66.
[8] 劉洋.一種基于大數(shù)據(jù)分析的電力客戶服務(wù)需求預(yù)測方法[J].中國新技術(shù)新產(chǎn)品,2020,(23):23-25.
[9] CAI Juan. Research on application of computer database technology in information management[C]. 2014 IEEE workshop on advanced research and technology in industry applications(WARTIA),2014.
[10] YAO Leiyue,JIANG Jie. Analysis and optimization for bottlenecks of database in massive management of information system[C].2010 International Conference on Computer and Communication Technologies in Agriculture Engineering,2010.
[11] 袁愛梅.Oracle 數(shù)據(jù)庫性能優(yōu)化研究[D].上海:華東師范大學(xué),2007.
[12] 王文閣.信息系統(tǒng)Oracle 數(shù)據(jù)庫性能優(yōu)化研究[J].數(shù)字技術(shù)與應(yīng)用,2020,38(11):59-61.WANG Wenge. Research on performance optimization of oracle database in information system[J].Digital Technology and Application,2020,38(11):59-61.
[13] 付文哲,韓震,司玉杰.關(guān)于處理數(shù)據(jù)庫優(yōu)化設(shè)計[J].電腦知識與技術(shù),2020,16(32):28-29.
[14] 吳尚,張靖,徐道磊.Oracle數(shù)據(jù)庫性能的優(yōu)化設(shè)計思路研究[J].數(shù)字技術(shù)與應(yīng)用,2019,37(12):167,169.WU Shang,ZHANG Jing,XU Daolei.Research on optimal design of oracle database performance [J]. Digital Technology and Application,2019,37(12):167,169.
[15] 陶正亮.燃料信息數(shù)據(jù)庫性能的優(yōu)化方法研究[D].武漢:華中科技大學(xué),2016.TAO Zhengliang.Research on optimization method of fuel information database performance[D]. Wuhan:Huazhong University of Science and Technology,2016.
[16] 吳璇.基于信息系統(tǒng)的審計理論、模型及應(yīng)用[D].天津:天津大學(xué),2004.WU Xuan.Theory,model and application of auditing based on information system[D].Tianjin:Tianjin University,2004.
[17] 蔣勇.ORACLE 數(shù)據(jù)庫分區(qū)技術(shù)及其應(yīng)用[J].科技信息,2011,(29):53-54.
[18] GUO Wenming,HU Zhiqiang. Memory database index optimization [C]. 2010 International Conference on Computational Intelligence and Software Engineering,2010.