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 / 47674
Accepted
Dolan Antenucci
Dolan Antenucci
Asked: 2013-08-07 13:11:17 +0800 CST2013-08-07 13:11:17 +0800 CST 2013-08-07 13:11:17 +0800 CST

Como muita memória RAM (128 GB) pode ser usada para melhorar a criação de índices do MySQL 5.5?

  • 772

Isso é semelhante a outro post meu , mas agora tenho uma estrutura de tabela diferente e ainda não está claro quais parâmetros do MySQL devem ser alterados para aproveitar a memória RAM extra que minha máquina possui --- portanto, se parecer uma duplicata, deixe saber a melhor forma de reformular o que estou perguntando.

Tenho a seguinte tabela: create table mytable (id1 int, id2 int, score float) engine MyISAM,com 50 bilhões de registros.

Pretendo adicionar um índice na primeira coluna ( alter table mytable add index myindex (id1)), e gostaria de saber quais parâmetros do MySQL poderiam ser alterados para aproveitar essa memória extra (por exemplo, buffers?)?

Observação: o tipo de mecanismo não precisa ser MyISAM se isso fizer diferença.

mysql memory
  • 1 1 respostas
  • 491 Views

1 respostas

  • Voted
  1. Best Answer
    Ursula
    2013-08-08T09:37:24+08:002013-08-08T09:37:24+08:00

    Sua primeira preocupação é o carregamento de dados. Como você não pretende ter uma chave primária, mas apenas um índice, você deve ordenar seus dados antes de carregar pela coluna de índice id1, em qualquer tipo de UNIX:

    sort -n mytable.txt > mytable.sort
    

    Para carregar os dados, use mysqlimport ou LOAD DATA no prompt do MySQL. Para acelerar o carregamento, as tabelas MYISAM se beneficiam do aumento de *bulk_insert_buffer_size*, *myisam_sort_buffer_size* ou *key_buffer_size*, para tabelas INNODB, aumente *innodb_buffer_pool_size* e *innodb_log_file_size*.

    Esses aumentos podem não ser suficientes e o carregamento ainda pode diminuir à medida que a memória é preenchida. Nesse caso, é mais eficiente carregar os dados em blocos. Você pode monitorar a velocidade executando um du de hora em hora no diretório raiz do mysql:

    #!/bin/bash
    while [ 1 ]
    do
        du -hs database/.
        sleep 3600
    done
    

    Apenas para completar (não relevante para este caso específico): Desativar índices também ajuda a acelerar o processo de carregamento.

    Agora, para consultar: Isso é um pouco mais complexo, pois depende de seus dados e da maneira como você deseja consultar sua tabela. Os maiores fatores que influenciam o desempenho são:

    • buffers: definidos por variáveis. Execute suas consultas típicas e compare a saída "mostrar variáveis" e "mostrar status" para identificar gargalos.

    • índices: você já cobriu isso

    • junções: dependendo da maneira como você une outras tabelas, pode ser
      melhor desnormalizar sua(s) tabela(s) em um estilo de data warehouse,
      especialmente se você deseja unir duas tabelas grandes.

    Ótimos artigos sobre carregamento de dados e otimização de consulta de tabelas grandes podem ser encontrados em: http://www.mysqlperformanceblog.com/2007/05/24/predicting-how-long-data-load-would-take/ http://www .mysqlperformanceblog.com/2006/06/09/why-mysql-could-be-slow-with-large-tables/

    Revise os valores padrão e permitidos para essas e outras variáveis ​​em: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

    • 3

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

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