999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

數(shù)據(jù)庫(kù)查詢優(yōu)化方法的研究與探索

2012-04-02 20:36:20劉玉紅王俊峰
電子設(shè)計(jì)工程 2012年14期
關(guān)鍵詞:數(shù)據(jù)庫(kù)優(yōu)化設(shè)備

劉玉紅,王俊峰

(1.烏魯木齊市教育招生考試中心 新疆 烏魯木齊 830002;2.重慶電子工程職業(yè)學(xué)院 重慶 401331)

關(guān)系數(shù)據(jù)庫(kù)以其簡(jiǎn)明的結(jié)構(gòu) (即維一的數(shù)據(jù)庫(kù)結(jié)構(gòu)關(guān)系)和嚴(yán)密的理論(關(guān)系代數(shù))成為整個(gè)數(shù)據(jù)庫(kù)領(lǐng)域最重要的組成部分,SQL Server數(shù)據(jù)庫(kù)又是關(guān)系數(shù)據(jù)庫(kù)中應(yīng)用最廣的數(shù)據(jù)庫(kù)。他功能強(qiáng)大、操作簡(jiǎn)便,日益為廣大數(shù)據(jù)庫(kù)用戶所喜愛,越來(lái)越多的開發(fā)工具提供了與SQL Server的接口。了解和掌握SQL Server的功能,對(duì)于一個(gè)數(shù)據(jù)庫(kù)開發(fā)管理人員來(lái)說(shuō)非常必要。SQL Server是一種高性能的大型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),廣泛的應(yīng)用在C/S和B/S體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)中。評(píng)價(jià)系統(tǒng)性能優(yōu)化的標(biāo)準(zhǔn)有:吞吐量、響應(yīng)時(shí)間、并行能力等。文中主要探討如何優(yōu)化SQL,以便取得最快的系統(tǒng)響應(yīng)速度[1]。

數(shù)據(jù)庫(kù)的優(yōu)化通常可以通過(guò)對(duì)網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)參數(shù)和應(yīng)用程序的優(yōu)化來(lái)進(jìn)行。在設(shè)計(jì)階段進(jìn)行數(shù)據(jù)庫(kù)性能優(yōu)化的成本最低,收益最大。在成品階段進(jìn)行數(shù)據(jù)庫(kù)性能優(yōu)化的成本最高,收益最小。最常見的優(yōu)化手段就是對(duì)硬件的升級(jí)。根據(jù)統(tǒng)計(jì),對(duì)網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)參數(shù)進(jìn)行優(yōu)化所獲得的性能提升,全部加起來(lái)只占數(shù)據(jù)庫(kù)系統(tǒng)性能提升的40%左右,其余的60%系統(tǒng)性能提升來(lái)自對(duì)應(yīng)用程序的優(yōu)化。許多優(yōu)化專家認(rèn)為,對(duì)應(yīng)用程序的優(yōu)化可以得到80%的系統(tǒng)性能的提升[2]。

1 數(shù)據(jù)庫(kù)性能良好的標(biāo)準(zhǔn)

對(duì)于同一個(gè)系統(tǒng)的實(shí)施可以設(shè)計(jì)出多個(gè)數(shù)據(jù)庫(kù)模型,這些模型由于性能目標(biāo)需求差異而不同。事實(shí)上,對(duì)于同一需求,不同數(shù)據(jù)庫(kù)設(shè)計(jì)人員也會(huì)設(shè)計(jì)出不同的模型,雖然只要它們能提供所需的性能,則就是正確的模型,但是作為數(shù)據(jù)庫(kù)設(shè)計(jì)人員應(yīng)該盡可能地采用各種技術(shù)在最大程度上提高數(shù)據(jù)庫(kù)的整體性能。數(shù)據(jù)庫(kù)性能的高低一般用兩個(gè)方面的指標(biāo)來(lái)衡量:響應(yīng)時(shí)間和吞吐量。響應(yīng)越快,吞吐量越大,數(shù)據(jù)庫(kù)性能越好。不過(guò),響應(yīng)時(shí)間和吞吐量并不是都能一起得到改善的。下面是一般大型系統(tǒng)數(shù)據(jù)庫(kù)的性能標(biāo)準(zhǔn)[5]:

1)單條記錄的更新應(yīng)當(dāng)在1 s之內(nèi);

2)多條記錄的更新不超過(guò)10 s;

3)對(duì)于于4個(gè)表的、數(shù)據(jù)有一定限度的查詢應(yīng)在5 s內(nèi)完成;

