locked
Particionamento tabelas já populadas SQL 2008 RRS feed

  • Pergunta

  • Caros Experts, boa tarde!

    Procurando aqui no fórum, encontrei um post que fala sobre o particionamento de tabelas no SQL Server 2005; porém há algum recurso a mais no SQL 2008 que auxile na questão de particionamento de tabelas já populadas (ou objetos de banco de dados) para outro HD?

    Pergunto isso pois é muito recorrente em sistemas OLTP no momento da implantação o "jênio" do consultor de OLTP colocar tudo na unidade C; e após 1 ano de implantação o HD já está lotado e aí inicia-se diversos estresses sobre o sistema 'parar' no meio da operação. O plano é ao menos colocar no servidor do SQL 1 HD para cada bimestre.

    Desde já obrigado!

     

    []'s

    • Movido Gustavo Maia Aguiar sábado, 30 de julho de 2011 21:44 (De:SQL Server - Desenvolvimento Geral)
    sábado, 30 de julho de 2011 19:19

Respostas

  • Boa Noite,

    As melhorias no particionamento no SQL Server 2008 referem-se a bloqueios e otimizações de consultas, mas não há nada que auxilie na questão do particionamento de tabelas já populadas para outro disco ou volume (prefiro usar a palavra disco do que HD).

    O que você pode fazer é criar uma nova tabela já particionada e mover os registros com um trabalho de ETL para a nova partição diminuindo a janela de indisponibilidade. Comece movendo os registros históricos que não são consultados e indisponibilize apenas quando for realmente necessário.

    Outra estratégia é fazer um backup e restaurá-lo em outro disco (norecovery), posteriormente siga com os logs até chegar perto de igualá-los. Quando estiver bem próximo, então sim, indisponibilize a base, tire um log e restaure no novo banco. Quando terminar, renomeie-o.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    sábado, 30 de julho de 2011 21:44

Todas as Respostas

  • Iniciante em SQL,

    Neste caso, acredito que o particionamento poderia ser em filegroups distintos ou até em divisão dos dados em outras tabelas!!!


    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]
    sábado, 30 de julho de 2011 21:36
    Moderador
  • Boa Noite,

    As melhorias no particionamento no SQL Server 2008 referem-se a bloqueios e otimizações de consultas, mas não há nada que auxilie na questão do particionamento de tabelas já populadas para outro disco ou volume (prefiro usar a palavra disco do que HD).

    O que você pode fazer é criar uma nova tabela já particionada e mover os registros com um trabalho de ETL para a nova partição diminuindo a janela de indisponibilidade. Comece movendo os registros históricos que não são consultados e indisponibilize apenas quando for realmente necessário.

    Outra estratégia é fazer um backup e restaurá-lo em outro disco (norecovery), posteriormente siga com os logs até chegar perto de igualá-los. Quando estiver bem próximo, então sim, indisponibilize a base, tire um log e restaure no novo banco. Quando terminar, renomeie-o.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    sábado, 30 de julho de 2011 21:44
  • Maia,

    Esta segunda opção praticamente seria uma cópia reservada de uma determinada posição dos dados?

    É isso que você esta se referindo ou algo similar ao LogShipping?


    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]
    sábado, 30 de julho de 2011 21:53
    Moderador
  •  

    Olá Júnior, boa noite!

    Infelizmente no banco OLTP (SAP BO) que eu utilizo para prestar suporte, nao podemos mexer na estrutura do banco (criar jobs, alertas, triggers, etc) sob pena de perda da garantia do produto. No entanto como a alteração física vai ser necessária de qualquer maneira (troca de HD devido a falta de espaço) tive que cometer o crime de dar Shrink no log e no database (Eu sei que é mais ou menos como o cara que tá com uma pane seca no carro, colocar cachaça no tanque pra chegar até o posto; mas nao teve jeito).

     

    Mas no caso, você sabe se há alguma relação do particionamento de HD e melhoria de performance? Algo mais ou menos como:

     

    Partição 1 - C: (SO)

    Partição 2 - D: (Aplicações)

    Partição 3 - E: (SQL)

    Ab's

    domingo, 31 de julho de 2011 21:41
  • Júnior,

    pensei a mesma coisa, mas o seu post me deu uma idéia. Se eu estiver falando besteira você me avisa.

    Pegar uma outra estrutura física de disco (8x maior que o original), instalar no servidor; e fazer espelhamento; assim que os dados replicados estiverem consistentes; desativo o HD antigo e inicio o trabalho no novo.

    Não é tão absurdo assim né?!

     

    Ab's

    domingo, 31 de julho de 2011 21:47
  • Maia, Júnior:

    Achei algo relativo a Particionamento, porém não fala nada sobre registros históricos:

    http://www.databasejournal.com/features/mssql/article.php/3647561/Data-partitioning-in-SQL-Server-2005---Part-V.htm

    Abs!

    domingo, 31 de julho de 2011 21:57