為 SQL Server 新增 RAM 會降低效能

為 SQL Server 新增 RAM 會降低效能

目前設定:

我們有一個非常大的表,其中有一個 bigint pk 和一個 nvarchar(1025) 欄位。唯一的指標就是PK。我們還有另一個表,它是第一個表的 bigint_fk,帶有字串欄位的校驗和。

create table BigStringTable (
  id bigint identity(1,1) not null,
  dataString nvarchar(1025) not null,
  primary key clustered (id));
);

create table BigStringTableHashes(
 id bigint  not null,
  dataStringHash int not null,
      CONSTRAINT [PK_dataStringHash] PRIMARY KEY NONCLUSTERED 
      (
      [claid] dataStringHash
       )
    );

所以你可能會查詢類似的內容:

SELECT datastring FROM BigStringTable AS bst
JOIN BigStringTableHashes AS hashes ON bst.id = hashes.id
WHERE hashes.dataStringHash = checksum(<Whatever String>) AND bst.dataString = '<Whatever String>'

該表是非常大的。

我們在亞馬遜上有一台非常昂貴的伺服器,有 1.9 TB RAM 來運行所有這些。版本:

Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64)   Nov 30 2018 12:57:58   Copyright (C) 2017 Microsoft Corporation  Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2019 Datacenter 10.0 <X64> (Build 17763: ) (Hypervisor) 

然而,如果我們添加超過 900 GB 的 RAM,效能就會突然下降。上面的查詢開始讀取大量資料。我知道當更改最大內存時,它會清除緩存,但它永遠不會恢復,直到我們降低最大內存並重新啟動。

該伺服器上沒有其他內容。

據我所知,查詢計劃是相同的,但很難確認,因為我們不能太頻繁地將其置於這種不良狀態,從而造成客戶中斷。

我不明白的是添加 RAM 如何破壞性能。

答案1

也許嘗試不要對事物運行函數,如果還沒有的話,可以考慮按有用的鍵進行分區。

解釋說了什麼?

希望能有所幫助或激發想法。順便一提:天啊。對於 AWS 來說,這肯定是昂貴的。這是一個瘋狂的內存量。

相關內容