新伺服器中的游標性能
我買了一台新伺服器,規格:HP ProLiant ML310e Gen8 v2 8 GB Single Memory,Intel Xeon E3-1220v3 3,1 GHz,500 GB SATA 7.5K RPM,Windows Server 2012 R2 x64,SQL Server Standard 2014 x64,RAID 0
與我的筆記本相比:ASUS X200CA 2 GB 單記憶體、Intel Celeron 雙核 1.5 GHz、500 GB SATA 7.5K RPM、Windows 7 Ultimate x64、SQL Server Express 2014 x64、AHCI
我只是比較了這個筆記本,因為與我的舊伺服器相比差異太大(舊伺服器更快)。我用我的新伺服器設置了一些配置,並且從這篇文章SQL Server 2012 比 2008 慢一點
測試:(5 次嘗試)
select top 9000 * from faktur_detail
新伺服器:
CPU time = 20 ms, elapsed time = 756 ms. CPU time = 12 ms, elapsed time = 720 ms. CPU time = 8 ms, elapsed time = 840 ms. CPU time = 14 ms, elapsed time = 689 ms. CPU time = 17 ms, elapsed time = 740 ms.
我的筆記本 :
CPU time = 250 ms, elapsed time = 2403 ms. CPU time = 172 ms, elapsed time = 2541 ms. CPU time = 219 ms, elapsed time = 2848 ms. CPU time = 140 ms, elapsed time = 2426 ms. CPU time = 172 ms, elapsed time = 2410 ms.
我嘗試了更新、插入和其他正常命令,並顯示新伺服器比我的筆記本更快。問題在於游標:
測試:(5 次嘗試)
declare @ketqty varchar (50), @ketqtyjual varchar (50), @ketqtybonus varchar (50), @kd_barang varchar (10), @kd_rec int, @qty numeric, @qtyjual numeric, @qtybonus numeric DECLARE @RPREKAPJUALALL_Cursor CURSOR SET @RPREKAPJUALALL_Cursor = CURSOR SCROLL DYNAMIC FOR select kd_rec, qtyjual , qtyBonus , Qty, kd_barang from RPREKAPJUALALL where NamaKomputer ='serverhp' OPEN @RPREKAPJUALALL_Cursor FETCH NEXT FROM @RPREKAPJUALALL_Cursor INTO @kd_rec, @qtyjual,@qtybonus, @qty, @kd_barang WHILE @@FETCH_STATUS = 0 BEGIN EXEC sp_countsatuandetail @KD_BARANG, @qty , @RESULT = @ketqty OUTPUT EXEC sp_countsatuandetail @KD_BARANG, @qtyjual , @RESULT = @ketqtyjual OUTPUT EXEC sp_countsatuandetail @KD_BARANG, @qtybonus , @RESULT = @ketqtybonus OUTPUT update RPREKAPJUALALL set ketqty =@ketqty , ketqtyjual =@ketqtyjual ,ketqtybonus =@ketqtybonus where NamaKomputer ='serverhp' and kd_rec =@kd_rec FETCH NEXT FROM @RPREKAPJUALALL_Cursor INTO @kd_rec, @qtyjual,@qtybonus, @qty, @kd_barang END CLOSE @RPREKAPJUALALL_Cursor DEALLOCATE @RPREKAPJUALALL_Cursor
新伺服器:
86 seconds. 93 seconds. 85 seconds. 83 seconds. 81 seconds.
我的筆記本 :
16 seconds. 12 seconds. 14 seconds. 18 seconds. 16 seconds.
我知道游標對 SQL Server 來說真的很糟糕,但我不能很快將所有游標切換到正常更新,因為以前的程序員在儲存過程中留下了很多游標。
什麼可能導致了這個問題?我現在已經為此苦苦掙扎了 2 週。我已經閱讀了很多文章。我得出的結論是這種類型的伺服器不適合成為數據庫伺服器,因為與舊伺服器相比,即使使用 SELECT 命令,該伺服器也慢了大約 2.8 倍。
舊伺服器:Intel Core i3、1TB SATA HDD 7.5K RPM、16GB 雙記憶體、Windows 7 Ultimate x64、SQL Server 2008 Express x86。
出於某種原因,我現在必須使用這個新伺服器。請幫我解決這個游標問題一段時間。這個新伺服器現在速度太慢了,甚至顯示一周的數據。我無法想像這在 1 個月、幾年後是如何結束的。
任何幫助將不勝感激。非常感謝。
我很抱歉這麼久沒有更新這個問題。我在這個問題後 2 個月解決了這個案例。
經過幾次試驗和錯誤,我對性能的最大影響是在作業系統和數據之間使用分離的硬碟。
我嘗試購買新硬碟,看起來將儲存系統從 RAID 更改為 AHCI 會在數據處理性能上產生很大差異。好吧,我們在維護作業中進行 1 小時備份,以確保線上雲服務的安全。
我對 BIOS 設置進行了一些更改,這也對該 pdf http://h20195.www2.hp.com/v2/GetPDF.aspx%2F4AA3-6555ENW.pdf中描述的性能產生了許多影響
我還將記憶體升級到 4x8GB
與我的舊伺服器相比,它現在快了 8 倍。
謝謝你的幫助。