① sqlserver和oracle主要有什麼區別
1,oracle支持多種操作系統,sql server只支持windows。
2,oracle給dba更多的靈活性,可以根據實際情況調整參數,使你的應用的性能最佳,因而帶來一個缺點是很難上手;sql server則相反,當然很容易上手。
體系結構
oracle的文件體系結構為:
數據文件 .dbf(真實數據)
日誌文件 .rdo
控制文件 .ctl
參數文件 .ora
sql server的文件體系結構為:
.mdf (數據字典)
.ndf (數據文件)
.ldf (日誌文件)
www.2cto.com
oracle存儲結構:
在oracle里有兩個塊參數pctfree(填充因子)和pctused(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)
這樣可降低數據行連接與行遷移的可能性。塊的大小可設置(oltp塊和dss塊)
在oracle中,將連續的塊組成區,可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數
在oraclel里表可以分為多個段,段由多個區組成,每個段可指定分配在哪個表空間里(段的類型分為:數據段、索引段、回滾段、臨時段、cash段。oracle里還可對表進行分區,可按照用戶定義的業務規則、條件或規范,物理的分開磁碟上的數據。
這樣大大降低了磁碟爭用的可能性。
oracle有七個基本表空間:
·system表空間(存放數據字典和數據管理自身所需的信息)
·rbs回滾表空間
·temp臨時表空間
·tools互動式表空間
·users用戶默認表空間
·indx索引表空間
·dbsys福數據表空間
不同的數據分別放在不同的表空間(數據字典與真實數據分開存放),在oracle里基表(存儲系統參數信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。
sql server 存儲結構
以頁為最小分配單位,每個頁為8k(不可控制,缺乏對頁的存儲情況的分析機制),可將8個連續的頁的組成一個『擴展』,以進一步減少分配時所耗用的資源。(分配缺乏靈活性),在sql server里數據以表的方式存放,而表是存放在資料庫里。
sql server有五個基本資料庫: www.2cto.com
·master(數據字典)
·mode(存放樣版)
·tempdb(臨時資料庫)
·msdb(存放調度信息和日誌信息)
·pubs(示例資料庫)
真實數據與數據字典存放在一起。對系統參數信息無安全機制。
oracle登入管理:
·system/manager (初始帳戶)
·sys/change_on_nstall
·install/oracle(安裝帳戶)
·scott/tiger(示例資料庫,測試用)
在oracle里默認只有三個系統用戶,oracle是通過用戶登入。
sql server登入管理:
·sql server身份驗證
·windows 身份驗證
在sql server里是通過windows用戶帳戶或是用sql server身份驗證連接資料庫的。
sql不是一種語言,而是對oracle資料庫傳輸指令的一種方式。
sql中null既不是字元也不是數字,它是預設數據。oracle提供了nvl函數來解決。
oracle中的字元串連接為 string1‖string2 ,sql中為string1+string2.
集合操作:在sql中只有union(並操作),oracle中包含minus(差操作)、interect(交操作)、union(並操作)。
索引:sql的索引分為聚集索引和非聚集索引,還包括全文索引;
oracle的索引包括:b+樹索引,bitmap點陣圖索引,函數索引,反序索引,
主鍵索引,散列索引,本地索引。 www.2cto.com
oracle的數據類型比較復雜,有基本數據類型,衍生型,列對象型,表對象型,結構體型;
sql中的數據比較簡單,只有一些簡單的基本數據類型無法提供事務操作。
在sql中如果一個事務從開始執行到結束時了錯了,它就會回滾到開始之前;
在oracle中它採用的是定點回滾,就是該事務函數化和精確錯誤定位,用savepoint標記保存點,用rollback標記回滾錯誤的保存點。
在sql中循環只有while一種這用起來不靈活,在oracle中有多種循環(loop循環、while循環、for循環)。
在sql中游標的使用比較復雜,不能同時打開一個以上的游標,因為它只有一個全局變數@@fast_statues而且聲明游標也麻煩,關閉游標時也不清除內存的;oracle中游標是以提高速度全部統一的單項游標,可以允許多用戶非同步讀取,而且聲明比較簡單,就一句declare cursor游標名 is select 語句就可以了。
容錯機制:sql中的錯誤機制比較復雜,沒有提供錯誤描述;oracle中容錯類型有三種,一個是預定義錯誤,一個是非預定義錯誤,一個是用戶自定義,其中在自定義錯誤中它有兩個是在sql中不有的,那就是sqlcode 錯誤號、sqlerrm錯誤描述。
文件體系結構:sql中有.mdf(主要數據文件)、.ndf(擴展文件,可以有多個)、
.ldf(日誌文件,可以有多個,存放在聯機重做日誌數據,這里的日誌文件有一個缺點就是如果日誌文件已填小巧玲瓏的話,sql將自動停止運行並等待人工干預,所以要經常監控日誌的情況保證系統的穩定運行)。oracle中有.dbf(主要數據文件)、.rdo(日誌文件,用來做災難性的數據備份)、.ctl(控制文件,將資料庫的物理文件映射到了數據字典中的邏輯表空間和連機重做日誌文件上去,確保數據的一致性)、.ora(參數文件)。
sql只能是本機備份本機的資料庫,無法聯機備份,而且備份壓縮很低,佔用了大量空間;oracle提供了7種備份機制,具有聯機備份功能,有志門的備份機子。
oracle的日誌默認有3個,先寫入1號日誌,滿了後再寫入2號日誌,2號滿了再寫入3號日誌,3號滿了後oracle將自動備分1號日誌的內容,然後清空後寫入新的日誌信息,且oracle的日誌有多路復用功能,我們可以為日誌創建多個鏡像,把相同的日誌信息同時寫入多個日誌文件中,這樣可以防止磁碟損壞造成的數據丟失。
sql server對每個資料庫只能分配一個日誌文件。且當日誌填滿後,日誌將停止工作,等待人工干預,而無法自動重用。 www.2cto.com
oracle的控制文件記錄了資料庫文件的物理位置和有效性,在每次打開oracle系統都將自動對數據進行驗證,查看其有效性,防止數據的丟失,這體現了oracle對數據管理的嚴密性。
sql server無此安全機制,只用在使用到了資料庫的信息後,系統才去查找數據是否存在。
oracle的參數文件init.ora是可調的,既我們可以根據資料庫的規模調整oracle對系統資源的使用情況,以達到最合理的資源分配,讓oracle達到最佳的性能。
sql server的配置參數是內定的不可調整,它對系統資源的分配是固定的,不受擁護控制,因此無法同時處理大量用戶的需求,這限制了它只能作為中,小型資料庫。
oracle以塊為最小存儲單位,以區為單位分配空間,用戶可以根據需要自己定義塊的大小,且區可以按等額或遞增進行分配,這可以大大減少系統的i/o操作提高資料庫的性能。
sql server中以頁為單位或使用擴展類型以8頁為一單位進行空間分配而無法人工干預,當遇到頻繁存儲或大數據量存儲時,系統將頻繁進行i/o操作使工作效率低下。
oracle中的sql語句書寫規范且提供了完整的函數和數據類型。oracle提供了健全的錯誤機制,用戶可以輕松的獲得錯誤位置和錯誤原因而加以修改。用戶還可以自己定義所須的錯誤類型,用以檢查邏輯錯誤。oracle中對數據類型的轉換和游標的定義也十分方便。因此,我們對代碼的書寫和維護也比sql server方便許多。
sql server使用類c語言,不易維護和查看代碼。sql server包含的數據類型太少,無法定義結構體,數組,對象。sql server無法定義流程機制,類型轉換也極不方便,sql server中對游標定義十分復雜,且當用戶定義的多個游標同時打開時系統卻只有一個游標變數,這是sql server中一個嚴重的缺陷。
oracle中用戶可以根據數據需要在創建塊時定義填充因子(空閑空間的百分比)和復用因子(當塊的存儲數據所佔的空間下降到這個百分比之下時,塊才重新標記為可用)。用戶可以根據記錄變化頻率和數據量的大小設置合適的填充因子和空閑因子。
sql server只有填充因子,而它的定義與oracle剛好相反,它定義的是剩餘可用空間的百分比。而sql server中沒有復用因子,當頁中數據低於填充因子,但剩餘的空間已經不可能再插入新的數據,但頁還是標記為可用的,當系統要寫入新數據都要訪問這個頁而浪費時間,這種頁稱為廢頁,將使系統插入新數據時浪費大量時間查找可用的頁。
oracle在創建表時用戶可以精確定義數據存放的表空間,甚至可以把一張表分開存放在多個表空間中,這樣可以將數據量龐大的表按某些欄位分開存放,這將給查詢帶來極高的效率。
www.2cto.com
隨著信息技術的飛速發展,數據處理不僅在數量上要求越來越大,而且在質量上也要求越來越高。
操作系統的穩定對資料庫來說是十分緊要的,在資料庫可操作平台上,oracle可在所有主流平台上運行,oracle資料庫採用開放的策略目標,它使得客戶可以選擇一種最適合他們特定需要的解決方案。客戶可以利用很多種第三方應用程序、工具。對開發商來說是很大的支持。而sql server卻只能在windows上運行了,這個就顯得比較單調了,但sql sever在window平台上的表現,和windows操作系統的整體結合程度,使用方便性,和microsoft開發平台的整合性都比oracle強的很多。但windows操作系統的穩定性及可靠性大家是有目共睹的,再說microsoft公司的策略目標是將客戶都鎖定到windows平台的環境當中,只有隨著windows性能的改善,sql server才能進一步提高。從操作平台這點上oracle是完全優勝於sql server的了。
從資料上可以看到,oracle的安全認證獲得最高認證級別的iso標准認證,而sql server並沒有獲得什麼安全認證。這方面證明了oracle的安全性是高於sql server的。
購買一個產品,首先考慮的當然是產品的性能了,當考慮性能的同時當然少不了究竟要花多少錢在這產品也是個很關鍵的問題。要建立並運行一個資料庫系統。不僅僅包含最初購置軟體、硬體的費用,還包含了培訓及以後維護的費用。orcale資料庫的價格是遠比sql server資料庫要高,為什麼oracle資料庫比sql server資料庫價格上要高出那麼多,一方面oracle的初始花費相對較高,特別是在考慮工具軟體的時候,oracle很多工具軟體需要另外購買,與microsoft提供免費的sql server工具軟體相比,oracle更顯價格的不菲。但由於sql server只能在windows下運行的原因,普遍認為sql server資料庫的可靠性是比較差的。oracle的性能優勢體現在他的多用戶上,而sql server的性能優勢在多用戶上就顯得力不從心了。
操作上sql server明顯要比orcale簡單,如果你用過java和dotnet的開發平台,區別的基本就是oracle和sql server不同,oracle的界面基本是基於java的,大部分的工具是dos界面的,甚至sqlplus也是, sql server是跟vb一樣,全圖形界面,很少見到dos窗口。sql server中的企業管理器給用戶提供一個全圖形界面的集成管理控制台來集中管理多個伺服器。oracle也有自己的企業管理器,而且它的性能在某些方面甚至超過了sql server的企業管理器,但它安裝較為困難。
orcale資料庫和sql server資料庫那個更快?其實是一個很難答的問題,因為存在許多不定因素,包括處理類型、數據分布以及硬體基礎設施等。
sql server 2000是一個具備完全web支持的資料庫產品,提供了可擴展標記語言核心支持以及internet上和防火牆外進行查詢的能力,具有可伸縮性、靈活性、擴充性好,而且價格便宜等特點,而oracle則有著可靠安全性,速度比sql server快上百倍,但其價格在實施中卻比sql server它高出了幾百倍。
其實各行業考慮選擇那種資料庫,是由資料庫的特點以及根據自己的業務需求和基礎設施綜合考慮來決定的。
② 在SQLServer中使用索引的技巧
在SQL Server中 為了查詢性能的優化 有時我們就需要對數據表通過建立索引的方式 目的主要是根據查詢要求 迅速縮小查詢范圍 避免全表掃描
索引有兩種類型 分別是聚集索引(clustered index 也稱聚類索引 簇集索引)和非聚集索引(nonclustered index 也稱非聚類索引 非簇集索引)
聚集索引在一個表中只能有一個 默認情況下在主鍵建立的時候創建 它是規定數據在表中的物理存儲順序 我們也可以取消主鍵的聚集索引 所以必須考慮資料庫可能用到的查詢類型以及使用的最為頻繁的查詢類型 對其最常用的一個欄位或者多個欄位建立聚集索引或者組合的聚集索引 它就是SQL Server會在物理上按升序(默認)或者降序重排數據列 這樣就可以迅速的找到被查詢的數據
非聚集索主要是數據存儲在一個地方 索引存儲在另一個地方 索引帶有指針指向數據的存儲位置 索引中的項目按索引鍵值的順序存儲 而表中的信息按另一種順序存儲 可以在一個表格中使用高達 個非聚集的索引 在查詢的過程中先對非聚集索引進行搜索 找到數據值在表中的位置 然後從該位置直接檢索數據 這使非聚集索引成為精確匹配查詢的最佳方法 因為索引包含描述查詢所搜索的數據值在表中的精確位置的條目
所以我們在選擇創建聚集索引的時候要注意以下幾個方面
) 對表建立主鍵時 就會為主鍵自動添加了聚集索引 如自動編號欄位 而我們沒有必要把聚集索引浪費在主鍵上 除非你只按主鍵查詢 所以會把聚集索引設置在按條件查詢頻率最高的那個欄位或者組合的欄位
) 索引的建立要根據實際應用的需求來進行 並非是在任何欄位上建立索引就能提高查詢速度 聚集索引建立遵循下面幾個原則
包含大量非重復值的列
使用下列運算符返回一個范圍值的查詢 BEEEN > >= < 和 <=
被連續訪問的列
返回大型結果集的查詢
經常被使用聯接或 GROUP BY 子句的查詢訪問的列;一般來說 這些是外鍵列 對ORDER BY 或 GROUP BY 子句中指定的列進行索引 可以使 SQL Server 不必對數據進行排序 因為這些行已經排序 這樣可以提高查詢性能
OLTP 類型的應用程序 這些程序要求進行非常快速的單行查找(一般通過主鍵) 應在主鍵上創建聚集索引
舉例來說 銀行交易日誌中對交易日期建立聚合索引 數據物理上按順序存於數據頁上 重復值也排列在一起 因而在范圍查找時 可以先找到這個范圍的起末點 且只在這個范圍內掃描數據頁 避免了大范圍掃描 提高了查詢速度 而如果我們對員工的基本信息表中性別的欄位列上建立聚集索引 就完全沒有必要 因為內容里只涉及到 男 與 女 兩個不同值
) 在聚集索引中按常用的組合欄位建立索引 形成復合索引 一般在為表建立多個主鍵的時候就會產生 如果一個表中的數據在查詢時有多個欄位總是同時出現則這些欄位就可以作為復合索引 這樣能形成索引覆蓋 提高where語句的查詢效率
)索引對查詢有一這的優化 但由於改變一個表的內容 將會引起索引的變化 頻繁的對數據操作如insert update delete語句將導致系統花費較大的代價進行索引更新 引起整體性能的下降 一般來講 在對查詢性能的要求高於對數據維護性能要求時 應該盡量使用索引 有時在這種操作資料庫比較頻繁的某些極端情況下 可先刪除索引 再對資料庫表更新大量數據 最後再重建索引 新建立的索引總是比較好用
索引在使用了長久的時候 就會產生很多的碎片 查詢的性能就會受到影響 這時候有兩種方法解決 一是利用DBCC INDEXDEFRAG整理索引碎片 還有就是利用DBCC DBREINDEX重建索引
DBCC INDEXDEFRAG 命令是聯機操作 所以索引只有在該命令正在運行時才可用 而且可以在不丟失已完成工作的情況下中斷該操作 這種方法的缺點是在重新組織數據方面沒有聚集索引的除去/重新創建操作有效
重新創建聚集索引將對數據進行重新組織 其結果是使數據頁填滿 填滿程度可以使用 FILLFACTOR 選項進行配置 這種方法的缺點是索引在除去/重新創建周期內為離線狀態 並且操作屬原子級 如果中斷索引創建 則不會重新創建該索引
我們來看看索引重建使用的方法
語法 DBCC DBREINDEX ( [ TableName [ index_name [ fillfactor ] ] ] )
參數 TableName
是要重建其指定的索引的表名 資料庫 所有者和表名必須符合標識符的規則 有關更多信息 請參見使用標識符 如果提供 database 或 owner 部分 則必須使用單引號 ( )
將整個 database owner table_name 括起來 如果只指定 table_name 則不需要單引號
index_name 是要重建的索引名 索引名必須符合標識符的規則 如果未指定 index_name 或指定為 就要對表的所有索引進行重建
fillfactor 是創建索引時每個索引頁上要用於存儲數據的空間百分比 fillfactor替換起始填充因子以作為索引或任何其它重建的非聚集索引(因為已重建聚集索引)的新默認值 如果 fillfactor 為 DBCC DBREINDEX 在創建索引時將使用指定的起始fillfactor
我們在查詢分析器中輸入如下的命令
DBCC DBREINDEX ( MyTable )
lishixin/Article/program/SQLServer/201311/22210
③ 怎樣查出SQLServer的性能瓶頸
SQLServer性能監控
這套性能優化的清單將至少准科學的幫助你找出你的SQLServer任何明顯的性能問題。說是這樣說,SQLServer的性能調優仍然是很困難的。我試圖用這套清單去找出「容易」的sqlserver性能問題,困難的留待稍後。我這樣做是因為很容易將容易和困難的的性能調優問題搞混。通過列出一個「容易」的性能調優范圍,就很容易的將這些問題解決,一旦解決了這些容易的問題,那麼你就能集中去解決更困難的問題。
使用這個SQLServer性能調優清單的一個好處是,它將不僅僅告訴你目前最容易解決的性能問題是什麼,而且還幫助你正確的去解決。在某種程度上,你可以選擇不同的順序進行。換句話說,你可以故意做出特殊的決定而不是按照清單通常的順序進行。某種意義上說你是對的,不是所有的性能調優建議都適合所有的情形。另外,你的決定是基於你的資源限制,例如沒有足夠的錢去買滿足負荷的硬體。如果真是那樣的話,你就別無選擇了。還有,你的決定可能基於一些政治原因,那是你不得不作出的改變。不管怎樣,你需要知道你能做什麼,使用這個性能調優清單找出你能改變的范圍並做出相應的改變提升你的SQLServer的性能。
一般來說,你將在你的每一個SQL伺服器上執行這個清單。如果遇到清單中的一些問題,這會花掉你一些時間。我建議你從目前性能問題最多的的伺服器開始,然後當你有時間的時候按照自己的思路去解決其他伺服器。
一旦你完成了,可仍然有很多事情要去做。記住,這些只是一些容易的。一旦你完成了這些容易的,接下來你需要花時間去解決更困難問題。這個是另一篇文章要解決的問題了。
怎樣進行你的SQLServer性能調優呢?
為了使其變得容易,我把它們分成了以下幾個部分:
? 使用性能監視器找出硬體瓶頸
? SQLServer硬體性能監控列表
? 操作系統性能監控列表
? SQLServer2000配置性能監控列表
? 資料庫配置設置性能監控列表
? 索引性能監控列表
? 應用程序和T-SQL性能監控列表
? SQLServer資料庫作業性能監控列表
? 使用Profiler找出低效的查詢
? 怎樣最好的實現SQLServer性能監控
管理你的SQLServe性能的最好方法是首先回顧上面每一部分的內容,把它們列印出來。然後完成每一部分的內容,寫下你收集到的結果。你也可以按照你喜歡的順序進行。上面的步驟僅僅列出了我執行的順序,因為那樣通常能達到一個比較好的效果。
性能監控列表
計數器名稱 均值 最小值 最大值
Memory: Pages/sec
Memory: Available Bytes
Physical Disk: % Disk time
Physical Disk: Avg. Disk Queue Length
Processor: % Processor Time
System: Processor Queue Length
SQL Server Buffer: Buffer Cache Hit Ratio
SQL Server General: User Connections
在上表輸入你的結果.
使用性能監視器找出SQLServer硬體瓶頸
開始SQLServer性能調優的最佳地方就是從性能監視器(系統監視器)開始。通過一個24小時的周期對一些關鍵的計數器進行監控,你將對你SQLServer伺服器的硬體瓶頸了如指掌。
一般來說,使用性能監視器去創建一個一些關鍵的計數器的24小時周期的監控日誌。當你決定創建這個日誌的時候,你需要選擇一個典型的24小時的周期,例如,選擇一個典型的比較忙的日期,而不是周日或節假日。
一旦你將這些捕獲的數據形成日誌後,在性能監視器的圖形界面下會顯示計數器的推薦值。你在上表中記下均值、最小值、峰值。做完這些後,用你的結果跟下面的分析比較。通過你的結果和下面的建議值進行比較,你將能快速的找到你的SQLServe正在經歷的潛在的硬體瓶頸。
關鍵性能計數器說明
下面是不同關鍵性能計數器的一個討論,它們的建議值和為了幫助解決硬體瓶頸問題的一些選項。注意我已經限制了性能監視器需要監視的一些關鍵計數器。我這么做是因為在本文我們的目的是為了容易的找到顯而易見的性能問題,許多其他的性能監視器計數器你能在本網站其他地方找到。
Memory: Pages/sec
這個計數器記錄的是每秒鍾內存和磁碟之間交換的頁面數。交換更多的頁面、超過你伺服器承受的更多的I/O,將輪流降低你SQLserver的性能。你的目的就是盡量將頁面減少到最小,而不是消除它。
如果你的伺服器上SQLServer是最主要的應用程序,那麼這個值的理想范圍是0~20之間。可能很多時候你看到的值都會超過20。這個值一般要保持在每秒的平均頁數在20以下。
如果這個值平均總是超過20,其中最大的一個可能是內存瓶頸問題,需要增加內存。通常來說,更多的內存意味著需要執行的頁面更少。
在大多數情況下,伺服器決定SQLServer使用的適當內存的大小,頁面將平均小於20。給SQLServer適當的內存意味著伺服器的緩存命中率(Buffer Hit Cache Ratio 這個稍後會講到)達到99%或者更高。如果在一個24小時的周期里你的sqlserver的緩存命中率達到99%或者更高,但是在這個期間你的頁面數總是超過20,這意味著你或許運行了其他的程序。如果是這樣的情況,建議你移除這些程序,使SQLServer是你的伺服器的最主要的程序。
如果你的sqlserver伺服器沒有運行其他程序,並且在一個24小時的周期里頁面數總是超過20,這說明你應該修改你對SQLServer的內存設置了。將其設置為「動態配置SQLServer的內存」,並且最大內存設置得高一些。為了達到最優,SQLServer將盡可能的獲得多的內存以完成自己的工作,而不是去和其他的程序爭奪內存。
Memory: Available Bytes
另一個檢查SQLServer是否有足夠的物理內存的方法是檢查Memory Object: Available Bytes計數器。 這個值至少大於5M,否則需要添加更多的物理內存。在一個專門的SQLServer伺服器上,SQLServer試圖維持4-10M的自由物理內存,其餘的物理內存被操作系統和SQLServer使用。當可用的物理內存接近5M或者更低時,SQLServer最可能因為缺少內存而遇到性能瓶頸。遇此情況,你需要增加物理內存以減少伺服器的負荷,或者給SQLServer配置一個合適的內存。
Physical Disk: % Disk Time
這個計數器度量磁碟陣列繁忙程度(不是邏輯分區或磁碟陣列上獨立的磁碟)。它提供一個對磁碟陣列繁忙程度相對較好的度量。原則上計數器% Disk Time的值應該小於55%。如果持續超過55%(在你24小時的監控周期里大約超過10分鍾),說明你的SQLServer有I/O瓶頸。如果你只是偶爾看到,也不必太擔心。但是,如果經常發生的話(也就是說,一個小時出現好幾次),就應該著手尋找增加伺服器I/O性能或者減少伺服器負荷的解決之道了。一般是為磁碟陣列增加磁碟,或者更好更快的磁碟,或者給控制器卡增加緩存,或者使用不同版本的RAID,或者更換更快的控制器。
在NT4.0上使用該計數器之前,確認在NT命令提示符下輸入diskperf -y,重啟伺服器,以便手動打開。在NT4.0下第一次必須將該計數器打開,Windows2000默認是打開的。
Physical Disk: Avg. Disk Queue Length
除了觀察物理磁碟的% Disk Time計數器外,還可以用Avg. Disk Queue Length計數器。磁碟陣列中的各個磁碟的該值如果超過2(在你24小時的監控周期里大約超過10分鍾),那麼你的磁碟陣列存在I/O瓶頸問題。象計數器% Disk Time一樣,如果只是偶爾看到,也不必太擔心。但是,如果經常發生的話,就應該著手尋找增加伺服器I/O性能的解決之道了。如前所述。
你需要計算這個值,因為性能監視器不知道你的磁碟陣列中有多少物理磁碟。例如,如果你有一個6個物理磁碟組成的磁碟陣列,它的Avg.
Disk Queue Length值為10,那麼實際每個磁碟的值為1.66(10/6=1.66),它們都在建議值2以內。
在NT4.0上使用該計數器之前,確認在NT命令提示符下輸入diskperf -y,重啟伺服器,以便手動打開。在NT4.0下第一次必須將該計數器打開,Windows2000默認是打開的。
一起使用這兩個計數器將幫助你找出I/O瓶頸。例如,如果% Disk Time的值超過55%,Avg. Disk Queue Length計數器值超過2,伺服器則存在I/O瓶頸。
Processor: % Processor Time
處理器對象: % Processor Time計數器對每一個CPU可用,並針對每一個CPU進行檢測。同樣對於所有的CPU也可用。這是一個觀察CPU利用率的關鍵計數器。如果% Total Processor Time計數器的值持續超過80%(在你24小時的監控周期里大約超過10分鍾),說明CPU存在瓶頸問題。如果只是偶爾發生,並且你認為對你的伺服器影響不大,那沒問題。如果經常發生,你應該減少伺服器的負載,更換更高頻率的CPU,或者增加CPU的數量或者增加CPU的2級緩存(L2 cache)。
System: Processor Queue Length
根據% Processor Time計數器,你可以監控Processor Queue Length計數器。每個CPU的該值如果持續超過2(在你24小時的監控周期里大約超過10分鍾),那麼你的CPU存在瓶頸問題。例如,如果你的伺服器有4個CPU,Processor Queue Length計數器的值總共不應超過8。
如果Processor Queue Length計數器的值有規律的超過建議的最大值,但是CPU利用率相對不是很高,那麼考慮減少SQLServer的"max worker threads"的配置值。Processor Queue Length計數器的值高的可能原因是有太多的工作線程等待處理。通過減少"maximum worker threads"的值,強迫線程池踢掉某些線程,從而使線程池得到最大的利用。
一起使用計數器Processor Queue Length和計數器% Total Process Time,你可以找到CPU瓶頸,如果都顯示超過它們的建議值,可以確信存在CPU瓶頸問題。
SQL Server Buffer: Buffer Cache Hit Ratio
SQL Server Buffer中的計數器Buffer Cache Hit Ratio用來指出SQLServer從緩存中而不是磁碟中獲得數據的頻率。在一個OLTP程序中,該比率應該超過90%,理想值是超過99%。如果你的buffer cache hit ratio低於90%,你需要立即增加內存。如果該比率在90%和99%之間,你應該認真考慮購買更多的內存了。如果接近99%,你的SQLServer性能是比較快的了。某些情況下,如果你的資料庫非常大,你不可能達到99%,即使你在伺服器上配置了最大的內存。你所能做的就是盡可能的添加內存。
在OLAP程序中,由於其本身的工作原理,該比率大大減少。不管怎樣,更多的內存總是能提高SQLServer的性能。
SQL Server General: User Connections
既然sqlserver的使用人數會影響它的性能,你就需要專注於sqlserver的General Statistics Object: User Connections計數器。它顯示sqlserver目前連接的數量,而不是用戶數。
如果該計數器超過255,那麼你需要將sqlserver的"Maximum Worker Threads" 的配置值設置得比預設值255高。如果連接的數量超過可用的線程數,那麼sqlserver將共享線程,這樣會影響性能。"Maximum Worker Threads"需要設置得比你伺服器曾經達到的最大連接數更高。
④ sqlserver2005 執行功能和分析功能的區別
執行功能和分析功能的區別
一般不這樣說,
常說 oltp 或者 olap
在常用「生產過程」(指普通的商業環境中)用oltp,要求每單位時間能處理的事情要多,(說白了,就是單位時間內」修改數據次數「要多),普通家用機配置,這個數大約就是每秒200次,多了就的用專門的伺服器了。
在「分析系統」過程中,數據往往是批量導入,或自動,或手動,對資料庫查詢要多,修改要少,這樣整個資料庫的結構設就會和生產資料庫大不相同。
而且查詢時間有可能很長,和生產庫也不同,(生產資料庫一般查詢超時30秒,超時間了,肯定扔出)。
⑤ sql server 2008 reporting services有什麼用
Sql server 2008 Reporting Services是微軟的資料庫報表設計工具,其作用是利用Reporting Services,用戶能夠高效地開發數據報表。
Sql server 2008 Reporting Services集成在微軟的商業智能開發工具:SQL Server Business Intelligence Development Studio之中,這個工具其實就是大家熟悉的Visual Studio。
(5)sqlserveroltp擴展閱讀:
Reporting Services為用戶提供了各種數據模板。 基於數據模板,用戶可以構建各種樣式的報表,包括常用的表格,矩陣和圖表。
此外,Reporting Services支持的數據源大致分為兩種類型:
(1)OLTP,是基於SQL語句的數據源,使用關系資料庫為報表提供數據。
(2)OLAP,基於數據倉庫的數據源,使用多維數據集為報表提供數據。
⑥ 如何測試sqlserver性能
對於DBA來講,我們都會做新伺服器的性能測試。我會從TPC的基準測試入手,使用HammerDB做整體性能評估(前身是HammerOra),跟廠商數據對比。再使用DiskSpd針對性的測試磁碟IO性能指標(前身是SQLIO),再到SQLIOSIM測試存儲的完整性,再到ostress並發壓力測試,對於資料庫伺服器遷移,我們還會收集和回放Profiler Trace,並收集期間關鍵性能計數器做對比。
下面我著重談談使用HammerDB的TPC-C來做SQL Server基準測試。
自己寫負載測試代碼很困難
為了模擬資料庫的負載,你想要有多個應用程序用戶和混合數據讀寫的語句。你不想總是對單一行更新相同的值,或者只是重復插入假的值。
自己動手使用Powershell、C#等語言寫負載測試腳本也不是不可能,只是太消耗時間,你需要創建或者恢復資料庫,並做對應的測試。
免費而簡單的壓測SQL Server:使用HammerDB模擬OLTP資料庫負載
HammerDB是一個免費、開源的工具,允許你針對SQL Server、Oracle、MySQL和PostgreSQL等運行TPC-C和TPC-H基準測試。你可以使用HammerDB來針對一個資料庫生成腳本並導入測試。HammerDB也允許你配置一個測試運行的長度,定義暖機階段,對於每個運行的虛擬用戶的數量。
首先,HammerDB有一個自動化隊列,讓你將多個運行在不同級別的虛擬用戶整合到一個隊列--你可以以此獲得在什麼級別下虛擬用戶性能平穩的結果曲線。你也可以用它來模擬用於示範或研究目的的不同負載。
用於SQL Server上的HammerDB的優缺點
HammerDB是一個免費工具,它也極易訪問和快速的啟動基準測試和模擬負載的方法。它的自動程序特性也是的運行工作負載相當自動。
主要缺點是它有一個學習曲線。用戶界面不是很直觀,需要花費時間去習慣。再你使用這個工具一段時間之後,將會更加容易。
HammerDB也不是運行每一個基準測試。它不運行TPC-E基準,例如,SQL Server更熱衷於當前更具發展的OLTP基準TPC-E。如果你用HammerDB運行一個TPC-C基準,你應該理解它不能直接與供應商提供的TPC-C基準結果相比較。但是,它是免費的、快速的、易用的。
基準測試使用案例
基準測試負載不能精確模擬你的應用程序的特點。每個負載是唯一的,在不同的系統有不同的瓶頸。對於很多使用案例,使用預定義的基準測試仍然是非常有效的,包括以下性能的比較:
多個環境(例如:舊的物理伺服器,新的虛擬環境)
使用各種因素的不同及時點(例如:使用共享存儲和共享主機資源的虛擬機的性能)
在配置改變前後的點
當然,對一個資料庫伺服器運行基準測試可以影響其他SQL Server資料庫或者相同主機上其他虛擬機的性能,在生產環境你確保有完善的測試計劃。
對於自學和研究來說,有預配置的負載非常棒。
開始使用基準測試
你可以從閱讀HammerDB官方文檔的「SQL Server OLTP Load Testing Guide」開始。
⑦ oracle和sqlserver的速度誰快
小機上還是 ORACLE快。
普通PC,要看配置和應用的類型。
OLTP的 ,INFORMIX最快
OLAP的 ,SYBASE IQ最快
所以說,要看應用的類型了,但是目前來講,O和S都不是最快的。但,是用的最廣的
⑧ 怎樣查出SQLServer的性能瓶頸
硬體性能瓶頸 內存 內存對SQL Server性能的影響勝過任何其他硬體。因此,對SQL Server系統的內存使用情況進行定期監視以確保內存的可用百分比高於20%是很有必要的。如果用戶遭遇性能問題,同時可用內存百分比低於20%,那麼此問題一定是內存分配不足導致的。這要求技術人員密切關注顯示平均頁面預期壽命的性能計數器,並確保平均頁面預期壽命總是高於300秒(5分鍾)。一旦放生少於此標準的情況,就說明要麼是糟糕的索引設計導致了磁碟輸入/輸出(I/O)的增加,要麼就是對內存的利用效率很低,或者是實際的內存不足。技術人員需要監視SQL Server系統上的分頁率,並確保它們常規為1000頁每秒。檢查PerfMon object MSSQL Buffer Manager(性能監視對象MSSQL緩沖管理器)和Memory Performance Counters(內存性能計數器)。 同樣,還要監視計數器,即PerfMon object SQL Server Memory Manager Counters中的Memory Grants Pending。此計數器顯示的是每秒鍾等待工作負載分配的進程總數。一般來講,小型OLTP事務不需要大內存分配。
⑨ 我想了解SqlServer 的標准版,企業版,個人版等他們有什麼區別
對於新接觸SQL資料庫的人來說,類似這幾個問題的有關於SQL版本的問題可以說不少,但又懶得去仔細研究。問題雖然簡單,可是影響卻不小……
版本區別
SQL Server 2000有四個版本:企業版/標准版/個人版/開發版
企業版和標准版需要安裝在伺服器操作系統上,如Windows NT Server / Windows 2000 Server / Windows 2003 Server 等。
個人版需要安裝在個人操作系統上,如Windows98 / Windows 2000 Professional / Windows XP Home / Windows XP Professional 等。
開發版可以安裝在任何微軟的操作系統上。
SQL Server 2000 企業版
作為生產資料庫伺服器使用。支持 SQL Server 2000 中的所有可用功能,並可根據支持最大的 Web 站點和企業聯機事務處理 (OLTP) 及數據倉庫系統所需的性能水平進行伸縮。
SQL Server 2000 標准版
作為小工作組或部門的資料庫伺服器使用。
SQL Server 2000 個人版
供移動的用戶使用,這些用戶有時從網路上斷開,但所運行的應用程序需要 SQL Server 數據存儲。在客戶端計算機上運行需要本地 SQL Server 數據存儲的獨立應用程序時也使用個人版。
SQL Server 2000 開發版
供程序員用來開發將 SQL Server 2000 用作數據存儲的應用程序。雖然開發版支持企業版的所有功能,使開發人員能夠編寫和測試可使用這些功能的應用程序,但是只能將開發版作為開發和測試系統使用,不能作為生產伺服器使用。
SQL Server 2000 Windows CE 版
使用 Microsoft® SQL Server 2000™ Windows® CE 版 (SQL Server CE) 在 Windows CE 設備上進行數據存儲。能用任何版本的 SQL Server 2000 復制數據,以使 Windows CE 數據與主資料庫保持同步。
SQL Server 2000 企業評估版
可從 Web 上免費下載的功能完整的版本。僅用於評估 SQL Server 功能;下載 120 天後該版本將停止運行。
除了這些版本的 SQL Server 2000 之外,SQL Server 2000 Desktop Engine 組件允許應用程序開發人員用他們的應用程序分發 SQL Server 2000 關系資料庫引擎的復本。因為 SQL Server 2000 Desktop Engine 中的資料庫引擎的功能與 SQL Server 各版本中的資料庫引擎相似,所以 Desktop Engine 資料庫的大小不能超過 2 GB。
版本兼容性:
下面是這幾個版本的簡單對比:
SQL Server 包括企業版,標准版,個人版,開發版,桌面引擎(MSDE),評估版,CE版。
1. 評估版用於評估,CE版用於Windows CE, 就不多說了。
2. 從功能上,企業版和開發版是一對,標准版和個人版是一對。企業版和開發版主要用於大用戶,可以支持更多的CPU,內存,可以支持集群(Cluster),日誌傳輸(log shipping),並行DBCC, 並行創建索引,索引視圖等高級功能。
3. 從安裝上看,企業版和標准版是一對,個人版,開發版和桌面引擎是一組,企業版和標准版只能安裝在Windows的Server版(NT, 2000, 2003)上, 個人版,開發版和桌面引擎可以安裝在更多的系統(包括NT Workstation, 2000 professional, XP 等。98隻能安裝個人版或桌面引擎,但桌面引擎得資料庫不能超過2G)。
4. 投入運行時使用企業版,標准版或桌面引擎,(個人版,開發版分別用於對應標准版,企業版的開發)。
關於標准版和企業版兩者之間的差別,主要體現在:
1.是否支持MSCS群集
2.是否支持全文索引
3.是否支持分布式分區視圖
4.是否支持日誌傳送
5.是否支持索引視圖的CPU利用
企業版提供最高的可用性,穩定性和並發 個人版和MSDE中硬性填入某些代碼使得並發用戶在五個以上之後性能大打折扣。
標准版:
資料庫引擎功能缺少故障轉移群集(最多四個節點)、支持SQL Server企業管理器中的故障轉移、日誌傳送、並行DBCC、並行CREATE INDEX、增強的預讀和掃描、索引視圖、聯合資料庫伺服器、支持系統區域網路 (SAN)、支持語言設置的圖形實用工具,對於AnalysisServices缺少用戶定義OLAP分區、分區向導、鏈接OLAP多維數據集、ROLAP 維度支持、支持HTTP Internet、計算單元、回寫到維度、支持超大型維度、實時 OLAP、分布式分區多維數據集,win2000下最大隻支持4個CPU的SMP,NT下最大隻支持8個CPU(企業版)
買10個授權是不可以上20個用戶的(一般是限制並發用戶數,連接數決定於OS)
企業版:
作為生產資料庫伺服器使用。支持SQL SERVER 2000中的所有可用功能,並根據支持最大的Web站點和企業聯機事務處理(OLTP及數據倉庫系統所需要的性能水平進行伸縮。