Фон
Я переношу 160 Гбітну базу даних з MSSQL 2008 (стандартно) на сервер Win 2008 з 48 Гб оперативної пам’яті на новий сервер під керуванням MSSQL 2012 (64-розрядне веб-видання) на Win 2012 з 64 ГБ оперативної пам’яті. Старий сервер працює і перебуває під навантаженням; новий сервер не виробляється. Новий сервер має 8 темпдб-файлів (по 4 ГБ кожен).
Проблема
Під час тестування на новому сервері я бачу, що кроки в численних запитах викликають сповіщення про згадування про те, що "оператор використовував tempdb для передачі даних під час виконання". Мені вдалося уникнути сортування, переписавши деякі запити, але це не дуже вирішує проблему. Ті самі запити на старому сервері не викликають розливів. Я читав, що розливи трапляються, коли MSSQL не може завершити операцію в пам'яті і має пролити / сторінку в tempdb. Чи варто турбуватися про розливи?
Приклади
Я запустив sp_updatestats в базі даних, тому статистика повинна бути актуальною, але ви зауважте, що між розрахунковою та фактичною кількістю рядків є деякі розбіжності.
Турбота про пам’ять
Я встановив максимальну настройку пам'яті для MSSQL 58 із 64 Гб. В даний час MSSQL споживає близько 35 Гб цієї пам'яті, але має робочий набір всього 682 Мб. Старий сервер (хоча у виробництві, обробці навантаження) має 44 Гб пам'яті, відданої MSSQL, з яких 43,5 Гб знаходиться у своєму робочому наборі.
Я не знаю, чи розливи можуть бути пов’язані з налаштуванням пам’яті - хтось має ідеї? Наразі MSSQL має акри оперативної пам’яті для запасного, тому чому він розливається в tempdb для якихось різновидів і хеш-відповідностей?