4)對(duì)于有一定限度的查詢多表查詢應(yīng)在10 s內(nèi)完成;

5)整個(gè)表的查詢時(shí)間應(yīng)在30 s內(nèi)完成。

以下針對(duì)以上目標(biāo)就影響數(shù)據(jù)庫(kù)性能的一些技術(shù)予以分析,當(dāng)然不管什么技術(shù)對(duì)于數(shù)據(jù)庫(kù)性能的優(yōu)化都必須以提高整體性能為原則,而不是僅僅提高個(gè)別查詢的速度。

2 數(shù)據(jù)庫(kù)性能優(yōu)化的分析

2.1 影響數(shù)據(jù)庫(kù)性能的因素

SQL Server數(shù)據(jù)庫(kù)查詢速度慢的原因有很多,常見的有以下幾種:

1)沒有索引或者沒有用到索引(這是查詢慢最常見的問(wèn)題,是程序設(shè)計(jì)的缺陷)

2)I/O吞吐量小,形成了瓶頸效應(yīng)

3)沒有創(chuàng)建計(jì)算列導(dǎo)致查詢不優(yōu)化

4)內(nèi)存不足

5)網(wǎng)絡(luò)速度慢

6)查詢出的數(shù)據(jù)量過(guò)大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)

7)鎖或者死鎖(這也是查詢慢最常見的問(wèn)題,是程序設(shè)計(jì)的缺陷)

8)返回了不必要的行和列

9)查詢語(yǔ)句不好,沒有優(yōu)化

2.2 數(shù)據(jù)庫(kù)優(yōu)化分類

1)應(yīng)用層——大部分性能的獲得來(lái)自于對(duì)SQL應(yīng)用中查詢的優(yōu)化,這必須是以好的數(shù)據(jù)庫(kù)設(shè)計(jì)為基礎(chǔ)的。

2)數(shù)據(jù)庫(kù)層——應(yīng)用共享在數(shù)據(jù)庫(kù)層中的資源,這些資源包括硬盤,事務(wù)日志和數(shù)據(jù)cache。

3)服務(wù)器層——在服務(wù)器層有許多共享的資源,包括數(shù)據(jù)高速緩存,存儲(chǔ)過(guò)程高速緩存,鎖,CPU等。

4)設(shè)備層——指的是存儲(chǔ)數(shù)據(jù)的磁盤及其控制器,在這一層,你應(yīng)尤其關(guān)注磁盤的I/O。

5)網(wǎng)絡(luò)層——指連接用戶和SQL Server的網(wǎng)絡(luò)。

6)硬件層——指可利用的CPU。

7)操作系統(tǒng)層——理想地,SQL Server是一臺(tái)機(jī)器的唯一主要應(yīng)用,它必須和操作系統(tǒng)以及其他軟件如Backup Server或SQL Server Monitor共享處理器、內(nèi)存以及其他資源。

在大多數(shù)情況下面,對(duì)應(yīng)用層進(jìn)行優(yōu)化,因?yàn)閷?duì)應(yīng)用性能的優(yōu)化是設(shè)計(jì)和編程人員樂于接受的功能,其結(jié)果能被觀測(cè)及檢驗(yàn)。查詢的性能是SQL應(yīng)用的整個(gè)性能的一個(gè)關(guān)鍵[6]。

3 數(shù)據(jù)庫(kù)優(yōu)化策略研究

3.1 應(yīng)用層優(yōu)化基本策略

1)事務(wù)設(shè)計(jì)能夠減少并發(fā),因?yàn)殚L(zhǎng)的事務(wù)保持占用鎖,也就減少了其他用戶對(duì)相關(guān)數(shù)據(jù)的存取

2)關(guān)聯(lián)一致性保證的策略。對(duì)數(shù)據(jù)查詢修改時(shí)需要考慮join操作對(duì)性能的影響

3)索引可以改善查詢性能,但也會(huì)增加修改數(shù)據(jù)的時(shí)間

4)為了安全而設(shè)立的審計(jì)限制了性能

5)遠(yuǎn)程處理或復(fù)制處理能夠把決策支持從OLTP機(jī)器中分離出來(lái)

6)利用存儲(chǔ)過(guò)程來(lái)減少編譯時(shí)間和網(wǎng)絡(luò)的利用

7)利用最少量的鎖去滿足你的應(yīng)用需要

