當前位置:首頁 » 編程語言 » sqlserver2008調優
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver2008調優

發布時間: 2023-05-14 19:10:00

1. 怎麼配置sql Server 2008伺服器

SQl
Server
配置管理器(簡稱為配置管理器)包含了SQL
Server
2008服務、SQL
Server
2008網路配置和SQL
Native
Client配置3個工具,供資料庫管理人員做伺服器啟動停止與監控、伺服器端支持的網路協議配置、用戶訪問SQLServer
的網路相關設置等工作。
一、配置服務
1、SQL
Server
配置附案例七可以通過開始菜單欄中的【SQL
Server
2配置管理器】打開,或者通過在命令提示下輸入sqlservermanager.msc命令來打開。
2、首先打開SQL
Server
配置管理器,查看列出的與SQL
Server
2008相關的服務,選擇服務名並右鍵單擊彈出的快捷菜單中選擇【屬性】命令進行配置。在右鍵單擊SQL
Server(MSSQLSERVER)彈出的【SQL
Server(MSSQLSERVER屬性)】對話框。在【登錄】選項卡中設置服務的登錄身份,是使用本地系統賬戶還是指定的賬戶。
3、卻換到【服務】選項卡可以設置SQLServer
(MSSQLSERVER)服務的啟動模式,可以選項有「自動」、「手動」、「禁用」,用戶可以根據需要進行更改。
二、網路配置
1、SQL
Server
2008能使用多種協議,包括Shared
Memory、Named
Pipes、TCP/IP和VIA.所有這些協議都有獨立的伺服器和客戶端配置。通過SQL
Server網路配置可以為每一個伺服器實例獨立地設置網路配置。
2、在【SQL
Server配置管理器】窗口中,單擊左側的【SQL
Server
網路配置】節點,在窗口右側顯示出所有SQL
Server
伺服器中所使用的協議,右鍵單擊協議名稱,在彈出的快捷菜單中選擇【屬性】菜單項,在彈出來的對話框中進行設置啟用或者禁用操作,設置Shared
Memory協議的對話框,窗口右側所列個協議的作用如下。
3、Shared
Memory協議:Shared
Memory協議僅用於本地連接,如果該協議被啟用,任何本地客戶都可以使用此協議連接伺服器。如果不希望本地客戶使用Shared
Shared
Memory協議,則可以禁用。
4、Name
Pipes協議:Name
Pipes協議主要用於Windows
2008以前版本的操作系統的本地連接以及遠程連接。
5、TCP/IP協議:TCP/IP協議是通過本地或遠程連接到SQL
Server的首選協議。使用TCP/IP協議時,SQL
SERVER在指定的TCP埠和IP地址偵聽已響應它的請求。
6、VIA協議:如果同一計算機上安裝有兩個或多個SQL
Server實例,則VIA連接可能會不明確。VIA協議啟用後,將嘗試使用TCP/IP設置,並偵聽埠0:1433。對於不允許配置埠的VIA驅動程序,兩個SQL
Server實例均將偵聽同一埠。
三、本地客戶端協議配置
1、通過SQL
Native
Client(本地客戶端協議)配置可以啟用或禁用客戶端應用程序使用的協議。查看客戶端協議配置情況的方法是,在對話框中展開【SQL
Native
Client配置】節點,在進入的信息窗格中顯示了協議的名稱以及客戶端嘗試連接到伺服器是嘗試使用的協議的順序,用戶還可以查看協議是否以啟用或以禁用並獲得有關協議文件的詳細信息。
2、在默認的情況下
Share
Memory協議總是首選的本地連接協議。要改變協議順序可右鍵單擊協議,在彈出來的快捷菜單中選擇【順序】命令,在彈出來的【客戶協議屬性】對話框中進行設置,從【啟動的協議】列表中單擊選擇一個協議,然後通過右側的兩個按鈕來調整協議向上或向下移動。

2. SQL Server存儲過程的編寫和優化措施


在資料庫的開發過程中,經常會遇到復雜的業務邏輯和對資料庫的操作,這個時候就會用SP來封裝資料庫操作。如果項目的SP較多,書寫又沒有一定的規范,將會影響以後的系統維護困難和大SP邏輯的難以理解,另外如果資料庫的數據量大或者項目對SP的性能要求很,就會遇到優化的問題,否則速度有可能很慢,經過親身經驗,一個經過優化過的SP要比一個性能差的SP的效率甚至高幾百倍。
詳細內容:
1、開發人員如果用到其他庫的Table或View,務必在當前庫中建立View來實現跨如昌庫操作,最好不要直接使用「databse.dbo.table_name」,因為sp_depends不能顯示出該SP所使用的跨庫table或view,不方便校驗。
2、開發人員在提交SP前,必須已經使用set showplan on分析過查詢計劃,做過自身的查詢優化檢查。
3、高程序運行效率,優化應用程序,在SP編寫過程中應該注意以下幾點:
(a)SQL的使用規范:
i.盡量避免大事務操作,慎用holdlock子句,提高系統並發能力。
ii.盡量避免反復訪問同一張或幾張表,尤其是數據量較大的表,可以考慮先根據條件提取數據到臨時表中,然後再做連接。
iii.盡量避免使用游標,因為游標的效率較差,如果游標操作的數據超過1萬行,那麼就應該改寫;如果使用了游標,就要盡量避免在游標循環中再進行表連接的操作。
iv.注意where字句寫法,必須考慮語句順序,應該根據索引順序、范圍大小來確定條件子句的前後順序,盡可能的讓欄位順序與索引順序相一致,范圍從大到小。
v.不要在where子句中的「=」左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引。
vi.盡量使用exists代替select count(1)來判斷是否存在記錄,count函數只有在統計表中所有行數時使用,而且count(1)比count(*)更有效率。
vii.盡量使用「=」,不要使用「」。
viii.注意一些or子句和union子句之間的替換
ix.注意表之間連接的數據類型,避免不同類型數據之間的連接。
x.注意存儲過程中參數和數據類型的關系。
xi.注意insert、update操作的數據量,防止與其他應用沖突。如果數據量超過200個數據頁面(400k),那麼系統將會進行鎖升級,頁級鎖會升級成表級鎖。
(b)索引的使用規范:
i.索引的創建要與應用結合考慮,建議大的OLTP表不要超過6個索引。
ii.盡可能的使用索引欄位作為查詢條件,尤其是聚簇索引,必要時可以通過index index_name來強制指定索引
iii.避免對大表查詢時進行table scan,必要時考慮新建索引。
iv.在使用索引欄位作為條件時,如果該索引是聯合索引,那麼必須使用到該索引中的第一個欄位作為條件時才能保證系統使用該索引,否則該索引將不會被使用。
v.要注意索引的維護,周期性重建索引,重新編譯存儲過程。
(c)tempdb的使用規范:
i.盡量避免使用distinct、order by、group by、having、join、cumpute,因為這些語句會加重tempdb的負擔。
ii.避免頻繁創建和刪除臨時改畝表,減少系統表資源的消耗。
iii.在新建臨時表時,如果一次性插入數據量很大,那麼可以使用select into代替create table,避免log,提高速度;如果數據量不大,為了緩和系統表的資源,建議先create table,然後insert。
iv.如果臨時表的數據量較大,需要建立索引,那麼應該將創建臨時表和建立索引的過程放在單獨一個子存儲過程中,這樣才能保證系統能夠很好的使用到該核橡森臨時表的索引。
v.如果使用到了臨時表,在存儲過程的最後務必將所有的臨時表顯式刪除,先truncate table,然後drop table,這樣可以避免系統表的較長時間鎖定。
vi.慎用大的臨時表與其他大表的連接查詢和修改,減低系統表負擔,因為這種操作會在一條語句中多次使用tempdb的系統表。
(d)合理的演算法使用:
根據上面已提到的SQL優化技術和ASE Tuning手冊中的SQL優化內容,結合實際應用,採用多種演算法進行比較,以獲得消耗資源最少、效率最高的方法。具體可用ASE調優命令:set statistics io on, set statistics time on , set showplan on 等。

3. 如何提高SQL Server大數據條件下的查詢速度

1.關於索引優化
建索引的選擇必須結合SQL查詢、修改、刪除語句的需要,一般的說法是在WHERE里經常出現的欄位建索引。如果在WHERE經常是幾個欄位一起出現而且是用AND連接的,那就應該建這幾個欄位一起的聯合索引,而且次序也需要考慮,一般是最常出現的放前面,重復率低的放前面。
SQL
Server提供了一種簡化並自動維護資料庫的工具。這個稱之為資料庫維護計劃向導(Database
Maintenance
Plan
Wizard
,DMPW)的工具也包括了對索引的優化。如果你運行這個向導,你會看到關於資料庫中關於索引的統計量,這些統計量作為日誌工作並定時更新,這樣就減輕了手工重建索引或者DBCC
INDEXDEFRAG所帶來的工作量。如果你不想自動定期刷新索引統計量,你還可以在DMPW中選擇重新組織數據和數據頁,這將停止舊有索引並按特定的填充因子重建索引。
2.
改善硬體(雙CPU,Raid
5,增加內存)
tempdb這個臨時資料庫,它對性能的影響較大。tempdb和其他資料庫一樣可以增大,可以縮小。當數據文件需要增長的時候,通常不能保持剩餘部分的連續性。這時文件就會產生碎片,這種碎片會造成性能下降。這種碎片屬於外來性碎片。要阻止在tempdb中產生外來性碎片,必須保證有足夠的硬碟空間。一般將tempdb的容量放到平均使用容量。而你也應該允許tempdb自動增長,比如你有個一個超大的join操作,它建立了一個超過tempdb容量的時候,該查詢將失敗。你還要設置一個合理的單位增長量。因為如果你設得太小,將會產生許多外來性碎片,反而會佔用更多資源。sqlserver調優最有效的做法之一,就是把爭奪資源的操作獨立出去。tempdb就是一個需要獨立出去的部分而tempdb和其他系統庫一樣是公用的,是存取最可能頻繁的庫,所有處理臨時表、子查詢、GROUP
BY、排序、DISTINCT、連接等等。它最適合放到一個具有快速讀寫能力的設備上。比如RAID0卷或RAID0+1卷上。
查詢語句一定要使用存儲過程;
3、查詢盡量使用TOP子句
4.將表按一定的約束分成子表,(如按分類)創建約束,在用Like
時,先用分類
and
like
,
應該可能解決問題.
而且效果立稈見影!(你要確定SQL會認識你建的分區視圖).我一個表有上百萬的記錄(700兆),用分區視圖後,查詢速度基本跟10萬行一樣.
如果還是太慢,還可以考濾分布式分區視圖!這總可以解決問題了吧!
關鍵在於你能否把大表按某種約束分解成子表.

4. Microsoft SQL Server 2008 曾經寫過的存儲過程, 突然查詢間都變慢了.之前很快的.

隨著數據的增長和表結構的穗態不斷變數談化,統計信息可能過時,從而使查詢優化器做出
不正確薯族碰的判斷,可以考慮rebuilt一下索引
忘記說了,索引也會在數據的變動下產生索引碎片,嚴重時嚴重影響效率
可以先查看一下索引碎片情況,然後再決定是否重建還是重組

5. sql server 2008 怎樣設置內存

在安裝有SQLServer資料庫的計算機上,我們在使用資料庫的過程中,有時候會在任務管理器里發現sqlservr.exe這個進程的內存和CPU佔用率較高。

接下來我們來看一下,如何解決上面這個問題,需要設置SQLServer資料庫的內存配置。登錄資料庫,這里使用的是SQLServer2008,右鍵點擊最上方的伺服器名,在彈出的菜單中,點擊【屬性】

打開伺服器屬性窗口。默認顯示的是第一項【常規】內容,點擊第二項【內存】進行內存配置。

點擊【內存】後,打開伺服器內存選項配置界面。這里的【使用AWE分配內存】可以對內存進行擴展支持,我們要做的是更改下方的最大伺服器內存。這個數值根據自己伺服器內存大小來做適當設置。

個人建議設置本機內存的一半或稍微高一點,如機器內存為2G,那麼我們這里填寫1000。需要注意的是內存設置調小以後,在資料庫執行較復雜SQL語句的時候,可能會比較慢,出現這種情況,我們再適當上調最大內存配置大小。

6. ms server2008 sql怎樣給資料庫調優

該加索猛滑引的加索引
表設計的也要優枝友臘化 程序開發的也要優化
具體問題具體分析 其實我是來做告迅任務的

7. SQL Server調優系列玩轉篇(如何利用查詢提

第一個模塊注重基礎內容的掌握,共分7篇文章完成,內容涵蓋一系列基礎運算演算法,詳細分析了如何查看執行計劃、掌握執行計劃優化點,並一一列舉了日常我們平常所寫的T-SQL語句所會應用的運算符。我相信你平常所寫的T-SQL語句在這幾篇文章中都能找到相應的分敬皮解運算符。
第二個模塊注重SQL Server執行T-SQL語句的時候一些內幕解析,共分為5篇文章完成,其中包括:查詢優化器的運行方式、運行時幾個優化指標值檢測,統計信息、利用索引等一系列內緩耐容。通過這塊內容讓我們了解SQL Server為我們所寫的T-SQL語亮哪差句如何進行優化及運行的。

8. SQL Server2008和SQL Server2008R2的區別,高手速進

最大的,一般人可以理解的區別可能就是,R2能支持安裝的CPU數目超過64個的伺服器(冒似一般人沒地方派悔信找這種伺服器),最大CPU支持為256個。其它的區別,一般人都鬧不懂,也用不著,包括普通的程序開發者。

----------------------------------------------------------------------------------

詳細的兩者的差別:
1、提供對硬體資源進行深入監控的儀表、報表之類的,可以幫助用戶調優SQL Server,提高硬體資源的發塵輪揮和保證系統的健康運行。
2、對超過64個內核CPU的支持。在SQL 2008中最多隻支持64個CPU核,現在sql server 2008r2中可以支持256個核了!
3、在BI上進行了加強,新的「data mash up」功能實現了數據的收集、集成,數據集成工作變得更強大更容易,提供了Excel 2010的插件用於在Excel中進行數據分析;報表的設計和展示也進行了增強,變得更易上手使用。
4、對地理空間數據類型進行了增強,支持地理空間可視化。
5、SSMS得到了進一步的增強,以提供更多的功能、策略、報表等來幫助用戶管理前備資料庫。

9. 如何優化Windows OS使SQL Server性能最優化

怎樣查出SQLServer的性能瓶頸QLServer性能監控這套性能優化的清單將至少准科學的幫助你找出你的SQLServer任何明顯的性能問題。說是這樣說,SQLServer的性能調優仍然是很困難的。我試圖用這套清單去找出「容易」的sqlserver性能問題,困難的留待稍後。我這樣做是因為很容易將容易和困難的的性能調優問題搞混。通過列出一個「容易」的性能調優范圍,就很容易的將這些問題解決,一旦解決了這些容易的問題,那麼你就能集中去解決更困難的問題。使用這個SQLServer性能調優清單的一個好處是,它將不僅僅告訴你目前最容易解決的性能問題是什麼,而且還幫助你正確的去解決。在某種程度上,你可以選擇不同的順序進行。換句話說,你可以故意做出特殊的決定而不是按照清單通常的順序進行。某種意義上說你是對的,不是所有的性能調優建議都適合所有的情形。另外,你的決定是基於你的資源限制,例如沒有足夠的錢去買滿足負荷的硬體。如果真是那樣的話,你就別無選擇了。還有,你的決定可能基於一些政治原因,那是你不得不作出的改變。不管怎樣,你需要知道你能做什麼,使用這個性能調優清單找出你能改變的范圍並做出相應的改變提升你的SQLServer的性能。一般來說,你將在你的每一個SQL伺服器上執行這個清單。如果遇到清單中的一些問題,這會花掉你一些時間。我建議你從目前性能問題最多的的伺服器開始,然後當你有時間的時候按照自己的思路去解決其他伺服器。一旦你完成了,可仍然有很多事情要去做。記住,這些只是一些容易的。一旦你完成了這些容易的,接下來你需要花時間去解決更困難問題。這個是另一篇文章要解決的問題了。怎樣進行你的SQLServer性能調優呢?為了使其變得容易,我把它們分成了以下幾個部分:?使用性能監視器找出硬體瓶頸?SQLServer硬體性能監控列表?操作系統性能監控列表?SQLServer2000配置性能監控列表?資料庫配置設置性能監控列表?索引性能監控列表?應用程序和T-SQL性能監控列表?SQLServer資料庫作業性能監控列表?使用Profiler找出低效的查詢?怎樣最好的實現SQLServer性能監控管理你的SQLServe性能的最好方法是首先回顧上面每一部分的內容,把它們列印出來。然後完成每一部分的內容,寫下你收集到的結果。你也可以按照你喜歡的順序進行。上面的步驟僅僅列出了我執行的順序,因為那樣通常能達到一個比較好的效果。性能監控列表計數器名稱均值最小值最大值Memory:Pages/secMemory:AvailableBytesPhysicalDisk:%DisktimePhysicalDisk:Avg.DiskQueueLengthProcessor:%ProcessorTimeSystem:::UserConnections在上表輸入你的結果.使用性能監視器找出SQLServer硬體瓶頸開始SQLServer性能調優的最佳地方就是從性能監視器(系統監視器)開始。通過一個24小時的周期對一些關鍵的計數器進行監控,你將對你SQLServer伺服器的硬體瓶頸了如指掌。一般來說,使用性能監視器去創建一個一些關鍵的計數器的24小時周期的監控日誌。當你決定創建這個日誌的時候,你需要選擇一個典型的24小時的周期,例如,選擇一個典型的比較忙的日期,而不是周日或節假日。一旦你將這些捕獲的數據形成日誌後,在性能監視器的圖形界面下會顯示計數器的推薦值。你在上表中記下均值、最小值、峰值。做完這些後,用你的結果跟下面的分析比較。通過你的結果和下面的建議值進行比較,你將能快速的找到你的SQLServe正在經歷的潛在的硬體瓶頸。

10. 如何在SQL Server 2008下輕松調試T-SQL語句和存儲過程

今天突然有同事問起,如何在sqlserver中調試存儲過程(我們公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真暈了。
於是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要調試,必須要安裝VS2005專業版或者更高版本。非常不方便。
還好,SQLSERVER 2008中這個很重要而且方便的功能又回來了。
不過,SQLSERVER 2008的調試功能和SQL2000的方法差別很大。SQL2000是在查詢分析器中的對象瀏覽器中選中需要調試的存儲過程,右鍵----調試---輸入參數開始調試。
sqlserver2008中則完擾虛全不同,變成了必須要在SSMS中EXEC [PROCEDURE NAME] @VAR1,@VAR2,然後點綠色三角或者點菜單中的調試---啟動調試。然後點工具欄的最右邊的單步調試或者跳出等。下面的變數窗口和堆棧窗口等可以查看調試中變數等動態變化值。
sqlserver2008調試的要求和條件:如果在引擎所在的電腦或伺服器上調試,則只需要SA或者WINDOWS用戶登陸即可。如果是異地調試,則需要設置防火牆例外,增加SSMS和SQLSERVER.EXE為允許,增加135埠允許通塵迅過。
總之,SQL2008的調試比2000操作起來麻煩多了,要求也多了。剛開派李此始感覺不如2000的好用,也可能是使用2000習慣了。習慣是可怕的,但是微軟是在不斷進步的..