В нашей базе данных SQL Server у нас есть таблица, которая разбита на столбец даты. На каждую дату мы вставили полмиллиона записей. Мы заметили, что производительность запросов была хорошей для дат, которые находятся ближе к начальному диапазону раздела, и постепенно снижалась для каждой даты, продвигающейся вперед.
Вот моя функция разделения
CREATE PARTITION FUNCTION partition_position_monthly (DATE)
AS RANGE RIGHT FOR VALUES ('2019-09-01', '2019-11-01');
Таблица
CREATE TABLE PartitionTest(
ID int IDENTITY(1,1) NOT NULL,
col1 varchar(256) ,
col2 varchar(128) ,
col3 varchar(128) ,
BusinessDate date , -- partition column
) ON partition_scheme_monthly(BusinessDate)
В столбце BusinessDate имеется кластеризованный индекс.
Здесь используется запрос
select top 1000 * from PartitionTest where BusinessDate = ?
Записи ЦП и ввода-вывода для каждой бизнес-даты
BusinessDate = 2019-09-01 Процессорное время = 31 мс Количество сканирований 1, логическое чтение 80 , физическое чтение 0, чтение с опережением 0
BusinessDate = 2019-09-02 время ЦП = 63 мс количество сканирований 1, логические чтения 24905 , физические чтения 0, чтение с опережением 3131
BusinessDate = 2019-09-03 время ЦП = 125 мс количество сканирований 1, логическое чтение 49727 , физическое чтение 0, чтение с опережением 7
BusinessDate = 2019-09-04 процессорное время = 172 мс количество сканирований 1, логические чтения 74551 , физические чтения 0, чтение с опережениемрекламные объявления 7
BusinessDate = 2019-09-05 процессорное время = 234 мс число сканирований 1, логическое чтение 99376 , физическое чтение 0, чтение с опережением 117
Как вы можете видеть, время ЦП и логические чтения постепенно увеличиваются для BusinessDates, которые находятся дальше от начального диапазона раздела.
Это ожидаемое поведение при получении данных из раздела?
Мы планируем разделить месячные данные, и время ответа на запросы для дней ближе к концу месяца выходит за допустимые пределы. Есть ли способ достичь постоянного времени процессора и логических чтений для каждого дня в разделе?
PasteThePlan Link