1. Dismiss Если это Ваш первый визит, ознакомьтесь с правилами форума: FAQ.
46 11

Очистка памяти MS SQL

  • #1
    Аватар пользователя alex
    Зарегистрированный
    Дата рег. 15.09.2016
    Сообщении 90
    Репутация4

    Подскажите, можно ли как то очистить не рестартуя службу MS SQL, из памяти закешированные данные? А вообще возможно очищать данные только для выбранной БД?

    У меня много маленьких БД на сервере и одна большая, соот-но она вся в памяти и в результате все маленькие долго грузятся. Если бы можно было как то запретить может для нее использовать Ram что ли, посоветуйте что нибудь пожалуйста

  • #2
    Аватар пользователя mr.anderson
    Создатель
    Дата рег. 23.06.2016
    Сообщении 200
    Репутация9

    Тут можно пойти 2 путями:

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

    2. Это программно:

    T-SQL:

     

    DBCC FREESYSTEMCACHE ('ALL', default);  
    У меня гдето был скрипт позволяющий показать, какая из БД сколько на себя памяти взяла, сейчас поищу

    Программирую все что можно, во всяком случае стараюсь )

  • #3
    Аватар пользователя mr.anderson
    Создатель
    Дата рег. 23.06.2016
    Сообщении 200
    Репутация9
    T-SQL:
     
    SELECT count(*)AS cached_pages_count,(count(*) * 8) as KB 
        ,CASE database_id 
            WHEN 32767 THEN 'ResourceDb' 
            ELSE db_name(database_id) 
            END AS Database_name 
    FROM sys.dm_os_buffer_descriptors 
    GROUP BY db_name(database_id) ,database_id 
    ORDER BY cached_pages_count DESC;
    В таком виде, только отсортируй как будет удобней для просмотра

    Программирую все что можно, во всяком случае стараюсь )

  • #4
    Аватар пользователя mrweep
    Модератор
    Дата рег. 05.09.2016
    Сообщении 57
    Репутация4

    Я все проверил, отсортировал конечно как надо. Попробовал так очистить и нифига

  • #5
    Аватар пользователя mrweep
    Модератор
    Дата рег. 05.09.2016
    Сообщении 57
    Репутация4

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

    Сейчас попробую

  • #6
    Аватар пользователя mr.anderson
    Создатель
    Дата рег. 23.06.2016
    Сообщении 200
    Репутация9

    Ок, давай. 

    Знаешь еще можно попробовать у этой БД установить значение AutoClose = true.

    С версии после 2014 обещают убрать этот параметр, что бы сам сиквел уже контролил все, но если у тебя версии с этим параметром, укажи для своей огромной БД, что бы закрытие было, судя по мануалу и описанию MSDN, ресурсы занимаемые скажем для выборки должны после dispose или close, на самом сервере высвобождаться, тогда для твоих маленьких БД будет место в памяти.

    Программирую все что можно, во всяком случае стараюсь )

  • #7
    Аватар пользователя mrweep
    Модератор
    Дата рег. 05.09.2016
    Сообщении 57
    Репутация4

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

    Теперь установив значение 2\3 от того что было, память начинает набирать снова, ну хоть народ не жалуется.

     

    Ок, давай. 

    Знаешь еще можно попробовать у этой БД установить значение AutoClose = true.

    С версии после 2014 обещают убрать этот параметр, что бы сам сиквел уже контролил все, но если у тебя версии с этим параметром, укажи для своей огромной БД, что бы закрытие было, судя по мануалу и описанию MSDN, ресурсы занимаемые скажем для выборки должны после dispose или close, на самом сервере высвобождаться, тогда для твоих маленьких БД будет место в памяти.

    Сейчас попробуем и будем наблюдать 
  • #8
    Аватар пользователя Kolyayan
    Зарегистрированный
    Дата рег. 22.10.2016
    Сообщении 2
    Репутация0,1

    А есть более подробная инструкция?

  • #9
    Аватар пользователя mr.anderson
    Создатель
    Дата рег. 23.06.2016
    Сообщении 200
    Репутация9

    боюсь что MS SQL имеет только текущий параметр auto close, где то был скрин обратите внимание на него и с свойствах БД укижите параметр True.

    Или Вас интересует какая то другая инструкция?

    Программирую все что можно, во всяком случае стараюсь )

  • #10
    Аватар пользователя mr.anderson
    Создатель
    Дата рег. 23.06.2016
    Сообщении 200
    Репутация9

    В таком варианте у Вас должно стоять True если хотите освобждать ресуры

    Программирую все что можно, во всяком случае стараюсь )

  • Задайте свои вопрос или создайте свою тему на форуме!
    Для этого войдите или зарегистрируйтесь.
    Регистрация на форуме не заимет больше 2 минут.
    Смотрите также:
    Успешно сохранено!
    Закрыть окно
    Загрузка Пожалуйста, подождите!
    Тут будут отображаться Ваши сообщения
    Закрыть окно
    Введите Ваше сообщение:
    Яндекс.Метрика