版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、SQL Server數(shù)據(jù)庫優(yōu)化的10多種方法巧妙優(yōu)化SQL Server數(shù)據(jù)庫的幾種方法,在實際操作中導(dǎo)致查詢速度慢的原因有很多,其中最為常見有以下的幾種:沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設(shè)計的缺陷)。I/O吞吐量小,形成了瓶頸效應(yīng)。沒有創(chuàng)建計算列導(dǎo)致查詢不優(yōu)化SQL Server數(shù)據(jù)庫。內(nèi)存不足。網(wǎng)絡(luò)速度慢。查詢出的數(shù)據(jù)量過大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)。鎖或者死鎖(這也是查詢慢最常見的問題,是程序設(shè)計的缺陷)。sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。返回了不必要的行和列。查詢語句不好,沒有優(yōu)化??梢酝ㄟ^如下方法來優(yōu)化查詢 :1
2、、把數(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,以前可以將Tempdb應(yīng)放在RAID0上,SQL2000不在支持。數(shù)據(jù)量(尺寸)越大,提高I/O越重要。2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)。3、升級硬件。4、根據(jù)查詢條件,建立索引,優(yōu)化索引、優(yōu)化SQL Server數(shù)據(jù)庫訪問方式,限制結(jié)果集的數(shù)據(jù)量。注意填充因子要適當(最好是使用默認值0)。索引應(yīng)該盡量小,使用字節(jié)數(shù)小的列建索引好(參照索引的創(chuàng)建),不要對有限的幾個值的字段建單一索引如性別字段。5、提高網(wǎng)速。6、擴大服務(wù)器的內(nèi)存,Windows 2000和SQL server 2000能支持4-8G的內(nèi)存。配
3、置虛擬內(nèi)存:虛擬內(nèi)存大小應(yīng)基于計算機上并發(fā)運行的服務(wù)進行配置。運行 Microsoft SQL Server? 2000 時,可考慮將虛擬內(nèi)存大小設(shè)置為計算機中安裝的物理內(nèi)存的 1.5 倍。如果另外安裝了全文檢索功能,并打算運行 Microsoft 搜索服務(wù)以便執(zhí)行全文索引和查詢,可考慮:將虛擬內(nèi)存大小配置為至少是計算機中安裝的物理內(nèi)存的 3 倍。將 SQL Server max server memory 服務(wù)器配置選項配置為物理內(nèi)存的 1.5 倍(虛擬內(nèi)存大小設(shè)置的一半)。7、增加服務(wù)器 CPU個數(shù);但是必須明白并行處理串行處理更需要資源例如內(nèi)存。使用并行還是串行程是MsSQL自動評估選擇
4、的。單個任務(wù)分解成多個任務(wù),就可以在處理器上運行。例如耽擱查詢的排序、連接、掃描和GROUP BY字句同時執(zhí)行,SQL SERVER根據(jù)系統(tǒng)的負載情況決定最優(yōu)的并行等級,復(fù)雜的需要消耗大量的CPU的查詢最適合并行處理。但是更新操作Update,Insert, Delete還不能并行處理。8、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like a% 使用索引 like %a 不使用索引用 like %a% 查詢時,查詢耗時和字段值總長度成正比,所以不能用CHAR類型,而是VARCHAR。對于字段的值很長的建全文索引。9、DB Server 和APPLi
5、cation Server 分離;OLTP和OLAP分離。10、分布式分區(qū)視圖可用于實現(xiàn)數(shù)據(jù)庫服務(wù)器聯(lián)合體。聯(lián)合體是一組分開管理的服務(wù)器,但它們相互協(xié)作分擔(dān)系統(tǒng)的處理負荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務(wù)器聯(lián)合體的機制能夠擴大一組服務(wù)器,以支持大型的多層 Web 站點的處理需要。有關(guān)更多信息,參見設(shè)計聯(lián)合數(shù)據(jù)庫服務(wù)器。(參照SQL幫助文件分區(qū)視圖)在實現(xiàn)分區(qū)視圖之前,必須先水平分區(qū)表。在創(chuàng)建成員表后,在每個成員服務(wù)器上定義一個分布式分區(qū)視圖,并且每個視圖具有相同的名稱。這樣,引用分布式分區(qū)視圖名的查詢可以在任何一個成員服務(wù)器上運行。系統(tǒng)操作如同每個成員服務(wù)器上都有一個原始表的復(fù)本一樣,但其實每個
6、服務(wù)器上只有一個成員表和一個分布式分區(qū)視圖。數(shù)據(jù)的位置對應(yīng)用程序是透明的。11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收縮數(shù)據(jù)和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 設(shè)置自動收縮日志.對于大的數(shù)據(jù)庫不要設(shè)置數(shù)據(jù)庫自動增長,它會降低服務(wù)器的性能。在T-sql的寫法上有很大的講究,下面列出常見的要點:首先,DBMS處理查詢計劃的過程是這樣的:查詢語句的詞法、語法檢查。將語句提交給DBMS的查詢優(yōu)化器。優(yōu)化器做代數(shù)優(yōu)化和存取路徑的優(yōu)化SQL Server數(shù)據(jù)庫。由預(yù)編譯模塊生成查詢規(guī)劃。然后在合適的時間提交給系統(tǒng)處理執(zhí)行。最后將執(zhí)行結(jié)果
7、返回給用戶其次,看一下SQL SERVER的數(shù)據(jù)存放的結(jié)構(gòu):一個頁面的大小為8K(8060)字節(jié),8個頁面為一個盤區(qū),按照B樹存放。12、Commit和rollback的區(qū)別 Rollback:回滾所有的事物。 Commit:提交當前的事物. 沒有必要在動態(tài)SQL里寫事物,如果要寫請寫在外面如: begin tran exec(s) commit trans 或者將動態(tài)SQL 寫成函數(shù)或者存儲過程。SPAN13、在查詢Select語句中用Where字句限制返回的行數(shù),避免表掃描,如果返回不必要的數(shù)據(jù),浪費了服務(wù)器的I/O資源,加重了網(wǎng)絡(luò)的負擔(dān)降低性能。如果表很大,在表掃描的期間將表鎖住,禁止其
8、他的聯(lián)接訪問表,后果嚴重。 HYPERLINK /gohands/article/details/2243300 SQL Server調(diào)優(yōu)的五個步驟分類: HYPERLINK /gohands/article/category/73805 數(shù)據(jù)庫2008-04-02 09:391175人閱讀 HYPERLINK /gohands/article/details/2243300 l comments 評論(0) HYPERLINK javascript:void(0); o 收藏 收藏 HYPERLINK /gohands/article/details/2243300 l report o 舉
9、報 舉報 HYPERLINK /tag/sql%20server t _blank sql server HYPERLINK /tag/%e6%95%b0%e6%8d%ae%e5%ba%93 t _blank 數(shù)據(jù)庫 HYPERLINK /tag/%e7%a3%81%e7%9b%98 t _blank 磁盤 HYPERLINK /tag/%e4%bc%98%e5%8c%96 t _blank 優(yōu)化 HYPERLINK /tag/%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96 t _blank 性能優(yōu)化 HYPERLINK /tag/%e5%b7%a5%e4%bd%9c
10、 t _blank 工作步驟1 優(yōu)化應(yīng)用工作量優(yōu)化應(yīng)用性能的第一步是優(yōu)化工作量。在該部分調(diào)優(yōu)方法論中列出的優(yōu)化步驟能夠解決很多常見的性能和可延展性問題。這些優(yōu)化可以幫助降低由于特殊的設(shè)計或低效的實施導(dǎo)致的性能瓶頸影響,并且可以保證系統(tǒng)資源能夠充分和有效利用。例如,解決低效率的查詢計劃或低效率的緩存等問題將會更加有效率地發(fā)揮SQL服務(wù)器緩存機制,從而整體上降低I/O操作。 編譯/重新編譯- 數(shù)據(jù)庫,CPU確定是否存在顯著的CPU競爭,如果存在,請關(guān)注重新編譯次數(shù)多的那些T-SQL語句,它們占用大量CPU資源。如果應(yīng)用中SQL代碼重新編譯次數(shù)很多,可以考慮下面優(yōu)化方法:評估有關(guān)的語句的作用,將數(shù)據(jù)
11、修改代碼和數(shù)據(jù)定義命令相分離。解決過時的索引統(tǒng)計。使用變量或其他邏輯替代臨時表。微軟忠告:頻繁地編譯/重新編譯會消耗很高的CPU和磁盤I/O資源,會增加整體的工作量競爭。 低效率的查詢計劃-數(shù)據(jù)庫,CPU確定是否存在明顯的CPU競爭,如果有,請確定無效率查詢計劃是如何占用過多的cpu資源。是否存在數(shù)據(jù)庫模式,應(yīng)用需求,用戶使用的報表工具,或其它條件促使在生產(chǎn)環(huán)境下執(zhí)行無效率的查詢,使用Hash連接和排序操作的查詢,結(jié)果會消耗很高的CPU和I/O。步驟2 減少讀/寫活動一旦你的應(yīng)用代碼被調(diào)優(yōu),接下來達到最佳性能就是減少應(yīng)用運行時讀寫活動量或I/O,一個最常見的應(yīng)用代碼錯誤是編寫低效率的數(shù)據(jù)查詢操
12、作;查詢返回很多的數(shù)據(jù)-太多的列或行-SQLServer會負載很大。無論是應(yīng)用設(shè)計允許用戶創(chuàng)建自己的(通常無效率的),不限定每頁結(jié)果的查詢,還是后端代碼使用嵌套查詢,這些查詢會返回很多的數(shù)據(jù)(包括用視圖或表值函數(shù)寫的查詢),你的應(yīng)用做為一個整體可能會訪問更多的遠超過需要的數(shù)據(jù)。在一些情況下,檢查完你的應(yīng)用代碼后,你可能會認識到你的代碼將會返回底層表中的所有數(shù)據(jù),來滿足查詢需要!分析存在的索引和它們維護模式,確定添加索引是否合適,分析數(shù)據(jù)庫文件的增長情況會幫你極大減少應(yīng)用的讀寫活動量,可以釋放寶貴的磁盤資源。 無效率的或缺失的索引-DB I/O確定是否存在明顯的磁盤I/O競爭,如果存在,需要分析
13、缺失或或無效率的索引是如何導(dǎo)致磁盤I/O瓶頸的。DBA們必須評估應(yīng)用的 SQL代碼保證語句盡可能有效率地執(zhí)行;這項任務(wù)通常必需創(chuàng)建索引來最有效地提取數(shù)據(jù)。如果應(yīng)用的SQL代碼發(fā)生變化,訪問不同的表或從目的表選擇更多的/不同的列,當前的索引可能會不起作用。需要分析說明SQL 代碼無效率使用存在的索引或語句正在用表掃描搜集數(shù)據(jù)的地方。 磁盤I/O-數(shù)據(jù)庫文件的增長-DB I/O確定是否存在明顯的磁盤I/O競爭,如果存在,需要關(guān)注頻繁使用擴展段的數(shù)據(jù)庫。DBA們應(yīng)關(guān)注在一定的時間窗口內(nèi)頻繁使用擴展段的數(shù)據(jù)庫。當SQL Server增大數(shù)據(jù)庫文件時,文件傾向于破碎,操作將非常消耗CPU和I/O。 磁盤
14、I/O-數(shù)據(jù)庫文件配置-DB I/O確定是否存在明顯的磁盤I/O競爭,如果存在,請關(guān)注配置糟糕的數(shù)據(jù)庫文件是如何導(dǎo)致數(shù)據(jù)庫內(nèi)鎖競爭的增加,進而形成資源瓶頸,減少應(yīng)用之間的競爭。DBA應(yīng)考察可能導(dǎo)致閂競爭的一些數(shù)據(jù)庫文件的配置問題,包括:數(shù)據(jù)文件和日志文件配置在同一磁盤設(shè)備上。數(shù)據(jù)庫文件數(shù)量少于可用的CPU數(shù)量,特別是TempDB數(shù)據(jù)庫。數(shù)據(jù)庫文件數(shù)量少于可用的磁盤I/O設(shè)備數(shù)量。步驟3 減少競爭現(xiàn)在,已經(jīng)優(yōu)化應(yīng)用的I/O訪問,下一步要完成的性能優(yōu)化就是確保高度的并發(fā)不會導(dǎo)致對象競爭情況的增加。即使數(shù)據(jù)訪問被優(yōu)化了,使用鎖和閂鎖的SQL Server引擎,會同步和保護數(shù)據(jù)訪問,在高負載下也會出現(xiàn)
15、阻塞問題。智能的事務(wù)控制邏輯,可保證事務(wù)不會執(zhí)行過長時間,或者只在適當?shù)脭?shù)據(jù)上加鎖,因而其是達到高并發(fā)的關(guān)鍵。使用適當?shù)氖聞?wù)隔離層可保證減少不必要的讀操作阻塞,評估鎖提示的需要可保證鎖的不必要的保持,這些都可以極大提高應(yīng)用的性能。為了減少或消除閂鎖問題,保證應(yīng)用不要將DDL和DML的操作混在一起。一旦解決這些問題,你就應(yīng)該分析你的應(yīng)用時如何訪問數(shù)據(jù)的,以便確定是否可以通過數(shù)據(jù)分區(qū)的方式提高應(yīng)用性能。 阻塞鎖-對象競爭-數(shù)據(jù)庫鎖確定是否存在明顯的鎖競爭,如果存在,看看經(jīng)常出現(xiàn)鎖競爭的數(shù)據(jù)庫表,幫助識別故障點和缺失的索引,應(yīng)用傾向于訪問數(shù)據(jù)庫中的某些特定的表多一些。當隔離層設(shè)置不正確時,事務(wù)會執(zhí)行
16、很長時間,由于涉及到的索引導(dǎo)致不能訪問數(shù)據(jù),處理發(fā)生沖突或發(fā)生阻塞等。許多應(yīng)用管理員沒有意識到數(shù)據(jù)庫遭受阻塞的程度;我們需要分析和發(fā)現(xiàn)由頻繁的短期鎖大量累積而導(dǎo)致的明顯競爭。 阻塞鎖-鎖類型-數(shù)據(jù)庫鎖確定是否存在明顯的鎖競爭,如果存在,按照數(shù)據(jù)庫分析鎖的類型。某些應(yīng)用以不同的方式訪問不同的特定數(shù)據(jù)庫。其原因可能是不同的開發(fā)人員開發(fā)的代碼不同,或需求不斷變化等等。按照數(shù)據(jù)庫顯示不同的SQL Server鎖類型的分析結(jié)果,顯示鎖的行為與整體活動時間的比較分析的重要程度,這些將有助于應(yīng)用程序開發(fā)人員正確地修改他們的應(yīng)用代碼。 內(nèi)存緩沖區(qū)閂鎖-數(shù)據(jù)庫閂鎖確定是否存在明顯的內(nèi)存緩沖區(qū)閂鎖競爭,如果存在,
17、很多的內(nèi)存緩沖區(qū)閂鎖等待是I/O瓶頸和熱頁的跡象。因為內(nèi)存緩沖區(qū)閂鎖與I/O競爭沒有直接關(guān)系,因而這對SQL Server的可用內(nèi)存數(shù)量是很關(guān)鍵的。 內(nèi)部高速緩存閂鎖競爭- 數(shù)據(jù)庫閂鎖確定是否存在明顯的內(nèi)部高速緩存閂鎖競爭,如果存在,識別出哪里存在大部分競爭。內(nèi)部高速緩存閂鎖可用在多種不同的情況;可能最常見的例子是內(nèi)部高速緩存的競爭(不是緩沖池頁),尤其當使用堆,text或兩者同時使用的時候。如果解決LOG和PAGELATCH_UP的競爭后沒有作用,通常將數(shù)據(jù)分區(qū)可以很好緩解內(nèi)部高速緩存閂鎖的競爭。步驟4 解決資源瓶頸到目前為止,你已經(jīng)確保你的查詢正確地使用了底層的系統(tǒng)資源,并且盡可能有效地訪
18、問數(shù)據(jù)。現(xiàn)在你應(yīng)該確定是否有資源瓶頸使你的應(yīng)用慢下來。在應(yīng)用上你可以做許多調(diào)優(yōu)工作,在某些情況下外部因素仍是性能優(yōu)化的最后障礙。這部分調(diào)優(yōu)方法描述了特定資源的瓶頸。例如,SQL Server有足夠的內(nèi)存來支持良好的性能嗎?有竊取SQL Server內(nèi)存的外部應(yīng)用程序嗎?你的硬盤性能能足夠支持你的工作量嗎?你的應(yīng)用能有效率地記錄日志嗎,記錄日志的時間是否需要提高?最后,并行可以幫助你的查詢執(zhí)行更快,還是SQL Server花費更多的時間協(xié)調(diào)并發(fā)線程,從而使得并發(fā)帶來更多的阻礙?應(yīng)該考慮到應(yīng)用性能的這些方面,可以保證充分利用底層系統(tǒng)資源,并且可以幫助確定哪些硬件需要擴容。 內(nèi)存壓力-系統(tǒng)內(nèi)存確定是否存在明顯的內(nèi)存壓力,如果存在,請分析: 外部的內(nèi)存壓力可以影響SQL Server的性能。許多DBA和DBA的經(jīng)理們不明白病毒檢測軟件的配置不當和在一個exchange server上安裝SQL Server所帶來的影響。 SQL Server沒有足夠的內(nèi)存達到理想的功能。如果SQL Server不能分配給緩存足夠的內(nèi)存,頁的平均壽命將減少,系統(tǒng)范圍內(nèi)存分頁交換就會增加。 日志等待確定是否有明顯的日志等待,如果有,分析有多少因素減慢SQL Server記錄日志。步驟5 基線偏離分析毫無疑
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版女方離婚協(xié)議中子女探望權(quán)及撫養(yǎng)費調(diào)整合同4篇
- 2025版木門安裝與室內(nèi)外裝飾一體化服務(wù)合同7篇
- 二零二五年度中小企業(yè)信用擔(dān)保合同規(guī)范3篇
- 2025年度企業(yè)債券發(fā)行合同標準文本2篇
- 2025版航空航天零部件租賃與維修服務(wù)合同模板4篇
- 2025年度文化用品店整體轉(zhuǎn)讓及品牌授權(quán)合同
- 股權(quán)轉(zhuǎn)讓合同(2025年度)2篇
- 2025年度個人心理咨詢與輔導(dǎo)服務(wù)外包合同2篇
- 二零二五年度跨境電商平臺內(nèi)部員工入股分紅合同4篇
- 二零二五版排洪渠工程臨時設(shè)施租賃合同4篇
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計算機組成原理-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 2024年湖北省武漢市中考語文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 上海市華東師大二附中2025屆高二數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- IP授權(quán)合作合同模板
- 大國重器北斗系統(tǒng)
評論
0/150
提交評論