Boas Práticas da Base de dados SQL - utilização de tabelas de arquivos?

Eu não sou um DBA treinado, mas executar algumas tarefas SQL e ter esta pergunta:

nas bases de dados SQL reparei nas tabelas de arquivos que imitam outra tabela com os mesmos campos exactos e que são usadas para aceitar linhas da tabela original quando esses dados são considerados para arquivamento. Desde que eu vi exemplos onde essas tabelas residem na mesma base de dados e na mesma unidade, minha suposição é que isso foi feito para aumentar o desempenho. Tais Mesas não tinham mais do que um cerca de 10 milhões de filas...

  • Por que isso seria feito em vez de usar uma coluna para designar o estado da linha, como um booleano para uma bandeira in/active?
  • Em que altura isso melhoraria o desempenho ?
  • Qual seria o melhor padrão para estruturar isto corretamente, dado que os dados ainda podem precisar ser questionados (ou unioned com dados atuais) ?
  • O que mais há a dizer sobre isto ?
Author: matrix4use, 2014-01-17

2 answers

A noção de arquivamento é física, não lógica, uma. Logicamente, a tabela de arquivo contém a mesma entidade e deve ser a mesma tabela. As preocupações físicas tendem a ser pragmáticas. A noção geral é que o"banco de dados está ficando muito (grande/lento"). Arquivar registros torna mais fácil fazer coisas como:
  1. Otimize a estrutura do Índice de forma diferente. As tabelas de arquivo podem ter mais índices sem afetar o desempenho de inserir / atualizar na mesa de trabalho. Além disso, os índices podem ser reconstruídos com páginas completas, enquanto a tabela de trabalho geralmente quer ter páginas que estão 50% completas e equilibradas.

  2. Otimize os meios de armazenamento de forma diferente. Você pode colocar a mesa de arquivo em unidades de disco mais lentas / menos caras que talvez tenham mais capacidade.

  3. Otimize as estratégias de backup de forma diferente. As tabelas de trabalho podem exigir cópias de segurança ou envio de log enquanto as tabelas de arquivo podem usar instantaneo.

  4. Otimize a replicação de forma diferente, se estiver a usá-la. Se uma tabela de arquivos for atualizada apenas uma vez por dia através do lote noturno, você pode usar o instantâneo em oposição à replicação transacional.

  5. Diferentes níveis de acesso. Talvez você queira diferentes níveis de acesso de segurança para a tabela de arquivos.

  6. Lock contention. Se a sua mesa de trabalho estiver muito quente, prefere que os seus programadores MIS acedam à mesa de arquivo onde estão menos é provável que pare suas operações quando eles executam algo e se esqueça de especificar semântica de leitura suja.

A melhor prática não seria usar tabelas de arquivos, mas mover os dados da base de dados OLTP para uma base de dados MIS, data warehouse, ou data marts com dados desnormalizados. Mas algumas organizações terão dificuldade em justificar o custo de um sistema DB adicional (que não são baratos). Há muito menos obstáculos para adicionar uma tabela adicional a um DB existente.

 5
Author: John Wu, 2014-01-20 15:27:54
Digo isto frequentemente, mas..... Múltiplas tabelas de estrutura idêntica quase nunca fazem sentido. Uma bandeira de Estado é uma ideia muito melhor. Existem maneiras adequadas de aumentar o desempenho (particionamento/indexação) sem desnormalizar dados ou criar redundâncias. 10 milhões de registros são muito pequenos no mundo dos rdbms modernos, então o que você está vendo é o produto de um mau planejamento ou mal-entendido das bases de dados.
 0
Author: Hart CO, 2014-01-16 23:49:49