SqlServer資料庫記錄數大引起的一系列問題解決

來源:互聯網
上載者:User

這是筆者qq群裡一個同仁問的問題。同時他遇到的問題隨著時間推移也在變化,但是都與資料量大有關。

1. 大資料量下的delete問題

2. 大資料量下的update問題

該同仁說他的資料庫資料記錄比較多,大約幾百萬條記錄的層級。刪除一條記錄10分鐘都不能完成。他很頭痛。問有沒有解決辦法。我想起我寫的文章<<關於大型asp.net應用系統的架構—如何做到高效能高延展性>>一文,我提到過,delete不要即時去做。可以集中來處理。在即時只是給這個記錄做個需要刪除標記(用update語句就可以了)。到晚上系統不忙的時候再來集中處理,來真正刪除記錄。然後這個同仁就按這個辦法去做了。後來告訴我說delete問題解決了,快一些了。雖然我沒有見過他的資料庫是什麼樣子,但是能幫他解決問題,我也很高興。

過了幾個月,他又有新問題了,他說,資料更多了,現在即使給要刪除的記錄做個標記(即一個update語句)也要很長時間,要幾十分鐘。我問了下情況,原來是前面那個問題的的升級版問題。他現在給要刪除的記錄做待刪除標記,用一個有WHERE條件的update語句。找到WHERE條件的記錄,即一個搜尋的過程。現在就是按這個WHERE條件搜尋過程需要很長時間。我問了他的WHERE條件是什麼,還問了他的cluster index是什麼,和non-cluster index是什麼。最後發現他的WHERE條件既不匹配cluster index, 也不匹配non-cluster index。所以即使是一個Update也特別耗時間。於是對他講了如何選cluster index, 比如短的欄位,並且有單向遞增特性。他照我說的方法去做了。然後說千萬層級的記錄,給一個記錄標記需要刪除就快很多了。只要一秒多就完成了。呵呵,我心中又是很高興的。

希望能幫到你!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.