之前在做mes的時候,出現過資料庫伺服器cpu衝100%!
好痛苦了一段時間,搞的現場作業回報速度慢,搞得現場老大總是搔嘮我。不過經過我的軟,硬的優化,現在穩定多了。輕鬆多了。回憶那段往事真是苦不堪言。只想對著太陽喊:日
好了,不多說了,現在就把有可能影響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倍
(虛擬記憶體大小設定的一半)
ps:出現這種問題,最好是軟,硬同時下手。兩手都抓,兩手都要硬
Mysql資料庫的慢sql優化步驟
慢sql優化步驟 先檢視慢日誌,獲得具體哪條sql語句是慢sql。再使用explain sql語句,進行對慢sql分析。修改sql語句,或者增加索引。在資料庫視覺化工具中,顯示有關慢日誌的資訊 show variables like quer image.png 主要是檢視這三個欄位的資訊 long...
資料庫慢查詢
使用mysql慢查日誌對有效率問題的sql語句進行優 mysql show variables like slow query log 檢視伺服器慢查詢日啟 mysql set global slow query log on 開啟慢查詢日誌 mysql set global long query ...
資料庫查詢慢
今天寫了個兩個關聯的sql語句,select from a join b on a.relationid b.id where b.otherid 123 a表中的relation跟b表中的id相關聯,當執行時資料庫的執行速度突然便面了,發現這個語句的執行時間特別的長。最開始的時候認為查詢慢是因為b...