none
Estouro de Memória usando XML RRS feed

  • Pergunta

  • Tenho uma tabela contendo mais de 106 mil linhas contendo uma coluna do tipo XML. Ao ler os campos de cada xml e gravar em tabelas diferentes a memória estourou e não consegui matar o processo. Verificando o gerenciador do windows a tarefa sqlserver estava com quase 2GB.

    Tentei fazer backup, shirink, matar processo e a memória continuou cheia não permitindo nem mesmo instruções select.

    Somente fazendo restart da instancia que a memória limpou.

    Será que existe uma maneira de limpar a memória sem restart?

    Será que o sqlserver não consegue esvaziar automaticamente variaveis temporarias do tipo xml?

    Ats,

    Cleber

    quarta-feira, 4 de maio de 2011 02:09

Respostas

  • Blessed1;

     

    Na verdade sua pergunta não está diretamente relacionada ao XML e sim na forma como o SQL trabalha com a memória.

    Qual a quantidade de memória total no servidor? Qual Winodws você está usando? Tente definir um valor máximo nas configurações do SQL Server, por exemplo, se seu servidor possui 2Gb de memória você precisa deixar uma quantidade para o Sistema Operacional.

    Você pode configurar a quantidade máxima de memória clicando com o botão direito do mouse no nome do seu servidor SQL através do Management Studio, ou usando a sp_configure.

    É importante não deixar que o SQL Server utilize 100% da memória da máquina, pois o Sistema Operacional pode ficar lento e até travar.


    View Ricardo Muramatsu's profile on LinkedIn
    • Marcado como Resposta Richard Juhasz quinta-feira, 12 de maio de 2011 18:54
    quarta-feira, 4 de maio de 2011 12:15
  • Em um caso de falta de recursos( memoria ou cpu ) eh interessante usar o DAC para verificar quais transacoes estao mais consumindo recursos.

    Pelo seu relato, imagino que seu servidor seja 32 bits. O que seria necessario configurar o uso de memoria "extra" caso seu server tivesse mais de 4GB.

    Um comando interessante para verificar uso de memoria no servidor eh DBCC MEMORYSTATUS.

     

    Existem esses comando que limparariam alguns componentes da memoria, os caches:

    Cuidado ao usar esse comandos

    DBCC FREESYSTEMCACHE
    DBCC FREESESSIONCACHE
    DBCC FREEPROCCACHE

    []s


    http://www.diaadiasql.com.br
    • Marcado como Resposta Richard Juhasz quinta-feira, 12 de maio de 2011 18:54
    quinta-feira, 5 de maio de 2011 23:21

Todas as Respostas

  • Blessed1;

     

    Na verdade sua pergunta não está diretamente relacionada ao XML e sim na forma como o SQL trabalha com a memória.

    Qual a quantidade de memória total no servidor? Qual Winodws você está usando? Tente definir um valor máximo nas configurações do SQL Server, por exemplo, se seu servidor possui 2Gb de memória você precisa deixar uma quantidade para o Sistema Operacional.

    Você pode configurar a quantidade máxima de memória clicando com o botão direito do mouse no nome do seu servidor SQL através do Management Studio, ou usando a sp_configure.

    É importante não deixar que o SQL Server utilize 100% da memória da máquina, pois o Sistema Operacional pode ficar lento e até travar.


    View Ricardo Muramatsu's profile on LinkedIn
    • Marcado como Resposta Richard Juhasz quinta-feira, 12 de maio de 2011 18:54
    quarta-feira, 4 de maio de 2011 12:15
  • Blessed1,

    Como esta configurado o uso de memória disponível neste máquina por parte do SQL Server?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 5 de maio de 2011 19:11
    Moderador
  • Em um caso de falta de recursos( memoria ou cpu ) eh interessante usar o DAC para verificar quais transacoes estao mais consumindo recursos.

    Pelo seu relato, imagino que seu servidor seja 32 bits. O que seria necessario configurar o uso de memoria "extra" caso seu server tivesse mais de 4GB.

    Um comando interessante para verificar uso de memoria no servidor eh DBCC MEMORYSTATUS.

     

    Existem esses comando que limparariam alguns componentes da memoria, os caches:

    Cuidado ao usar esse comandos

    DBCC FREESYSTEMCACHE
    DBCC FREESESSIONCACHE
    DBCC FREEPROCCACHE

    []s


    http://www.diaadiasql.com.br
    • Marcado como Resposta Richard Juhasz quinta-feira, 12 de maio de 2011 18:54
    quinta-feira, 5 de maio de 2011 23:21