❶ sql server 安全,性能優化的15條方案
1.1 基本概念 與資料庫技術密切相關的基本概念包括:數據、資料庫、資料庫管理系統和資料庫系統四大概念。1. 數據(Data) 數據是對客觀事物的一種描述,是由能被計算機識別與處理的數值、字元等符號構成的集合,即數據是指描述事物的符號記錄。 廣義地說,數據是一種物理符號的序列,用於記錄事物的情況,是對客觀事物及其屬性進行的一種抽象化及符號化的描述。數據的概念應包括數據的內容和形式兩個方面。數據的內容是指所描述的客觀事物的具體特性,也就是通常所說的數據的「值」;數據的形式則是指數據內容所存儲的具體形式,即數據的「類型」。故此,數據可以用數據類型和值來表示。2. 資料庫(Data Base,DB) 資料庫是指長期存儲在計算機內部、有組織的、可共享的數據集合,即在計算機系統中按一定的數據模型組織、存儲和使用的相關聯的數據集合成為資料庫。 資料庫中的數據按照一定的數據模型組織、描述和存儲,具有較小的冗餘度、較高的數據獨立性、易擴展性、集中性和共享性,以文件的形式存儲在存儲介質上的。資料庫中的數據由資料庫管理系統進行統一管理和控制,用戶對資料庫進行的各種數據操作都是通過資料庫管理系統實現。3. 資料庫管理系統(Data Base Management System,DBMS) 資料庫管理系統是資料庫系統的核心,是為資料庫的建立、使用和維護而配置的軟體,是位於操作系統與用戶之間的一層數據管理軟體。主要功能是對資料庫進行定義、操作、控制和管理。1) 數據定義 數據的定義包括:定義構成資料庫結構的外模式、模式和內模式,定義各個外模式和模式之間的映射,定義模式與內模式之間的映射,定義有關的約束條件。2) 數據處理對數據的處理操作主要包括對資料庫數據的檢索、插入、修改和刪除等基本操作。3) 安全管理 對資料庫的安全管理主要體現在:對資料庫進行並發控制、安全性檢查、完整性約束條件的檢查和執行、資料庫的內部維護(如索引、數據字典的自動維護)等。並且能夠管理和監督用戶的許可權,防止擁護有任何破壞或者惡意的企圖。4) 數據的組織、存儲和管理 負責分類地組織、存儲和管理資料庫數據,確定以何種文件結構和存取方式物理地組織數據,如何實現數據之間的聯系,以便提高存儲空間利用以及提高隨機查找、順序查找、增加、刪除和查改等操作的時間效率。5) 建立和維護資料庫 建立資料庫包括資料庫數據的初始化與數據轉換等。維護資料庫包括資料庫的轉儲與恢復、資料庫的重組織與重構造、性能的監視與分析等。6) 數據通信介面提供與其他軟體系統進行通信的功能。4. 資料庫系統(Data Base System,DBS) 資料庫系統指在計算機系統中引入資料庫後的系統構成,一般有資料庫、資料庫管理系統、應用系統、資料庫管理員和用戶構成。1.2 資料庫系統的特點 資料庫系統的點主要有:數據的結構化、高共享性、低冗餘度、易擴充、較高的獨立性(物理數據獨立、邏輯數據獨立)以及數據由DBMS統一管理和控制(數據的安全性Security保護、數據的完整性Integrity保護、並發Concurrency控制、資料庫恢復Recovery)等。第二章 資料庫性能優化 資料庫作為一種獨立的、有組織、的可共享的數據集合,數據的查詢訪問是數據操作中頻度最高的操作。當數據量和訪問頻率達到一定程度的時候,系統的響應速度就至關重要了,這時候就需要對資料庫數據存儲的結構和方式進行優化,使其滿足系統需要的訪問響應速度。2.1 性能影響因素 常見的影響數據訪問速度的因素,有以下幾種:1. 沒有索引或者沒有用到索引 資料庫索引就像書籍中目錄一樣,使用戶在訪問資料庫數據時,不必遍歷所有數據就可以找到需要的數據。創建索引後,可以保證每行數據的唯一性,極大地提高數據檢索效率,這是一中犧牲空間換取性能的方法。沒有索引或者沒有用到索引是數據訪問速度慢最常見的因素,也是程序設計的一個缺陷所在。2. I/O吞吐量小,形成了瓶頸效應 I/O吞吐量是影響數據訪問速度的客觀因素(硬體因素)。在一定的硬體環境下,利用優化的部署方案可適當提高I/O吞吐量。3. 沒有創建計算列導致查詢不優化 計算列是一個比較特殊的列,不填寫任何設計類型,用戶不可以改變該列的值。計算列的值是通過一定的函數公式等以另一個或多個列的值為輸入值計算出的結果。如果沒相應的計算列,在一些數據查詢的時候需要對已有數據進行計算,從而浪費一部分性能。4. 內存不足 對資料庫數據的查詢訪問毫無疑問會佔用大量的內存空間,當內存不足的情況下,數據的訪問速度會受到明顯的影響甚至訪問出現超時情況,是影響數據訪問速度的客觀因素。5. 網路速度慢 網路速度慢是影響數據訪問速度的客觀因素。可通過提高網路訪問的位寬來解決。6. 查詢出的數據量過大 當查詢出的數據量過大時,內存的佔用、系統時間的佔用等都影響數據訪問的速度。可以採用多次查詢、定位查詢、和查詢數據量控制來解決。7. 鎖或者死鎖 鎖或者死鎖在資料庫數據訪問時會造成訪問者等待時間過程或者永久無法獲取到資源。這是查詢慢最常見的因素之一,是程序設計的缺陷,要盡量避免。8. 返回不必要的行和列 在一般的數據查詢中,都盡可能多的獲取數據信息,這樣造成了不必要的數據遍歷,大大的增加了數據訪問的響應的時間。所以在一般的查詢中,盡量查詢少的行和列,將數據遍歷時間降到最低以滿足數據輸出需求。9. 查詢語句不夠優化 在數據查詢訪問過程中,使用最頻繁的是使用自定義的查詢語句進行數據輸出的。所以編寫優化的查詢語句能夠很大程度上提高數據查詢訪問的速度。2.2 性能優化 資料庫性能優化主要是提高數據訪問的速度,即提高資料庫響應速度的性能指標。性能優化主要分為主觀因素和客觀因素兩部分的優化。這里主要針對影響性能的客觀因素進行優化。2.2.1 主觀因素優化 主觀因素主要是指伺服器的硬體環境。主要優化有以下幾個方面:1、 把數據、日誌、索引放到不同的I/O設備上,增加讀取速度,數據量越大,提高I/O吞吐量越重要;2、 縱向、橫向分割表,減少表的尺寸(sp_spaceuse);3、 升級硬體;4、 提高網路訪問速度;5、 擴大伺服器的內存;配置虛擬內存:虛擬內存大小應基於計算機上並發運行的服務進行配置,一般設置為物理內存的1.5倍;如果安裝了全文檢索功能,並打算運行Microsoft搜索服務以便執行全文索引和查詢,可考慮將虛擬內存大小設置為至少計算機中物理內存的3倍;6、 增加伺服器CPU個數;其中並行處理比串列處理更需要資源。SQL SERVER根據系統負載情況決定最優的並行等級,復雜的需要消耗大量的CPU的查詢適合並行處理。不過更新操作UPDATE、INSERT、DELETE不能進行並行處理。 2.2.2 客觀因素優化 客觀因素主要指的是由於設計和開發中存在的缺陷和漏洞;主要優化有以下幾個方面:1. 優化索引(1) 根據查詢條件建立優化的索引、優化訪問方式,限制結果集的數據量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,使用位元組數小的列建里索引(參照索引的創建),不要對有限的幾個值的欄位建立單一索引(如性別欄位)。(2) 如果使用LIKE進行查詢的話,簡單的使用INDEX是不行的,全文索引又太耗費空間。LIKE 『N%』使用索引,LIKE 『%N』不使用索引。用LIKE『%N%』查詢時,查詢耗時和欄位值總長度成正比,所以不能用CHAR類型而採用VARCHAR。對於欄位的值很長的欄位建立全文索引。(3) 重建索引DBCC REINDEX,DBCC INDEXDEFRAG,收縮數據和日誌DBCC SHRINKDB,DBCC SHRINKFILE。設置自動收縮日誌,對與大的資料庫不要設置資料庫自動增長,它會降低伺服器的性能。2. 資料庫部署優化(1) DB SERVER和APPLICATION SERVER分離,OLTP和OLAP分離;(2) 使用分區視圖。分布式分區視圖可用於實現資料庫伺服器聯合體,聯合體是一組分開管理的伺服器,他們互相協作分擔系統的處理負荷。A、在實現分區視圖之前,必須先水平分區表。B、在創建成員表後,在每個伺服器上定義一個分布式分區視圖,並且每個視圖具有相同的名稱。這樣引用分布式分區視圖名的查詢可以在任何一個成員伺服器上運行。系統操作如同每個成員伺服器都有一個原始表的復本一樣,不過每個伺服器上其實只有一個成員表和一個分布式分區視圖。數據的位置對應用程序是透明的。3. 查詢語句優化 T-SQL的寫法上有很大的講究,DBMS處理查詢計劃的過程是:a、查詢語句的詞法、語法檢查;b、將語句提交給DBMS的查詢優化器;c、優化器做代數優化和存取路徑的優化;d、由預編譯模塊生成查詢規劃;e、在合適的時間提交給系統處理執行;f、將執行結果返回給用戶。(1) COMMIT和ROLLBACK的區別:ROLLBACK回滾所有的事務;COMMIT提交當前的事務。在動態語句中寫事務,請將事務寫在外面,如:BEGIN TRAN EXEC(@SQL) COMMIT TRANS或者將動態SQL寫成函數或者存儲過程。(2) 在大數據兩的查詢輸出SELECT語句中盡量不要使用自定義函數,調用自定義函數的函數時系統調用是一個迭代過程,很影響查詢輸出性能的。在查詢欄位時盡可能使用小欄位兩輸出,並在WHERE子句或者使用SELECT TOP 10/1 PERCENT來限制返回的記錄數,使用SET ROWCOUNT來限制操作的記錄數,避免整表掃描。返回不必要的數據,不但浪費了伺服器的I/O資源,加重了網路的負擔,如果表很大的話,在表掃描期間將表鎖住,禁止其他的聯接訪問,後過很嚴重的。(3) SQL的注釋申明對執行查詢輸出沒有任何影響。(4) 使用計算列對數據進行簡單計算,盡量避免在查詢語句中對數據進行運算。(5) 盡可能不使用游標,它會佔用大量的資源。如果需要ROW-BY-ROW地執行,盡量採用非游標技術,如:客戶端循環、臨時表、TABLE變數、子查詢、CASE語句等等。(6) 使用PROFILER來跟蹤查詢,得到查詢所需的時間,找出SQL的問題所在,用索引優化器優化索引。(7) 注意UNION和UNION ALL的區別。在沒有必要的時候不要用DISINCT,它同UNION一樣會降低查詢速度,重復的記錄在查詢里是沒有問題的。(8) 用sp_configure 『query governor cost limit』或者 SET QUERY_COVERNOR_COST_LIMIT來限制查詢消耗的資源。當評估查詢消耗的 資源超出限制時,伺服器自動取消查詢,在查詢之前就扼殺掉。SET LOCKTIME 設置鎖的時間。(9) 不要在WHERE子句中列名加函數,如CONVERT,SUBSTRING等,如果必須用函數的時候,創建計算列在創建索引來替代。NOT IN會多次掃描表,使用EXISTS、NOT EXISTS、IN、LEFT OUTER JOIN來替代,其中EXISTS比IN更快,最慢的NOT操作。(10) 使用QUERY ANALYZER,查看SQL語句的查詢計劃和評估分析是否是優化的SQL。一般20%的代碼佔用了80%的資源,優化的重點就是這些慢的地方。(11) 如果使用了IN或者OR等時發現查詢沒有走索引,使用顯式申明指定索引,如:Select * From FA01(INDEX=IX_SEX) Where AA0107 IN(『01』,『02』)。(12) 在需要對已有數據進行比較復雜計算才能獲得查詢的結果數據時,將需要查詢的結果預先計算好放在表中,查詢的時候在SELECT。(13) 資料庫有一個原則是代碼離數據越近越好,所有有限選擇DEFAULT,依次為RULES,CONSTRAINT,PROCEDURE來編寫程序的質量高,速度快。如果要插入大的二進制到IMAGE列,使用存儲過程,千萬不要用內嵌INSERT直接插入。因為這樣應用程序首先將二進制轉換成字元串,伺服器收到字元後又將他轉換成二進制。存儲過程直接傳入二進制參數即可,處理速度明顯改善,如:CREATE PROCEDURE image_insert @image varbinary as Insert into table(fImage) values(@image)。(14) Between在某些時候比IN速度更快,更快地根據索引找到范圍。由於IN會比較多次,所以有時會慢些。(15) 盡量不要建沒有作用的事務例如產生報表時,浪費資源,只有在必須使用事務時才建立合適的事務。(16) 用OR的字句可以分解成多個查詢,並通過UNION連接多個查詢。速度取決與是否使用索引。如果查詢需要用聯合索引,用UNION ALL執行的效率更高些。(17) 盡量少用視圖,視圖的效率低。對視圖操作比直接對表操作慢,可以用SRORED PROCEDURE來代替。特別是不要用視圖嵌套,嵌套視圖增加了尋找原始資料的難度。視圖是存放在伺服器上的被優化好了的已經產生查詢規劃的SQL。對單表數據檢索時,不要使用指向多表的視圖,否則增加了不必要的系統開銷,查詢也會受到干擾。沒有必要時不要用DISTINCT和ORDER BY,這些動作可以改在客戶端執行,增加了額外的開銷,這同UNION和UNION ALL原理相同。(18) 當使用SELECT INTO和CREATE TABLE時,會鎖住系統表(SYSOBJECTS,SYSINDEXES等),從而阻塞其他的連接的存取。所以千萬不要在事務內部使用。如果經常要用到臨時表時請使用實表或者臨時表變數。盡量少用臨時表,用結果集和TABLE類型的變數來代替。(19) 在使用GROUP BY HAVING子句時,在使用前剔除多餘的行,盡量避免使用HAVING子句剔除行工作。剔除行最優的執行順序是:SELECT的WHERE子句選擇所有合適的行,GROUP
❷ 如何 提高 SQL SERVER 運行 效率
可以從很多方面進行提高,
1 硬體:增加內存、使用更高性能的CPU,使用更高性能的硬碟(存儲)
2 SQL系統:設置內存使用,數據文件每次增長大一點,減少增長頻率,日誌放在更高速的存儲設置上。
3 設計優化:建立必要的索引,建立必要的聚集索引或關鍵字
4 SQL語句優化:比如用exists代替in ,查看語句,是否使用了正確的索引,去掉沒有必要的order by ,去掉沒有必要的union (可以使用union all代替的情況),減少游標的使用
❸ 資料庫性能優化有哪些措施
1、調整數據結構的設計
這一部分在開發信息系統之前完成,程序員需要考慮是否使用ORACLE資料庫的分區功能,對於經常訪問的資料庫表是否需要建立索引等。
2、調整應用程序結構設計
這一部分也是在開發信息系統之前完成,程序員在這一步需要考慮應用程序使用什麼樣的體系結構,是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的資料庫資源是不同的。
3、調整資料庫SQL語句
應用程序的執行最終將歸結為資料庫中的SQL語句執行,因此SQL語句的執行效率最終決定了ORACLE資料庫的性能。ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整優化SQL語句。
4、調整伺服器內存分配
內存分配是在信息系統運行過程中優化配置的,資料庫管理員可以根據資料庫運行狀況調整資料庫系統全局區(SGA區)的數據緩沖區、日誌緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。需要注意的是,SGA區不是越大越好,SGA區過大會佔用操作系統使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統。
5、調整硬碟I/O
這一步是在信息系統開發之前完成的。資料庫管理員可以將組成同一個表空間的數據文件放在不同的硬碟上,做到硬碟之間I/O負載均衡。
6、調整操作系統參數
例如:運行在UNIX操作系統上的ORACLE資料庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。
實際上,上述資料庫優化措施之間是相互聯系的。ORACLE資料庫性能惡化表現基本上都是用戶響應時間比較長,需要用戶長時間的等待。但性能惡化的原因卻是多種多樣的,有時是多個因素共同造成了性能惡化的結果,這就需要資料庫管理員有比較全面的計算機知識,能夠敏感地察覺到影響資料庫性能的主要原因所在。另外,良好的資料庫管理工具對於優化資料庫性能也是很重要的。
一、ORACLE資料庫性能優化工具
常用的資料庫性能優化工具有:
ORACLE資料庫在線數據字典,ORACLE在線數據字典能夠反映出ORACLE動態運行情況,對於調整資料庫性能是很有幫助的。
操作系統工具,例如UNIX操作系統的vmstat,iostat等命令可以查看到系統系統級內存和硬碟I/O的使用情況,這些工具對於管理員弄清出系統瓶頸出現在什麼地方有時候很有用。
SQL語言跟蹤工具(SQL TRACE FACILITY),SQL語言跟蹤工具可以記錄SQL語句的執行情況,管理員可以使用虛擬表來調整實例,使用SQL語句跟蹤文件調整應用程序性能。SQL語言跟蹤工具將結果輸出成一個操作系統的文件,管理員可以使用TKPROF工具查看這些文件。
ORACLE Enterprise Manager(OEM),這是一個圖形的用戶管理界面,用戶可以使用它方便地進行資料庫管理而不必記住復雜的ORACLE資料庫管理的命令。
EXPLAIN PLAN——SQL語言優化命令,使用這個命令可以幫助程序員寫出高效的SQL語言。
二、ORACLE資料庫的系統性能評估
信息系統的類型不同,需要關注的資料庫參數也是不同的。資料庫管理員需要根據自己的信息系統的類型著重考慮不同的資料庫參數。
1、在線事務處理信息系統(OLTP),這種類型的信息系統一般需要有大量的Insert、Update操作,典型的系統包括民航機票發售系統、銀行儲蓄系統等。OLTP系統需要保證資料庫的並發性、可靠性和最終用戶的速度,這類系統使用的ORACLE資料庫需要主要考慮下述參數:
資料庫回滾段是否足夠?
是否需要建立ORACLE資料庫索引、聚集、散列?
系統全局區(SGA)大小是否足夠?
SQL語句是否高效?
2、數據倉庫系統(Data Warehousing),這種信息系統的主要任務是從ORACLE的海量數據中進行查詢,得到數據之間的某些規律。資料庫管理員需要為這種類型的ORACLE資料庫著重考慮下述參數:
是否採用B*-索引或者bitmap索引?
是否採用並行SQL查詢以提高查詢效率?
是否採用PL/SQL函數編寫存儲過程?
有必要的話,需要建立並行資料庫提高資料庫的查詢效率
三、SQL語句的調整原則
SQL語言是一種靈活的語言,相同的功能可以使用不同的語句來實現,但是語句的執行效率是很不相同的。程序員可以使用EXPLAIN PLAN語句來比較各種實現方案,並選出最優的實現方案。總得來講,程序員寫SQL語句需要滿足考慮如下規則:
1、盡量使用索引。試比較下面兩條SQL語句:
語句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN
(SELECT deptno FROM emp);
語句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS
(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);
這兩條查詢語句實現的結果是相同的,但是執行語句A的時候,ORACLE會對整個emp表進行掃描,沒有使用建立在emp表上的deptno索引,執行語句B的時候,由於在子查詢中使用了聯合查詢,ORACLE只是對emp表進行的部分數據掃描,並利用了deptno列的索引,所以語句B的效率要比語句A的效率高一些。
2、選擇聯合查詢的聯合次序。考慮下面的例子:
SELECT stuff FROM taba a, tabb b, tabc c
WHERE a.acol between :alow and :ahigh
AND b.bcol between :blow and :bhigh
AND c.ccol between :clow and :chigh
AND a.key1 = b.key1
AMD a.key2 = c.key2;
這個SQL例子中,程序員首先需要選擇要查詢的主表,因為主表要進行整個表數據的掃描,所以主表應該數據量最小,所以例子中表A的acol列的范圍應該比表B和表C相應列的范圍小。
3、在子查詢中慎重使用IN或者NOT IN語句,使用where (NOT) exists的效果要好的多。
4、慎重使用視圖的聯合查詢,尤其是比較復雜的視圖之間的聯合查詢。一般對視圖的查詢最好都分解為對數據表的直接查詢效果要好一些。
5、可以在參數文件中設置SHARED_POOL_RESERVED_SIZE參數,這個參數在SGA共享池中保留一個連續的內存空間,連續的內存空間有益於存放大的SQL程序包。
6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經常使用的存儲過程「釘」在SQL區中而不被換出內存,程序員對於經常使用並且佔用內存很多的存儲過程「釘」到內存中有利於提高最終用戶的響應時間。
四、CPU參數的調整
CPU是伺服器的一項重要資源,伺服器良好的工作狀態是在工作高峰時CPU的使用率在90%以上。如果空閑時間CPU使用率就在90%以上,說明伺服器缺乏CPU資源,如果工作高峰時CPU使用率仍然很低,說明伺服器CPU資源還比較富餘。
使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統的伺服器,可以使用sar _u命令查看CPU的使用率,NT操作系統的伺服器,可以使用NT的性能管理器來查看CPU的使用率。
資料庫管理員可以通過查看v$sysstat數據字典中「CPU used by this session」統計項得知ORACLE資料庫使用的CPU時間,查看「OS User level CPU time」統計項得知操作系統用戶態下的CPU時間,查看「OS System call CPU time」統計項得知操作系統系統態下的CPU時間,操作系統總的CPU時間就是用戶態和系統態時間之和,如果ORACLE資料庫使用的CPU時間占操作系統總的CPU時間90%以上,說明伺服器CPU基本上被ORACLE資料庫使用著,這是合理,反之,說明伺服器CPU被其它程序佔用過多,ORACLE資料庫無法得到更多的CPU時間。
資料庫管理員還可以通過查看v$sesstat數據字典來獲得當前連接ORACLE資料庫各個會話佔用的CPU時間,從而得知什麼會話耗用伺服器CPU比較多。
出現CPU資源不足的情況是很多的:SQL語句的重解析、低效率的SQL語句、鎖沖突都會引起CPU資源不足。
1、資料庫管理員可以執行下述語句來查看SQL語句的解析情況:
SELECT * FROM V$SYSSTAT WHERE NAME IN
('parse time cpu', 'parse time elapsed', 'parse count (hard)');
這里parse time cpu是系統服務時間,parse time elapsed是響應時間,用戶等待時間,waite time = parse time elapsed _ parse time cpu
由此可以得到用戶SQL語句平均解析等待時間=waite time / parse count。這個平均等待時間應該接近於0,如果平均解析等待時間過長,資料庫管理員可以通過下述語句
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
ORDER BY PARSE_CALLS;
來發現是什麼SQL語句解析效率比較低。程序員可以優化這些語句,或者增加ORACLE參數SESSION_CACHED_CURSORS的值。
2、資料庫管理員還可以通過下述語句:
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;
查看低效率的SQL語句,優化這些語句也有助於提高CPU的利用率。
3、資料庫管理員可以通過v$system_event數據字典中的「latch free」統計項查看ORACLE資料庫的沖突情況,如果沒有沖突的話,latch free查詢出來沒有結果。如果沖突太大的話,資料庫管理員可以降低spin_count參數值,來消除高的CPU使用率。
五、內存參數的調整
內存參數的調整主要是指ORACLE資料庫的系統全局區(SGA)的調整。SGA主要由三部分構成:共享池、數據緩沖區、日誌緩沖區。
1、 共享池由兩部分構成:共享SQL區和數據字典緩沖區,共享SQL區是存放用戶SQL命令的區域,數據字典緩沖區存放資料庫運行的動態信息。資料庫管理員通過執行下述語句:
select (sum(pins - reloads)) / sum(pins) "Lib Cache" from v$librarycache;
來查看共享SQL區的使用率。這個使用率應該在90%以上,否則需要增加共享池的大小。資料庫管理員還可以執行下述語句:
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "Row Cache" from v$rowcache;
查看數據字典緩沖區的使用率,這個使用率也應該在90%以上,否則需要增加共享池的大小。
2、數據緩沖區。資料庫管理員可以通過下述語句:
SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets','physical reads');
來查看資料庫數據緩沖區的使用情況。查詢出來的結果可以計算出來數據緩沖區的使用命中率=1 - ( physical reads / (db block gets + consistent gets) )。
這個命中率應該在90%以上,否則需要增加數據緩沖區的大小。
3、日誌緩沖區。資料庫管理員可以通過執行下述語句:
select name,value from v$sysstat where name in ('redo entries','redo log space requests');
查看日誌緩沖區的使用情況。查詢出的結果可以計算出日誌緩沖區的申請失敗率:
申請失敗率=requests/entries,申請失敗率應該接近於0,否則說明日誌緩沖區開設太小,需要增加ORACLE資料庫的日誌緩沖區。
昆明北大青鳥 java培訓班轉載自網路 如有侵權請聯系我們 感謝您的關注 謝謝支持