Добавление оперативной памяти к SQL-серверу снижает производительность

Добавление оперативной памяти к SQL-серверу снижает производительность

Текущая настройка:

У нас есть очень большая таблица, в которой есть поле bigint pk и поле nvarchar(1025). Единственный индекс — это PK. У нас есть еще одна таблица, которая является bigint_fk для первой таблицы с контрольной суммой поля string.

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 ТБ ОЗУ на Amazon, на котором все это работает. Версия:

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 ГБ оперативной памяти, производительность внезапно падает до нуля. И запрос выше начинает считывать огромные объемы данных. Я знаю, что при изменении максимального объема памяти кэш очищается, но он никогда не восстанавливается, пока мы не уменьшим максимальный объем оперативной памяти и не перезагрузимся.

На этом сервере больше ничего нет.

Насколько я могу судить, планы запросов те же самые, но подтвердить это сложно, поскольку мы не можем слишком часто переводить систему в нерабочее состояние, создавая простои для клиентов.

Чего я не понимаю, так это как добавление оперативной памяти ухудшает производительность.

решение1

Попробуйте, пожалуйста, не запускать функцию для чего-либо и рассмотрите возможность разбиения по полезному ключу, если вы еще этого не сделали.

Что говорится в объяснении?

Надеюсь, это поможет или подтолкнет к идеям. Кстати: Боже мой. Это должно быть дорого с AWS. Это безумный объем оперативной памяти.

Связанный контент