Eu tenho algumas tabelas que eu junto que acho que seriam perfeitas para colocar em um cluster. Mas também espero inserir dados neles toda semana. Não é uma grande quantidade de dados - algo como 5 a 20 registros por semana. Meu entendimento é que os clusters são bons para tabelas que você une e seleciona, mas não tão bons se você planeja usar instruções DML neles.
Minha pergunta é: quando a documentação do Oracle diz que o clustering não é eficiente para usar com instruções DML, eles estão se referindo à atualização e exclusão de centenas de registros? Ou uma pequena quantidade de registros inseridos também se enquadraria nessa diretriz? Minha pergunta é essencialmente: a escala das instruções DML afeta a eficiência do clustering? Ou é mais uma situação binária. Tipo, se eu estivesse atualizando um registro todos os dias, devo evitar colocar minhas tabelas em um cluster?
Ainda não vi um cenário de usuário do mundo real em que o benefício (economizando um pouco de disco ou E/S ou acesso de bloco) de usar um cluster em vez de apenas tabelas regulares (ou IOTs) com junções é tão significativo que vale a pena o incômodo de lidar com isso.
5-20 registros por semana: isso não é nada. Papel e lápis podem fazer isso.
FYI: As tabelas do dicionário de dados usam alguns clusters para identificadores. Esses identificadores nunca mudam. Eles são inseridos, excluídos, mas nunca atualizados. Em alguns ambientes, de 5 a 20 registros são inseridos/excluídos em questão de segundos ou minutos (devido à criação e eliminação de objetos dinamicamente) sem causar nenhum problema. Portanto, 5-20 registros por semana não serão um problema. A questão é: você realmente quer usar algo que quase nunca é usado, que pode até não melhorar visivelmente o desempenho (ou até piorá-lo), mas requer atenção extra.
advertência emptor
Sempre que você tiver uma ideia de design de esquema, execute benchmarks para (des)provar sua utilidade.
Para mim, usar um design de esquema não padrão precisa ser comprovado para ter um benefício significativo antes da implementação.
Para sua quantidade de dados realmente muito pequena, espero que você economize apenas alguns instantes por ano.
Novamente, execute benchmarks.
TL;DR Quando usar uma tabela em cluster? nunca (salvo prova em contrário.)
Clustering e particionamento são para criar localidade de referência em grandes conjuntos de dados.
Clustering é armazenar em conjunto todas as linhas associadas a cada valor de chave, e dependendo do RDBMS pode ser aplicado tanto tabela por tabela como índice onde as linhas são as folhas ou multi-tabela, onde são mantidos os dados de cada valor de chave em múltiplas tabelas juntos. Com Clustering, a tabela ainda é enorme.
Particionar é colocar a mesa em espaços diferentes, então ela funciona como muitas mesas pequenas. Por exemplo, nas bolsas dividimos por dia de negociação. Isso é ótimo para acelerar a consulta e a rotatividade, pois as partições antigas estão inativas. Também é muito útil para limpar dados com eficiência e reciclar o espaço para servir um novo valor de chave de partição, ao particionar na data.