3.2 數(shù)據(jù)庫(kù)層優(yōu)化基本策略

1)建立優(yōu)化的備份和恢復(fù)方案

2)在設(shè)備上分布存儲(chǔ)數(shù)據(jù)

3)審計(jì)操作影響性能;僅審計(jì)你所需要的

4)日常的維護(hù)活動(dòng)將導(dǎo)致性能的降低和導(dǎo)致用戶不能操作數(shù)據(jù)庫(kù)表在數(shù)據(jù)庫(kù)層上優(yōu)化選擇包括:

①利用事務(wù)日志的閾值來(lái)自動(dòng)轉(zhuǎn)儲(chǔ)事務(wù)日志防止其超出使用空間

②在數(shù)據(jù)段中用閾值來(lái)監(jiān)視空間的使用③利用分區(qū)來(lái)加速數(shù)據(jù)的裝入

④對(duì)象的定位以避免硬盤的競(jìng)爭(zhēng)

⑤把重要表和索引放入cache中,保證隨時(shí)取得

3.3 服務(wù)器層優(yōu)化策略

1)應(yīng)用的類型——服務(wù)器是支持OLTP還是DSS,或者兩者都支持

2)所支持的用戶數(shù)影響優(yōu)化決策——隨著用戶數(shù)的增加,對(duì)資源的競(jìng)爭(zhēng)會(huì)發(fā)生改變

3)當(dāng)用戶數(shù)和事務(wù)數(shù)達(dá)到一定的數(shù)量時(shí)復(fù)制服務(wù)器或其他分布式處理是一個(gè)解決的方法

4)優(yōu)化內(nèi)存——一個(gè)關(guān)鍵的配置參數(shù)和其他方面的參數(shù)

5)決策是客戶端處理還是服務(wù)器端處理

6)配置cache的大小和I/O的大小

7)增加多個(gè)CPU

8)為空閑時(shí)間排定批處理任務(wù)和生成報(bào)表

9)工作負(fù)荷發(fā)生改變,重新配置特定參數(shù)

10)決定是否可能把DSS移到另一個(gè)SQL服務(wù)器中設(shè)備層

3.4 設(shè)備層優(yōu)化策略

1)主設(shè)備、包含用戶數(shù)據(jù)庫(kù)的設(shè)備,用戶數(shù)據(jù)設(shè)備,或數(shù)據(jù)庫(kù)日志是否要鏡像

2)怎樣在設(shè)備之間分布系統(tǒng)數(shù)據(jù)庫(kù)、用戶數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)日志

3)為獲得對(duì)堆表插入操作的高性能,是否有必要進(jìn)行分區(qū)設(shè)備層上優(yōu)化的選項(xiàng)包括

4)用多個(gè)中等大小的設(shè)備及多個(gè)控制器可能比用少量的大設(shè)備有更好的I/O性能

5)分布數(shù)據(jù)庫(kù),表和索引以在不同的設(shè)備上進(jìn)行I/O裝載

3.5 網(wǎng)絡(luò)層優(yōu)化策略

實(shí)際上,SQL Server的所有用戶都是通過(guò)網(wǎng)絡(luò)存取他們的數(shù)據(jù)。網(wǎng)絡(luò)層上的配置包的大小,以使其與應(yīng)用的需要相匹配

1)配置子網(wǎng)

2)分隔出繁忙的網(wǎng)絡(luò)運(yùn)用

3)創(chuàng)建一個(gè)高容量的網(wǎng)絡(luò)

4)配置多個(gè)網(wǎng)絡(luò)引擎

5)更好地設(shè)計(jì)應(yīng)用,限制所需的網(wǎng)絡(luò)傳輸

3.6 在硬件層上優(yōu)化策略

1)增加CPU以適應(yīng)工作負(fù)荷

2)配置調(diào)度程序以提高CPU利用率

3)遵循多處理器應(yīng)用設(shè)計(jì)指導(dǎo)以減少競(jìng)爭(zhēng)

4)配置多個(gè)數(shù)據(jù)cache操作系統(tǒng)層

3.7 操作系統(tǒng)層優(yōu)化策略

1)文件系統(tǒng)——是否被SQL Server獨(dú)占使用

2)內(nèi)存管理——精確估算操作系統(tǒng)和其他程序的內(nèi)存占用

3)CPU的利用——整個(gè)系統(tǒng)共有多少處理器可用?有多少分配給SQL Server

4)在文件和原始分區(qū)之間選擇

5)增加內(nèi)存

6)把客戶操作和批處理移到其他機(jī)器上

7)SQL Server利用多個(gè) CPU

4 與應(yīng)用程序相關(guān)的數(shù)據(jù)庫(kù)查詢優(yōu)化

查詢優(yōu)化技術(shù)在DBMS性能提高方面有著非常重要的地位。實(shí)際系統(tǒng)對(duì)查詢優(yōu)化具體實(shí)現(xiàn)不盡相同,但一般來(lái)說(shuō)可以歸納為4個(gè)步驟:

1)將查詢轉(zhuǎn)換成某種內(nèi)部表示,通常是語(yǔ)法樹;

2)根據(jù)一定的等價(jià)變換規(guī)則把語(yǔ)法樹轉(zhuǎn)換成標(biāo)準(zhǔn) (優(yōu)化)技術(shù);

3)選擇低層的操作算法;

4)生成查詢計(jì)劃。

絕大多數(shù)性能的獲得來(lái)自于優(yōu)秀的數(shù)據(jù)庫(kù)設(shè)計(jì)、精確的查詢分析和適當(dāng)?shù)乃饕榱巳〉酶玫臄?shù)據(jù)庫(kù)性能,我們就需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化,減少系統(tǒng)資源的競(jìng)爭(zhēng),如對(duì)數(shù)據(jù)cache,過(guò)程cache,系統(tǒng)資源和CPU的競(jìng)爭(zhēng)。SQL優(yōu)化的大部分性能的獲得來(lái)自于對(duì)SQL應(yīng)用中查詢的優(yōu)化[3]。

目前的DBMS大都采用基于代價(jià)的優(yōu)化算法,下面給出的優(yōu)化策略一般能提高數(shù)據(jù)庫(kù)查詢效率:選擇運(yùn)算應(yīng)盡可能先做;應(yīng)盡可能經(jīng)常地編譯存儲(chǔ)過(guò)程,使存儲(chǔ)過(guò)程的查詢計(jì)劃和數(shù)據(jù)庫(kù)的數(shù)據(jù)存放結(jié)構(gòu)保持一致;有效使用索引。查詢條件和索引的配合使用,對(duì)SQL語(yǔ)句的性能至關(guān)重要。下面是兩種常見的情況:

其一,如果查詢條件中包括索引的第一個(gè)列,而且結(jié)果列都在索引列中,系統(tǒng)使用匹配索引定位,會(huì)定位到索引的頁(yè)級(jí),這時(shí)可從索引頁(yè)中直接提取結(jié)果,不需要使用數(shù)據(jù)頁(yè)。其二,如果查詢條件中不包括索引的第一個(gè)列,而且結(jié)果列都在索引列中,系統(tǒng)使用非匹配索引掃描,不掃描數(shù)據(jù)頁(yè),從索引頁(yè)中直接提取結(jié)果。這種情況也不使用數(shù)據(jù)頁(yè)。

創(chuàng)建高效率查詢,可以充分利用索引的where條件書寫格式為“column operator expression”,這里的 operator一般是:=,>,<,>=,<=,is null。 而如果 operator是!=、!,便不能充分利用索引。如果要充分利用索引,在column中就不要包括函數(shù)和其他操作。expression必須是常量或可以轉(zhuǎn)化成常量。查詢優(yōu)化器認(rèn)為,between 相當(dāng)于“>=”和“<=”,“l(fā)ike‘Ger%”’相當(dāng)于“>=‘Ger’and<‘Ges”’。 但是“‘like’%ebr”’因?yàn)闆]有給出首字母,就不能轉(zhuǎn)化成這種結(jié)果。

在書寫SQL語(yǔ)句時(shí),對(duì)于表連接的情況,注意盡量少寫冗余條件。一般要在SARG(搜索參數(shù))的列上放置一個(gè)索引。如果被查詢列都包括在索引列中,這種查詢叫索引覆蓋查詢。這種查詢效率比較高,應(yīng)盡量使用這種查詢。在做表連接查詢時(shí),在外表的連接列上建立索引,可以大大加快速度。而且,查詢速度也和表的排列順序有關(guān),如果行數(shù)大的表放在后面,可以提高速度。

5 結(jié)束語(yǔ)

