SQL Server資料庫查詢速度慢的原因有很多,常見的有以下幾種:
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷)
2、I/O吞吐量小,形成了瓶頸效應。
3、沒有創建計算列導致查詢不優化。
4、內存不足
5、網路速度慢
6、查詢出的數據量過大(可以採用多次查詢,其他的方法降低數據量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
10、查詢語句不好,沒有優化
●可以通過以下方法來優化查詢 :
1、把數據、日誌、索引放到不同的I/O設備上,增加讀取速度,以前可以將Tempdb應放在RAID0上,SQL2000不在支持。數據量(尺寸)越大,提高I/O越重要。
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
3、升級硬體
4、根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的數據量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,使用位元組數小的列建索引好(參照索引的創建),不要對有限的幾個值的欄位建單一索引如性別欄位。
5、提高網速。
6、擴大伺服器的內存,Windows 2000和SQL server 2000能支持4-8G的內存。
配置虛擬內存:虛擬內存大小應基於計算機上並發運行的服務進行配置。運行 Microsoft SQL Server? 2000時,可考慮將虛擬內存大小設置為計算機中安裝的物理內存的1.5倍。如果另外安裝了全文檢索功能,並打算運行Microsoft搜索服務以便執行全文索引和查詢,可考慮:將虛擬內存大小配置為至少是計算機中安裝的物理內存的3倍。將SQL Server max server memory伺服器配置選項配置為物理內存的1.5倍(虛擬內存大小設置的一半)。
7、增加伺服器CPU個數;但是必須 明白並行處理串列處理更需要資源例如內存。使用並行還是串列程是MsSQL自動評估選擇的。單個任務分解成多個任務,就可以在處理器上運行。例如耽擱查詢 的排序、連接、掃描和GROUP BY字句同時執行,SQL SERVER根據系統的負載情況決定最優的並行等級,復雜的需要消耗大量的CPU的查詢最適合並行處理。但是更新操作UPDATE,INSERT, DELETE還不能並行處理。
8、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查詢時,查詢耗時和欄位值總長度成正比,所以不能用CHAR類型,而是VARCHAR。對於欄位的值很長的建全文索引。
9、DB Server 和APPLication Server 分離;OLTP和OLAP分離
10、分布式分區視圖可用於實現資料庫伺服器聯合體。
聯合體是一組分開管理的伺服器,但它們相互協作分擔系統的處理負荷。這種通過分區數據形成資料庫伺服器聯合體的機制能夠擴大一組伺服器,以支持大型的多層 Web 站點的處理需要。有關更多信息,參見設計聯合資料庫伺服器。(參照SQL幫助文件''分區視圖'')
a、在實現分區視圖之前,必須先水平分區表
b、 在創建成員表後,在每個成員伺服器上定義一個分布式分區視圖,並且每個視圖具有相同的名稱。這樣,引用分布式分區視圖名的查詢可以在任何一個成員伺服器上 運行。系統操作如同每個成員伺服器上都有一個原始表的復本一樣,但其實每個伺服器上只有一個成員表和一個分布式分區視圖。數據的位置對應用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收縮數據和日誌 DBCC SHRINKDB,DBCC SHRINKFILE. 設置自動收縮日誌.對於大的資料庫不要設置資料庫自動增長,它會降低伺服器的性能。
在T-sql的寫法上有很大的講究,下面列出常見的要點:首先,DBMS處理查詢計劃的過程是這樣的:
1、 查詢語句的詞法、語法檢查
2、 將語句提交給DBMS的查詢優化器
3、 優化器做代數優化和存取路徑的優化
4、 由預編譯模塊生成查詢規劃
5、 然後在合適的時間提交給系統處理執行
6、 最後將執行結果返回給用戶。
其次,看一下SQL SERVER的數據存放的結構:一個頁面的大小為8K(8060)位元組,8個頁面為一個盤區,按照B樹存放。
㈡ SQL頻繁的訪問一張資料庫表,如何避免死鎖如何提高性能
事務不能開太多,及時提交,因為事務沒有提交時,其他程序是不能對表進行更新操作,降低了資料庫的性能。涉及到大量數據的插入和更新是建議使用批量更新的方法。查詢提高性能的方法是瞎隱給作為磨磨廳條件的欄位加索引,但是變長的漢字最好不要加索引,游改它不能提高查詢的效率,最好用聯表查詢,減少子查詢。一個表裡的索引不能多於4個,否則插入和更新的速度是很慢的。。。關於資料庫還有很多適用的技巧,在此拋磚引玉啦,呵呵
㈢ 如何解決頻繁訪問sql server
adoconnection1.CommandTimeout = 0命令執行辯旅超時時間(以秒為單位),設置為零說明無慎陸限制adoconnection1.ConnectionTimeout = 0連接資料庫超時時間(以秒為單位),設置為零攜孝凳說明無限制
㈣ sql如何模擬超大訪問量
十大搶手的網站壓力測試工具
㈤ 求助:SQL2005訪問速度慢。
如果不是訪問的本地資料庫,把系統自帶的防火牆關了,再不然我就不知道了,少年,要不重裝系統試試吧
㈥ SQL server如何訪問外網
並且須提供遠程訪問和1433口打開。
如何打開sql server 2005 的1433埠如下:
配置工具->Sql Server Configuration Manager->MSSQLSERVER的協議
看看TCP/IP協議是否啟動,如果啟動,右鍵菜單點"屬性" ,在分頁菜單中選"IP地址",把"IP1"和"IP2"中"TCP埠"為1433,
"已啟用"改為"是"
配置工具->Sql Server Configuration Manager->SQL Native Client 配置->客戶端協議->TCP/IP
選擇TCP/IP右鍵菜單中"屬性",確認"默認埠"是1433,"已啟用"為"是"
SQL Server 2005 遠程連接
配置TCP/IP屬性.
Surface Area Configuration --> Database Engine --> Remote Connections --->Using TCP/IT
SQL Server 外圍應用配置器—服務和連接外圍配置—database englie—遠程連接—啟用(遠程連接的TCP/IP和named pipes)
SQL Server Configuration Manager—SQL2005網路配置—啟用TCP/IP和named pipes
㈦ 怎樣在Win98系統里高速訪問本機SQL資料庫
這個問題嘛!我以前也曾經也遇到仔胡過知粗.不過解決的方法很簡單,只要你把虛擬內存設置念猛攔一下就好了,不過一定要設置到合理的參數.快試試吧.
㈧ 外網訪問sql資料庫
你用的軟體伺服器端應該是基於sql做的。想連接的話只要在網路上通就可以了。有2種情況。
1,如果是固定IP地址就好說了,直接在你的客戶端伺服器名稱那填伺服器的IP地址就可以了。
2,如果是動態的,一般就得用VPN來設置了,或者花生殼。而如果你的伺服器也是內網IP的話,可能就得做一個埠映射。一般路由器裡面都可以設置。
㈨ 怎麼能提高外網讀取SQL SERVER訪問速度。
不可能吧,除非你的操作資料庫都在本地,然後某個時間段同步,這樣的問題是兩地資料庫不同步,總之應該沒辦法。。只能提高對端上傳帶寬來解決。
㈩ SQL SERVER 訪問Sybase速度過慢,怎麼解決
你用這種方式跨資料庫查詢,慢是肯棗春定的。 既然在sybase中都需要幾分鍾,那麼在sqlserver中肯定是慢很多了。因為你的數坦培據量很大。
看看能不能把sybase中的表在sqlserver中建成代理表呢讓岩唯?