|
Можно ли запретить вытеснять из кэша определенную таблицу?
|
|||
---|---|---|---|
#18+
Смотрю Page life expectancy когда падает, запросы к этой таблице критично тормозят. Очевидно, запросы тормозят не только к этой таблице при уменьшении PLE. Если у вас кто-то гоняет мега-отчеты "от забора и до вечера" (судя по "когда падает", это происходит не всегда), то разрешите выполнение отчетов вне часов рабочей нагрузки или перенесите отчеты на другой сервер, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 14:55 |
|
Можно ли запретить вытеснять из кэша определенную таблицу?
|
|||
---|---|---|---|
#18+
aleks222 ssms пропущено... Доступ у таблице по некластерному индексу. count(*) точн поможет? Он же по идее втянет в буфер клстерный индекс. Я ж не видал вашего "запроса". Ну заколбасьте select count(*) from Table where cast(field1 as nvarchar) = '' а еще лучше, просто "типичный запрос". Ого. как хитро. Так и сделал, благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 15:21 |
|
Можно ли запретить вытеснять из кэша определенную таблицу?
|
|||
---|---|---|---|
#18+
msLex ssms пропущено... Доступ у таблице по некластерному индексу. count(*) точн поможет? Он же по идее втянет в буфер клстерный индекс. добавьте хинт with (index( index_name )) И это добавил. Спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 15:21 |
|
Можно ли запретить вытеснять из кэша определенную таблицу?
|
|||
---|---|---|---|
#18+
1. По исходному вопросу. Конечно можно сделать и так, как вы задумали (постоянно начитывать и держать в буфере). Может это даже и правильно для какой-то специфической задачи (вам нужны микросекунды отклика?). Из описания этого не видно. Для обычной же ситуации это какой-то чудовищный костыль. Затем. Самый грамотный путь реализации этого пути - делать таблицу in memory. Однако есть путь более правильный (для обычных ситуаций): 1.1 Собрать коллекцию основных запросов к целевой таблице, проанализировать их, выделить группы, для них создать целевые индексы и матвьюхи (например с выборкой по фильтрующему индексу). После запросы переписать на обращение к матвьюхам. 1.2 Собссно решать проблему в её источнике. Т.е. в том, что описано вами ниже: ssms Объясняю ситуацию: есть маленькая но очень нагруженная таблица, которую нельзя выгружать. а есть несколько огромных таблиц, которые втягиваются в буфер и полностью его занимают, при этом они используются не для оперативной работы, а различных разовых отчетов и их можно выгружать спокойно. т.е. 1.2 -> 2 2. Если вы как компания не доросли до DWH/BI (что странно, если вы считаете таблицу 8 Гиг маленькой), то решить такое можно и в рамках обычной базы несколькими путями: 2.1 Хранимые отчёты. Заранее сформированные по расписанию и хранимые готовые данные отчётов по самым востребованным параметрам сбора отчётов. И их нужно только на форму отчёта подтянуть. 2.2 Хранимые предрассчитанные по расписанию агрегатные данные для отчётов. Такой минисрез по псевдокубу. 2.3 Оптимизация имеющихся запросов как они есть (наверняка ведь есть что оптимизировать). 2.4 Оптимизация обращения к таблицам в целом. Вьюхи, матвьюхи, индексы. 2.5 Изменение структуры данных под задачу. Например можно не считать обороты по поставщику за период каждый раз налету, а иметь такое поле в специальной таблице. Куда вносить изменения при каждой транзакции по поставщику. Там же остаток по счёту, переходящий остаток по счёту клиента и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 14:48 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1684691]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
13ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 255ms |
0 / 0 |