none
SQL Internals - Aggregate Transformation e Group By RRS feed

  • Pergunta

  • Boa noite,

    Ao utilizar o componente Aggregate Transformation no SSIS, todas as informações vindas de um data source devem ser carregadas para que seja executada a operação de Group by definida no componente. Fazendo isso envolvendo por exemplo 500 milhôes de linhas no meu caso ocorreu um erro com problema de espaço na memória.

    Porém quando executo a mesma lógica via comando T-SQL não há problemas.

    Alguém saberia explicar o motivo sendo que nas duas plataformas este dado é tratado na memória ?


    sexta-feira, 9 de janeiro de 2015 04:07

Respostas

  • Rafael,

    Ocorre este problema porque no pacote do SSIS, a tarefa processa todos os registros antes de finalizar o processo, alocando os dados processados na memória.

    No outro caso, quando você executa pelo SSMS, o processamento não armazena a execução em buffer, todo o processo executado é escrito em log e (dependendo das configurações de seu editor ou do contexto onde o script T-SQL está sendo executado) pode ocorrer o output direto dos dados. Com isto, a memória é "reciclada" para uso deste processamento ou de outros que sua instância SQL possa estar gerenciando.

    Recomendo que você crie um passo intermediário, alimentando os dados agregados em uma tabela apenas para "swap" de dados (você deve truncar e manipular esta tabela exclusivamente para esta operação). Todo este processo pode ser executado em uma tarefa "Execute SQL" antes das demais ou então em um job separado (agendado antes do processo deste pacote).

    Para maiores informações veja:

    http://msdn.microsoft.com/en-us/library/ms138031.aspx

    http://msdn.microsoft.com/en-us/library/ms177673.aspx

    http://technet.microsoft.com/pt-br/library/ms141003(v=sql.110).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 12 de janeiro de 2015 13:31
    Moderador

Todas as Respostas

  • Rafael,

    Antes deste componente ser processado no SSIS existe mais alguma outra atividade?

    Diretamente no Management Studio e mesma lógica é processada como você destacou, mas eu acredito que o problema pode esta sendo ocasionado no SSIS devido a alguma dependência ou até mesmo através da conexão que o DataSource pode estar fazendo.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    sexta-feira, 9 de janeiro de 2015 11:55
    Moderador
  • Rafael,

    Ocorre este problema porque no pacote do SSIS, a tarefa processa todos os registros antes de finalizar o processo, alocando os dados processados na memória.

    No outro caso, quando você executa pelo SSMS, o processamento não armazena a execução em buffer, todo o processo executado é escrito em log e (dependendo das configurações de seu editor ou do contexto onde o script T-SQL está sendo executado) pode ocorrer o output direto dos dados. Com isto, a memória é "reciclada" para uso deste processamento ou de outros que sua instância SQL possa estar gerenciando.

    Recomendo que você crie um passo intermediário, alimentando os dados agregados em uma tabela apenas para "swap" de dados (você deve truncar e manipular esta tabela exclusivamente para esta operação). Todo este processo pode ser executado em uma tarefa "Execute SQL" antes das demais ou então em um job separado (agendado antes do processo deste pacote).

    Para maiores informações veja:

    http://msdn.microsoft.com/en-us/library/ms138031.aspx

    http://msdn.microsoft.com/en-us/library/ms177673.aspx

    http://technet.microsoft.com/pt-br/library/ms141003(v=sql.110).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 12 de janeiro de 2015 13:31
    Moderador