首先應(yīng)該確定是誰(shuí)慢的,往往是程序處理方面的問(wèn)題而不是數(shù)據(jù)庫(kù)的問(wèn)題。
成都服務(wù)器托管,創(chuàng)新互聯(lián)提供包括服務(wù)器租用、成都多線服務(wù)器托管、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、域名與空間等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:18980820575
程序方面應(yīng)該盡可能的減少數(shù)據(jù)查詢返回的內(nèi)容,減少IO壓力,磁盤IO和網(wǎng)絡(luò)IO是非常非常慢的。比如可以查詢返回ID,然后再根據(jù)ID一條一條的查詢具體內(nèi)容,看似慢了,在數(shù)據(jù)量大的時(shí)候快很多
對(duì)于數(shù)據(jù)可以參照下面幾點(diǎn)
1、優(yōu)化SQL語(yǔ)句,SQL語(yǔ)句對(duì)查詢速度影響最大的
2、對(duì)于經(jīng)常查詢的字段作索引。但是這樣會(huì)增加修改時(shí)的壓力
4、優(yōu)化SQLServer,比如給其分配固定的內(nèi)存,預(yù)先分配查詢內(nèi)存,調(diào)整CPU使用率等。SQL Server 可以占用幾乎所有Windows的內(nèi)存,但是申請(qǐng)內(nèi)存開銷很大。因此可以設(shè)定其使用固定大小內(nèi)存,比如啟動(dòng)就分配1G以上內(nèi)存。
5、優(yōu)化硬件資源,比如使用更高的服務(wù)器或者硬盤,獨(dú)立安排數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和索引文件,將數(shù)據(jù)文件分布于不同的物理硬盤上等等
6、考慮使用分布數(shù)據(jù)庫(kù)或者對(duì)大表進(jìn)行拆分
可能是因?yàn)橄到y(tǒng)的臨時(shí)數(shù)據(jù)庫(kù)tempdb滿了,或者是被阻塞之類的
重新啟動(dòng)一下數(shù)據(jù)庫(kù)(在控制面板的服務(wù)里面重新啟動(dòng)sqlserver),應(yīng)該就好了。sqlserver每次啟動(dòng)都會(huì)重新建立tempdb表。
慢的三個(gè)原因,IOPS,CPU,內(nèi)存,鎖。
數(shù)據(jù)庫(kù)默認(rèn)是占滿內(nèi)存做緩存的,如果你有2個(gè)不同的數(shù)據(jù)庫(kù),內(nèi)存不分配好,就出現(xiàn)爭(zhēng)用內(nèi)存的情況。
CPU一般建議80%左右,索引、大邏輯查詢,count等統(tǒng)計(jì)信息都是走CPU,CPU高肯定慢。
IOPS,就是寫入速度,如果經(jīng)常批量寫數(shù)據(jù),批量查數(shù)據(jù),或者直接全部數(shù)據(jù)讀取后給前端處理,IOPS不足就會(huì)影響數(shù)據(jù)吞吐形成等待。
鎖,也就是事務(wù),大量事務(wù)會(huì)出現(xiàn)槍鎖情況,這個(gè)情況也會(huì)等待,甚至死鎖。
數(shù)據(jù)庫(kù)最主要的就是數(shù)據(jù)庫(kù)設(shè)計(jì)冗余,還是sql語(yǔ)句之類的,還有就是用存儲(chǔ)過(guò)程比一般的sql語(yǔ)句快等到;其次就是編程代碼的問(wèn)題,例如if
else
if
else
if
else這個(gè)判斷的,如果用switch的話就會(huì)快很多