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

?

評(píng)價(jià)系統(tǒng)的數(shù)據(jù)庫(kù)優(yōu)化查詢?cè)O(shè)計(jì)

2010-10-27 00:24李北芳黑龍江建筑職業(yè)技術(shù)學(xué)院150008
中國(guó)科技信息 2010年13期
關(guān)鍵詞:子句排序數(shù)據(jù)庫(kù)

李北芳 黑龍江建筑職業(yè)技術(shù)學(xué)院 150008

評(píng)價(jià)系統(tǒng)的數(shù)據(jù)庫(kù)優(yōu)化查詢?cè)O(shè)計(jì)

李北芳 黑龍江建筑職業(yè)技術(shù)學(xué)院 150008

利用計(jì)算機(jī)對(duì)教學(xué)質(zhì)量進(jìn)行管理,是實(shí)現(xiàn)教學(xué)管理規(guī)范化和科學(xué)化的重要手段。本文以黑龍江省教育廳高職高專院校科學(xué)技術(shù)研究項(xiàng)目《高職院校教學(xué)質(zhì)量評(píng)價(jià)系統(tǒng)軟件的開發(fā)與應(yīng)用》項(xiàng)目編號(hào):11525049為例,介紹了教學(xué)質(zhì)量評(píng)價(jià)系統(tǒng)數(shù)據(jù)庫(kù)優(yōu)化查詢的設(shè)計(jì)。

數(shù)據(jù)庫(kù); 評(píng)價(jià)管理; 設(shè)計(jì)優(yōu)化

一、引言

數(shù)據(jù)庫(kù)是整個(gè)系統(tǒng)的核心,它的設(shè)計(jì)直接關(guān)系系統(tǒng)執(zhí)行的效率和系統(tǒng)的穩(wěn)定性。因此在軟件系統(tǒng)開發(fā)中,數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)遵循必要的數(shù)據(jù)庫(kù)范式理論,以減少冗余、保證數(shù)據(jù)的完整性與正確性。只有在合適的數(shù)據(jù)庫(kù)產(chǎn)品上設(shè)計(jì)出合理的數(shù)據(jù)庫(kù)模型,才能降低整個(gè)系統(tǒng)的編程和維護(hù)難度,提高系統(tǒng)的實(shí)際運(yùn)行效率。本文對(duì)教學(xué)質(zhì)量評(píng)價(jià)系統(tǒng)的數(shù)據(jù)查詢的優(yōu)化進(jìn)行探討。

二、基于第三范式的基本表設(shè)技

在基于表驅(qū)動(dòng)的信息管理系統(tǒng)(MIS)中,基本表的設(shè)計(jì)規(guī)范是第三范式(3NF)。第三范式的基本特征是非主鍵屬性只依賴于主鍵屬性?;诘谌妒降臄?shù)據(jù)庫(kù)表設(shè)計(jì)具有很多優(yōu)點(diǎn):一是消除了冗余數(shù)據(jù),節(jié)省了磁盤存儲(chǔ)空間;二是有良好的數(shù)據(jù)完整性限制,即基于主外鍵的參照完整限制和基于主鍵的實(shí)體完整性限制,這使得數(shù)據(jù)容易維護(hù),也容易移植和更新;三是數(shù)據(jù)的可逆性好,在做連接(Join)查詢或者合并表時(shí)不遺漏、也不重復(fù);四是因消除了冗余數(shù)據(jù)(冗余列),在查詢(Select)時(shí)每個(gè)數(shù)據(jù)頁(yè)存的數(shù)據(jù)行就多,這樣就有效地減少了邏輯I/O,每個(gè)Cash存的頁(yè)面就多,也減少物理I/O;五是對(duì)大多數(shù)事務(wù)(Transaction)而言,運(yùn)行性能好;六是物理設(shè)計(jì)(Physical Design)的機(jī)動(dòng)性較大,能滿足日益增長(zhǎng)的用戶需求。

在基本表設(shè)計(jì)中,表的主鍵、外鍵、索引設(shè)計(jì)占有非常重要的地位,但系統(tǒng)設(shè)計(jì)人員往往只注重于滿足用戶要求,而沒有從系統(tǒng)優(yōu)化的高度來認(rèn)識(shí)和重視它們。實(shí)際上,它們與系統(tǒng)的運(yùn)行性能密切相關(guān)。現(xiàn)在從系統(tǒng)數(shù)據(jù)庫(kù)優(yōu)化角度討論這些基本概念及其重要意義:

