簡體   English   中英

SQL Server插入速度慢

[英]SQL Server insert slow

我有兩個安裝SQL Server 2008的服務器

  • 生產:SCSI磁盤上的RAID 1
  • 測試:IDE磁盤

當我嘗試執行大約35.000次插入的腳本時,在測試服務器上我需要30秒,而不是在生產服務器上超過2分鍾! 有誰知道為什么會出現這種差異? 我的意思是,DB的配置方式相同,生產服務器也有RAID配置,更好的處理器和內存......

謝謝!

服務器上的索引和填充是什么? 您可能需要在頁面中使用更多空間重建索引和/或考慮您確實需要哪些索引。 如果要快速測試,請嘗試ALTER INDEX ALL ON dbname.dbo.tablename REORGANIZE.

還要考慮生產服務器上的用法。 在您的測試中,您(或極少數)可能是唯一一個讀/寫的人。 在進行此插入操作時,請了解數據庫中的其他操作。

如果這兩個都失敗了,請在生產服務器上運行一些監視,看看它是否被其他進程猛烈抨擊。

請注意,RAID 1用於冗余,速度因方案而異。 35k插入可能導致大量隨機寫入開銷,從而降低性能。

你是如何插入這些行的,它們是否包含在SQL事務中? 如果還沒有,那么就知道事務緩存查詢並進行批量磁盤更新,大大提高了速度。

如果是通過SQL腳本文件,請將插入包裝在BEGIN TRANSACTION / END TRANSACTION中。 對於從文件導入這么多記錄可能更好

也許其他一些程序正在生產服務器上運行,這些服務器正在消耗硬盤和處理器等資源。

同樣在生產服務器上,當您在DB上執行操作並且正在執行某些查詢的同時執行腳本時。

有三個(高級別)問題需要考慮:

  1. 服務器上的活動與可用資源的關系:聽起來(根據您的回答判斷)這不是問題
  2. 你的指標配置:再次,它聽起來就像如果開發環境確實在結構上相同,這是不是一個問題(因為它應該是)
  3. 數據量與索引的完整程度

我認為第三點可能是你的問題。 意識到您放置在表中的(非聚集的)索引越多(它們越復雜),數據操作就越慢。 索引(通常)是查詢速度和修改速度之間的折衷。 顯然,這是一種概括,總是需要調整,但總的來說這是正確的。

比較兩個環境中的數據量; 如果生產環境的數量更多(或者你的表格被高度索引),那么這很可能是你的問題。

真的很難說。

首先 - 是的,生產可能有更多的資源,但它們是否可用? 或者當你點擊它時,生產已經接近其他東西的限制? 畢竟,這是生產。

這就像我的第一個想法。

如果您同時在數據庫上進行選擇,請確保使用“with(nolock)”完成

兩台服務器中現有數據的數量是多少?

INSERT的時間將根據表中已有的行數和索引數量而擴展。 如果測試服務器表在INSERT之前包含的行數少於生產服務器,則INSERT將在那里執行得更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM