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 / 50231
Accepted
jpmc26
jpmc26
Asked: 2013-09-20 15:27:19 +0800 CST2013-09-20 15:27:19 +0800 CST 2013-09-20 15:27:19 +0800 CST

Oracle Equivalente ao PostgreSQL CLUSTER

  • 772

O PostgreSQL possui o comando CLUSTER para agrupar linhas fisicamente no disco. Ao agrupar as informações em que as linhas "vizinhas" (por falta de um termo melhor) são frequentemente acessadas juntas, o desempenho melhora, pois menos blocos de disco precisam ser lidos em uma determinada consulta. A Oracle tem algo parecido? Isso ajudaria no desempenho em uma tabela grande que quase nunca é atualizada se houver essa opção?

oracle postgresql
  • 3 3 respostas
  • 982 Views

3 respostas

  • Voted
  1. Best Answer
    Mindaugas Riauba
    2013-09-20T20:48:34+08:002013-09-20T20:48:34+08:00

    Um conceito semelhante no Oracle é chamado de Tabelas Organizadas por Índice (IOT).

    A diferença com o PostgreSQL CLUSTER é que no PostgreSQL CLUSTER o comando reorganiza a tabela uma vez e, posteriormente, a tabela ainda cresce como deseja. No Oracle IOT mantém sua estrutura ordenada por índice.

    Ao contrário de Phil, estou vendo IOTs de vez em quando. Na maioria das vezes, eles são usados ​​quando você precisa recuperar muitas (pense centenas) linhas por índice.

    • 4
  2. Jussi
    2013-09-20T22:05:05+08:002013-09-20T22:05:05+08:00

    O Oracle tem tabelas organizadas por índice, clusters de árvore b e clusters de hash. A implementação de cluster no Oracle suporta uma ou mais tabelas armazenadas em um mesmo cluster. Veja AskTom para mais detalhes. Qual é o melhor para você depende de como você define "linhas vizinhas" e como você acessa os dados.

    Eu vi cluster de hash fazer melhorias significativas no desempenho, mas raramente pode ser usado porque a quantidade de chaves deve ser especificada quando o cluster é criado .

    • 4
  3. David Aldridge
    2013-09-26T01:14:16+08:002013-09-26T01:14:16+08:00

    A funcionalidade Oracle mais semelhante seria recriar a tabela com as linhas sendo ordenadas.

    Isso pode ser feito online usando DBMS_REDEFINITON, mas você pode simplesmente:

    Create table tmp_source_table
    nologging
    as
    select * from source_table;
    
    Truncate table source_table;
    
    Insert /*+ append */ into source_table
    select *
    from   tmp_source_table
    order by column1, column2 ... etc.
    

    Isso melhoraria a eficiência dos métodos de acesso baseados em intervalo de índice em que a tabela é acessada por meio de um índice nas colunas ordenadas, a menos ou até que a tabela seja desorganizada por mais linhas sendo inseridas. As atualizações não afetariam tanto isso, pois o Oracle normalmente não move linhas apenas porque elas são atualizadas, como o PostgreSQL faz.

    Tabelas, clusters e particionamento organizados por índice fornecem soluções mais permanentes para impor o agrupamento físico de linhas.

    1. As IOTs são organizadas apenas pelos valores da chave primária, o que é de uso limitado, pois geralmente você não acessa um intervalo de linhas por meio de uma chave primária sem sentido.
    2. Os clusters são organizados por intervalo ou simplesmente colocam valores idênticos (clusters de hash) e podem fazer isso para várias tabelas. Os clusters de hash fornecem uma pesquisa mais rápida do que os índices -- geralmente uma leitura lógica -- e otimizam as pesquisas de linha única, bem como os intervalos.
    3. O particionamento coloca linhas fisicamente com base em um intervalo de valores de coluna de chave de partição, em conjuntos de valores para as colunas de chave, no valor de hash de colunas de chave ou por referência a uma coluna em outra tabela.

    Outra técnica associada é o uso de Visualizações Materializadas, que podem oferecer agrupamentos físicos diferentes de linhas para a tabela original por meio do uso das técnicas acima, com reescrita de consulta sendo empregada para escolher a tabela com o agrupamento mais útil.

    • 3

relate perguntas

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

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