(1)主鍵(Primary Key):主鍵被用于復(fù)雜的SQL語句時(shí),頻繁地在數(shù)據(jù)訪問中被用到。一個(gè)表只有一個(gè)主鍵。主鍵應(yīng)該有固定值(不能為Null或缺省值,要有相對(duì)穩(wěn)定性),不含代碼信息,易訪問。把常用(眾所周知)的列作為主鍵才有意義。短主鍵最佳(小于25bytes),主鍵的長(zhǎng)短影響索引的大小,索引的大小影響索引頁(yè)的大小,從而影響磁盤I/O。主鍵分為自然主鍵和人為主鍵。自然主鍵由實(shí)體的屬性構(gòu)成,自然主鍵可以是復(fù)合性的,在形成復(fù)合主鍵時(shí),主鍵列不能太多,復(fù)合主鍵使得Join*作復(fù)雜化、也增加了外鍵表的大小。人為主鍵是在沒有合適的自然屬性鍵、或自然屬性復(fù)雜或靈敏度高時(shí),人為形成的。人為主鍵一般是整型值(滿足最小化要求),沒有實(shí)際意義,也略微增加了表的大??;但減少了把它作為外鍵的表的大小。

(2)外鍵(Fo reig n Key):外鍵的作用是建立關(guān)系型數(shù)據(jù)庫(kù)中表之間的關(guān)系(參照完整性),主鍵只能從獨(dú)立的實(shí)體遷移到非獨(dú)立的實(shí)體,成為后者的一個(gè)屬性,被稱為外鍵。

(3)索引(Index):利用索引優(yōu)化系統(tǒng)性能是顯而易見的,對(duì)所有常用于查詢中的Where子句的列和所有用于排序的列創(chuàng)建索引,可以避免整表掃描或訪問,在不改變表的物理結(jié)構(gòu)的情況下,直接訪問特定的數(shù)據(jù)列,這樣減少數(shù)據(jù)存取時(shí)間;利用索引可以優(yōu)化或排除耗時(shí)的分類*作;把數(shù)據(jù)分散到不同的頁(yè)面上,就分散了插入的數(shù)據(jù);主鍵自動(dòng)建立了唯一索引,因此唯一索引也能確保數(shù)據(jù)的唯一性(即實(shí)體完整性);索引碼越小,定位就越直接;新建的索引效能最好,因此定期更新索引非常必要。索引也有代價(jià):有空間開銷,建立它也要花費(fèi)時(shí)間,在進(jìn)行Insert、Delete和Update*作時(shí),也有維護(hù)代價(jià)。索引有兩種:聚族索引和非聚族索引。一個(gè)表只能有一個(gè)聚族索引,可有多個(gè)非聚族索引。使用聚族索引查詢數(shù)據(jù)要比使用非聚族索引快。在建索引前,應(yīng)利用數(shù)據(jù)庫(kù)系統(tǒng)函數(shù)估算索引的大小。

① 聚族索引(Clustered Index):聚族索引的數(shù)據(jù)頁(yè)按物理有序儲(chǔ)存,占用空間小。選擇策略是,被用于Where子句的列:包括范圍查詢、模糊查詢或高度重復(fù)的列(連續(xù)磁盤掃描);被用于連接Join*作的列;被用于Order by和Group by子句的列。聚族索引不利于插入*作,另外沒有必要用主鍵建聚族索引。

② 非聚族索引(Non clustered In dex):與聚族索引相比,占用空間大,而且效率低。選擇策略是,被用于Where子句的列:包括范圍查詢、模糊查詢(在沒有聚族索引時(shí))、主鍵或外鍵列、點(diǎn)(指針類)或小范圍(返回的結(jié)果域小于整表數(shù)據(jù)的20%)查詢;被用于連接Join*作的列、主鍵列(范圍查詢);被用于Order by和Group by子句的列;需要被覆蓋的列。對(duì)只讀表建多個(gè)非聚族索引有利。索引也有其弊端,一是創(chuàng)建索引要耗費(fèi)時(shí)間,二是索引要占有大量磁盤空間,三是增加了維護(hù)代價(jià)(在修改帶索引的數(shù)據(jù)列時(shí)索引會(huì)減緩修改速度)。那么,在哪種情況下不建索引呢?對(duì)于小表(數(shù)據(jù)小于5頁(yè))、小到中表(不直接訪問單行數(shù)據(jù)或結(jié)果集不用排序)、單值域(返回值密集)、索引列值太長(zhǎng)(大于20bitys)、容易變化的列、高度重復(fù)的列、Null值列,對(duì)沒有被用于Where子語句和Join查詢的列都不能建索引。另外,對(duì)主要用于數(shù)據(jù)錄入的,盡可能少建索引。當(dāng)然,也要防止建立無效索引,當(dāng)Where語句中多于5個(gè)條件時(shí),維護(hù)索引的開銷大于索引的效益,這時(shí),建立臨時(shí)表存儲(chǔ)有關(guān)數(shù)據(jù)更有效。

(4)查詢優(yōu)化規(guī)則:在訪問數(shù)據(jù)庫(kù)表的數(shù)據(jù)(Access Data)時(shí),要盡可能避免排序(Sort)、連接(Join)和相關(guān)子查詢*作。經(jīng)驗(yàn)告訴我們,在優(yōu)化查詢時(shí),必須做到:

① 盡可能少的行;

② 避免排序或?yàn)楸M可能少的行排序,若要做大量數(shù)據(jù)排序,最好將相關(guān)數(shù)據(jù)放在臨時(shí)表中*作;用簡(jiǎn)單的鍵(列)排序,如整型或短字符串排序;

③ 避免表內(nèi)的相關(guān)子查詢;

④ 避免在Where子句中使用復(fù)雜的表達(dá)式或非起始的子字符串、用長(zhǎng)字符串連接;

⑤ 在Where子句中多使用“與”(And)連接,少使用“或”(Or)連接;

⑥ 利用臨時(shí)數(shù)據(jù)庫(kù)。在查詢多表、有多個(gè)連接、查詢復(fù)雜、數(shù)據(jù)要過濾時(shí),可以建臨時(shí)表(索引)以減少I/O。但缺點(diǎn)是增加了空間開銷。

除非每個(gè)列都有索引支持,否則在有連接的查詢時(shí)分別找出兩個(gè)動(dòng)態(tài)索引,放在工作表中重新排序。

三、數(shù)據(jù)庫(kù)優(yōu)化代碼的方法

數(shù)據(jù)庫(kù)在運(yùn)行中,數(shù)據(jù)量在幾萬條紀(jì)錄以上,為了加快查詢速度,我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行了優(yōu)化,優(yōu)化代碼如下:

sp_configure "total memory",32768/*根據(jù)內(nèi)存大小,修改此腳本,此處給Sybase64M內(nèi)存*/

通過優(yōu)化,數(shù)據(jù)庫(kù)的查詢速度大大加快,滿足了多臺(tái)計(jì)算機(jī)同時(shí)工作的要求。

四 小結(jié)

任何對(duì)列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫(kù)函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號(hào)右邊。in、or子句常會(huì)使用工作表,使索引失效;如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開;拆開的子句中應(yīng)該包含索引。要善于使用存儲(chǔ)過程,它使SQL變得更加靈活和高效。從以上這些例子可以看出,SQL優(yōu)化的實(shí)質(zhì)就是在結(jié)果正確的前提下,用優(yōu)化器可以識(shí)別的語句,充分利用索引,減少表掃描的I/O次數(shù),盡量避免表搜索的發(fā)生。其實(shí)SQL的性能優(yōu)化是一個(gè)復(fù)雜的過程,上述這些只是在應(yīng)用層次的一種體現(xiàn),深入研究還會(huì)涉及數(shù)據(jù)庫(kù)層的資源配置、網(wǎng)絡(luò)層的流量控制以及操作系統(tǒng)層的總體設(shè)計(jì)。

[1] 張厚粲,劉昕著.考試改革與標(biāo)準(zhǔn)參照測(cè)驗(yàn).遼寧教育出版社.1992年9月版

[2] 薛理銀 編著.教育信息處理原理.北京師范大學(xué)出版社.1996年3月版

[3] 陸建芳,韓莉莉.構(gòu)建地方文獻(xiàn)數(shù)據(jù)庫(kù)的思考.圖館館論壇 .2001(2)

[4] 曾燕 . 信息管理系統(tǒng)的開發(fā)與應(yīng)用.現(xiàn)代圖書情報(bào)技術(shù).2004(4)

10.3969/j.issn.1001-8972.2010.13.042

本文為黑龍江省教育廳高職高專院校科學(xué)技術(shù)研究項(xiàng)目《高職院校教學(xué)質(zhì)量評(píng)價(jià)系統(tǒng)軟件的開發(fā)與應(yīng)用》項(xiàng)目編號(hào):11525049

李北芳(1962年6月)、女、大學(xué)本科、副教授、電氣自動(dòng)化、數(shù)據(jù)庫(kù)方向。

猜你喜歡
子句排序數(shù)據(jù)庫(kù)
作者簡(jiǎn)介
子句級(jí)別的自注意力機(jī)制的情感原因抽取模型
漢語和泰語關(guān)系子句的對(duì)比研究
恐怖排序
節(jié)日排序
西夏語的副詞子句
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
体育| 明星| 普定县| 旬邑县| 高青县| 枣强县| 资兴市| 苍南县| 南充市| 读书| 永新县| 南部县| 南投市| 泗洪县| 霞浦县| 长沙市| 佛坪县| 山西省| 利辛县| 成武县| 霍邱县| 清苑县| 宾川县| 高要市| 会昌县| 上高县| 宁武县| 探索| 乐陵市| 阿拉善左旗| 绩溪县| 渭南市| 大安市| 巴东县| 玛沁县| 蕉岭县| 临猗县| 莲花县| 如东县| 五大连池市| 宜黄县|