數(shù)據(jù)庫(kù)的優(yōu)化是一個(gè)系統(tǒng)工程,在數(shù)據(jù)庫(kù)實(shí)施過(guò)程當(dāng)中影響性能優(yōu)良的因素很多,而不同項(xiàng)目的應(yīng)用要求又各不相同,所以要找出所有完全通用的優(yōu)化技術(shù)是不現(xiàn)實(shí)的,在數(shù)據(jù)庫(kù)開發(fā)和維護(hù)的過(guò)程中,必須針對(duì)數(shù)據(jù)庫(kù)運(yùn)行的具體情況加以分析和調(diào)整。

[1]陳佳.基于SQL server數(shù)據(jù)庫(kù)優(yōu)化查詢的分析[J].企業(yè)導(dǎo)報(bào),2010(8):179-180.CHEN Jia.The analysis of database optimization querying based on SQL Server[J].Enterprise Guide,2010(8):179-180.

[2]曾實(shí).ORACLE數(shù)據(jù)庫(kù)優(yōu)化技術(shù)研究[J].科技信息,2011(27):84,56.ZENG Shi.The research in ORACLE database optimization technology[J].Technology Information,2011(27):56-84.

[3]徐鑫濤.淺談數(shù)據(jù)庫(kù)優(yōu)化 [J].中國(guó)科技信息,2008(4):111-115.XU Xin-tao.About database optimization[J].Chinese Technology Information,2008(4):111-115.

[4]劉姝.DB2數(shù)據(jù)庫(kù)設(shè)計(jì)及優(yōu)化技術(shù)研究[J].信息安全與技術(shù),2011(11):38-40 LIU Shu.DB2 database design and optimization technology tesearch[J].Information Safe and Technology,2011 (11):38-40.

[5]三味工作室編著.SQL Server 7.5管理指南[M].北京:中國(guó)水利水電出版社,1998.

[6]Oracle數(shù)據(jù)庫(kù)管理與開發(fā)[M].大連:東軟電子出版社,2009.

猜你喜歡
數(shù)據(jù)庫(kù)優(yōu)化設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 2020亚洲精品无码| 国产精品视频a| 免费观看国产小粉嫩喷水| 天堂成人av| 亚洲国模精品一区| 99激情网| 国产香蕉在线| 亚洲人成在线精品| 亚洲成综合人影院在院播放| 国产人免费人成免费视频| 久久美女精品国产精品亚洲| 丁香婷婷在线视频| 麻豆国产精品一二三在线观看| 国产91丝袜| 日韩成人在线视频| 在线免费无码视频| 午夜国产理论| 亚洲国产精品不卡在线| 美臀人妻中出中文字幕在线| 114级毛片免费观看| 国产精品成人一区二区| 欧美视频二区| 久久国产精品娇妻素人| 国产日本视频91| 国产av色站网站| AV无码一区二区三区四区| 久久久黄色片| 精品91视频| 久久国语对白| 久久这里只有精品2| 精久久久久无码区中文字幕| 亚洲成人福利网站| 亚洲男人在线| 国产福利大秀91| 伊人成人在线| 亚欧美国产综合| 亚洲精品国产成人7777| 日本久久免费| 国产精品亚洲αv天堂无码| 欧美精品色视频| 国产地址二永久伊甸园| 国产精品亚洲专区一区| 亚洲视频无码| 波多野结衣无码AV在线| 久久永久精品免费视频| 国产亚洲第一页| 久久亚洲AⅤ无码精品午夜麻豆| 激情综合五月网| 欧美成人午夜视频| 国产精品人人做人人爽人人添| yjizz国产在线视频网| 精品久久人人爽人人玩人人妻| 免费精品一区二区h| 欧美狠狠干| 亚洲一区二区三区在线视频| 国产亚洲视频免费播放| 国产精品99久久久| 欧美伊人色综合久久天天| 99在线观看视频免费| 福利小视频在线播放| a毛片基地免费大全| 亚洲第一视频免费在线| 国产亚洲欧美日韩在线一区| 日韩福利在线观看| 国模沟沟一区二区三区| 一级成人欧美一区在线观看| 久草中文网| 亚洲日韩高清在线亚洲专区| 九九热视频精品在线| 99精品这里只有精品高清视频| 99热这里只有精品免费| 亚洲国产日韩一区| 亚洲狼网站狼狼鲁亚洲下载| 久久亚洲精少妇毛片午夜无码| 日韩久久精品无码aV| 午夜视频www| 国产香蕉在线视频| 91精品网站| 永久在线精品免费视频观看| 亚洲欧洲日产无码AV| 国产欧美中文字幕| 亚洲欧美日韩高清综合678|