2015-01-15 70 views
0

當在SQL Server表中更新記錄時,數據庫引擎如何物理執行這樣的請求:它是INSERT + DELETE還是UPDATE操作?數據庫引擎更新邏輯

正如我們所知,數據庫和任何語句的性能取決於許多變量。但我想知道一些事情是否可以推廣。

  • 是否有一個閾值(表的大小,查詢長度,#記錄受影響......)之後,數據庫切換到一個方法或其他在UPDATE語句中?

  • 如果有時候SQL Server在物理上執行插入/刪除請求邏輯更新時,是否有系統視圖或度量標準來顯示它?也就是說,如果所有插入的總數都是連續的,更新和刪除數據庫引擎自啓動以來執行的操作,那麼我將能夠在發出單個UPDATE後確定數據庫的行爲。

  • 是否有依據的SQL Server版本(2008年,2012 ......)

非常感謝UPDATE語句的行爲之間有什麼區別。 彼得

+0

這個問題似乎是無關緊要的,因爲它不是按照[幫助]指南中定義的編程。 – 2015-01-15 17:59:44

+0

您可能會在DBA網站上找到對此問題更感興趣的內容。 – Hogan 2015-01-15 18:04:16

回答

-1

更新編輯現有的行。如果是插入/刪除,那麼你會得到重複鍵更新失敗。

插入/更新/刪除也可以離散許可。因此,用戶可以更新記錄,但不能插入或刪除,這也會導致它不能正常工作。

+0

我不相信你可以做出這樣的表述 - 權限的設計與低層功能的實現無關。 – Hogan 2015-01-15 18:05:01

+0

事務日誌也將其記錄爲修改行操作。 – 2015-01-15 18:12:27

0

沒有觸發器的基表上的更新總是物理更新。 SQL Server沒有這樣的門檻。例如,您可以在sys.dm_db_index_usage_stats中查找使用情況統計信息。