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>'

테이블은매우크기가 큰.

우리는 이 모든 것을 실행하는 Amazon에 1.9TB 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) 

그러나 약 900GB 이상의 RAM을 추가하면 성능이 갑자기 중단됩니다. 그리고 위의 쿼리는 엄청난 양의 데이터를 읽기 시작합니다. 최대 메모리를 변경하면 캐시가 지워지지만 최대 RAM을 낮추고 재부팅할 때까지 복구되지 않습니다.

이 서버에는 다른 것이 없습니다.

내가 알 수 있는 한 쿼리 계획은 동일하지만 이 비성능 상태에 너무 자주 놓을 수 없어 고객 중단이 발생하기 때문에 확인하기 어렵습니다.

내가 이해하지 못하는 것은 RAM을 추가하면 성능이 어떻게 저하되는지입니다.

답변1

사물에 대해 함수를 실행하지 않도록 하고, 아직 수행하지 않았다면 유용한 키로 분할하는 것을 고려해 보세요.

설명은 무엇을 말합니까?

도움이 되거나 아이디어를 불러일으키기를 바랍니다. 그런데: 이런 소. AWS에서는 비용이 많이 듭니다. 그것은 엄청난 양의 RAM입니다.

관련 정보