none
Потребление оперативной памяти репликацией слияния и SQL RRS feed

  • Вопрос

  • Добрый день.

    После настройки репликации слиянием, у нас значительно увеличилось потребление оперативной памяти. Раньше, когда стояло зеркало, наши 32 гб заполнялись примерно за месяц работы сервера. После того как настроил репликацию слиянием, наши 32гб заполнились буквально за несколько часов. 

    Если посмотреть по всем процессам, то там не будет процесса, который бы показал что он занял всю память оперативную. И также просуммировать если все процессы, тоже не будет 32 гб.

    Куда делась память? Возможно ведь какие то настройки SQL, издателя, распространителя, помогите пожалуйста. 

    Может такой эффект дает тот факт, что у нас на этой базе есть еще 2 репликации транзакциями, одна без фильтрации, другая с фильтрацией.
    • Изменено Сердюков Евгений 7 июня 2012 г. 10:49 добавил про репликации транзакциями
    • Перемещено Dmitry Davydov 6 июля 2012 г. 9:18 (От:SQL Server для администраторов)
    7 июня 2012 г. 10:37

Ответы

  • Я имел ввиду что-то типо таких запросов к SQL Server И дальнейшему анализу результатов. Т.е. расковырять занимаему SQL Server'ом память.

    SELECT  [type],
            memory_node_id,
            single_pages_kb,
            multi_pages_kb,
            virtual_memory_reserved_kb,
            virtual_memory_committed_kb,
            awe_allocated_kb
    FROM    sys.dm_os_memory_clerks
    ORDER BY virtual_memory_reserved_kb DESC ;

    SELECT  [name],
            [type],
            single_pages_kb + multi_pages_kb AS total_kb,
            entries_count
    FROM    sys.dm_os_memory_cache_counters
    ORDER BY total_kb DESC;

    SELECT count(*)*8/1024 AS 'Cached Size (MB)'
        ,CASE database_id
            WHEN 32767 THEN 'ResourceDb'
            ELSE db_name(database_id)
            END AS 'Database'
    FROM sys.dm_os_buffer_descriptors
    GROUP BY db_name(database_id) ,database_id
    ORDER BY 'Cached Size (MB)' DESC;


    http://olontsev.ru/

    10 июня 2012 г. 13:57

Все ответы

  • если вы не лимитируете сиквел, то он в праве отъедать всю память...по принципу, если она больше никому не нужна, то захвачу я её всю...


    http://www.t-sql.ru

    Отвечающий
  • если вы не лимитируете сиквел, то он в праве отъедать всю память...по принципу, если она больше никому не нужна, то захвачу я её всю...


    http://www.t-sql.ru

    Мы не лимитируем сиквел, но и раньше небыло такого. Почему он стал отбирать больше?
  • Мы не лимитируем сиквел, но и раньше небыло такого. Почему он стал отбирать больше?

    Потому, что вы с ним стали активнее работать... http://msdn.microsoft.com/ru-ru/library/ms151791(v=sql.100).aspx

    http://www.t-sql.ru

    8 июня 2012 г. 12:58
    Отвечающий
  • А пробовали посмотреть, чем память внутри SQL Server занята (кэш страниц, планы запросов)? Это может помочь ответить на вопрос, что случилось.


    http://olontsev.ru/


    10 июня 2012 г. 13:28
  • А пробовали посмотреть, чем память занята?


    http://olontsev.ru/

    Пробовал. По процессам вообще не понятно кто ее занимает. Сумма всей выделенной памяти процессам не равна тому что показывает эта вкладка. Как еще можно глянуть?
    10 июня 2012 г. 13:29
  • Я имел ввиду что-то типо таких запросов к SQL Server И дальнейшему анализу результатов. Т.е. расковырять занимаему SQL Server'ом память.

    SELECT  [type],
            memory_node_id,
            single_pages_kb,
            multi_pages_kb,
            virtual_memory_reserved_kb,
            virtual_memory_committed_kb,
            awe_allocated_kb
    FROM    sys.dm_os_memory_clerks
    ORDER BY virtual_memory_reserved_kb DESC ;

    SELECT  [name],
            [type],
            single_pages_kb + multi_pages_kb AS total_kb,
            entries_count
    FROM    sys.dm_os_memory_cache_counters
    ORDER BY total_kb DESC;

    SELECT count(*)*8/1024 AS 'Cached Size (MB)'
        ,CASE database_id
            WHEN 32767 THEN 'ResourceDb'
            ELSE db_name(database_id)
            END AS 'Database'
    FROM sys.dm_os_buffer_descriptors
    GROUP BY db_name(database_id) ,database_id
    ORDER BY 'Cached Size (MB)' DESC;


    http://olontsev.ru/

    10 июня 2012 г. 13:57
  • Я имел ввиду что-то типо таких запросов к SQL Server И дальнейшему анализу результатов. Т.е. расковырять занимаему SQL Server'ом память.

    SELECT  [type],
            memory_node_id,
            single_pages_kb,
            multi_pages_kb,
            virtual_memory_reserved_kb,
            virtual_memory_committed_kb,
            awe_allocated_kb
    FROM    sys.dm_os_memory_clerks
    ORDER BY virtual_memory_reserved_kb DESC ;

    SELECT  [name],
            [type],
            single_pages_kb + multi_pages_kb AS total_kb,
            entries_count
    FROM    sys.dm_os_memory_cache_counters
    ORDER BY total_kb DESC;

    SELECT count(*)*8/1024 AS 'Cached Size (MB)'
        ,CASE database_id
            WHEN 32767 THEN 'ResourceDb'
            ELSE db_name(database_id)
            END AS 'Database'
    FROM sys.dm_os_buffer_descriptors
    GROUP BY db_name(database_id) ,database_id
    ORDER BY 'Cached Size (MB)' DESC;


    http://olontsev.ru/

    Спасибо за скрипт. 

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

    10 июня 2012 г. 14:15