AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 34603
Accepted
JHFB
JHFB
Asked: 2013-02-13 07:38:32 +0800 CST2013-02-13 07:38:32 +0800 CST 2013-02-13 07:38:32 +0800 CST

existem diferenças significativas com mais de 500 milhões de tabelas de linhas no Oracle?

  • 772

Estou em um designer de banco de dados em um ambiente de data warehouse. Estou acostumado a lidar com tabelas com no máximo 1 milhão de linhas e agora me deparo com tabelas com mais de meio bilhão de linhas. Existem diferenças significativas com as ferramentas da "caixa de ferramentas de eficiência"? Posso confiar em meu conhecimento anterior de índices, partições e afins ou algumas dessas ferramentas específicas são mais um obstáculo do que uma ajuda com dados tão grandes? Alguma outra dica para lidar com as tabelas?

(Já encontrei um ótimo post sobre como atualizar 700 milhões de linhas para o mesmo valor )

oracle-11g-r2
  • 2 2 respostas
  • 1992 Views

2 respostas

  • Voted
  1. Best Answer
    Chris Saxon
    2013-02-17T07:56:35+08:002013-02-17T07:56:35+08:00

    Os fundamentos da indexação, etc., funcionam exatamente da mesma maneira, portanto, estritamente falando, a única diferença é o custo de errar!

    Dito isso, aqui está uma lista (não necessariamente completa) de coisas que vale a pena ter em mente:

    • É provável que os índices de árvore B tenham um nível extra neles, portanto, o custo de usá-los é um pouco maior. No entanto, em um DW, você deve usar índices de bitmap (supondo que você tenha a edição corporativa)
    • Levará muito mais tempo para calcular as estatísticas de toda a mesa - a ponto de não ser possível na janela noturna normal. Isso pode ser superado por
      • Usar um menor estimate_percentao coletar estatísticas para que menos da tabela seja amostrada.
      • Usando coleta de estatísticas incrementais (relevante apenas se você tiver índices globais em tabelas particionadas)
    • Histogramas para índices são limitados a 254 buckets. Mais linhas provavelmente significam valores mais distintos, o que significa que valores "quase populares" podem ser um problema maior para dados distorcidos.
    • As chances de toda a sua tabela caber no cache do buffer se aproximam de zero, o que significa que é mais provável que você tenha mais leituras físicas (disco). Seu conjunto de trabalho normal também pode ser muito grande para ser armazenado em cache.
    • O particionamento pode ser seu amigo - se você acertar! Se você geralmente modifica e consulta dados em várias partições, isso pode custar mais do que tabelas simples.
    • Visualizações materializadas podem ser muito úteis para reduzir seu conjunto de trabalho. por exemplo, se você tiver mais de 10 anos de dados, mas a grande maioria das consultas do usuário for apenas nos últimos 2 anos, criar um MV limitado apenas a esses dados pode ser uma grande ajuda.
    • Quanto maior o banco de dados, menor a probabilidade de a empresa financiar (ser capaz de) um banco de dados de teste que seja uma duplicata completa do ambiente ativo. Isso dificulta a reprodução de problemas de desempenho no teste, pois as consultas lentas podem ocorrer devido à escala e/ou armazenamento físico dos dados. Você não pode contar com a capacidade de extrapolar os resultados da consulta de um banco de dados de teste muito menor para o desempenho correspondente ao vivo.

    Se você ainda não está familiarizado com a leitura e a compreensão dos planos de execução, eu gastaria algum tempo aprendendo isso: você pode ter problemas de desempenho em algum momento, então saber como diagnosticar o problema corretamente se tornará mais importante, pois é mais difícil adicionar novos índices ou fazer alterações de esquema quando suas contagens de linhas forem maiores.

    • 7
  2. Adam Musch
    2013-02-16T09:56:14+08:002013-02-16T09:56:14+08:00

    A quantidade tem uma qualidade própria.

    Ao lidar com tabelas desse tamanho, ajuda não pensar na tabela de fatos como uma tabela, mas pensar nela no nível do segmento ou como uma coleção de tabelas discretas. (Ter idade suficiente para lembrar o particionamento do meu próprio com exibições de partição ajuda.)

    O papel Scaling to Infinity de Tim Gorman é um recurso inestimável.

    • 4

relate perguntas

  • Como uma exportação de datapump pode ter seu uso de recursos limitado no Windows?

  • Como uma exportação de datapump pode ter seu uso de recursos limitado no linux?

  • Por que a autenticação do sistema operacional é considerada uma segurança ruim para bancos de dados Oracle?

  • Como você versiona as alterações do banco de dados Oracle?

  • Existe uma maneira de permitir que uma conexão proxy use autenticação passada em um link de banco de dados público?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve