仕様の新しいサーバーを購入しました:HP ProLiant ML310e Gen8 v2 8 GBシングルメモリ、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シングルメモリ、IntelCeleronデュアルコア1.5GHz、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.
カーソルがSQLServerにとって本当に悪いことは知っていますが、以前のプログラマーがストアドプロシージャに非常に多くのカーソルを残していたため、すべてのカーソルをすぐに通常の更新に切り替えることはできません。
この問題の原因は何でしょうか?私は今この2週間で苦労しています。たくさんの記事を読んでいます。このタイプのサーバーは、古いサーバーと比較して、SELECTコマンドを使用しても約2.8倍遅くなるため、データベースサーバーになるのに適していないと結論付けました。
古いサーバー:Intel Core i3、1TB SATA HDD 7.5K RPM、16GBデュアルメモリ、Windows 7 Ultimate x64、SQL Server 2008Expressx86。
どういうわけか、今はこの新しいサーバーを使わなければなりません。しばらくの間、このカーソルの問題について助けてください。この新しいサーバーは今のところ非常に遅く、1週間のデータを表示しています。これが1ヶ月、数年後にどのように終わったか想像できません。
任意のヘルプをいただければ幸いです。どうもありがとうございました。
ごめんなさい、この質問を更新しないでください。この質問の2か月後にこのケースを解決しました。
何度か試行錯誤した後、パフォーマンスへの最大の影響は、オペレーティングシステムとデータの間で分離されたハードディスクを使用することです。
新しいハードディスクを購入しようとしていますが、ストレージシステムをRAIDからAHCIに変更すると、データ処理のパフォーマンスにかなりの違いが生じるようです。さて、オンラインクラウドサービスの安全のために、メンテナンスジョブで1時間のバックアップを行います。
BIOS設定にいくつかの変更を加えます。これは、このpdfで説明されているパフォーマンスにも多くの影響を与えます http://h20195.www2.hp.com/v2/GetPDF.aspx%2F4AA3-6555ENW.pdf
また、メモリを4x8GBにアップグレードしています
私の古いサーバーと比較すると、今では8倍高速です。
助けてくれてありがとう。