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 / 4403
Accepted
700 Software
700 Software
Asked: 2011-08-06 18:28:08 +0800 CST2011-08-06 18:28:08 +0800 CST 2011-08-06 18:28:08 +0800 CST

Arquivo de dados MySQL InnoDB diretamente em uma fatia de disco (tamanho fixo)?

  • 772

Parece que ibdata1 é como uma fatia de disco. Nos sistemas de arquivos UFS do Solaris (UNIX) (o comum antes do ZFS), seria necessário separar o disco c0t0d0 em fatias, digamos que uma unidade de 10 GB seria cortada em três seções, 4 GB, 1 GB e 5 GB. Esses seriam sistemas de arquivos de tamanho fixo. Os 4 GB para, digamos, SO. 1 GB para troca e 5 GB para software e dados.

swap pode ser armazenado em um arquivo em um sistema de arquivos, mas para desempenho ele geralmente é armazenado em sua própria seção do disco.

O ibdata1 pode ser vinculado à sua própria fatia para aumentar o desempenho? É claro que seria preciso pensar cuidadosamente antes de decidir qual tamanho fixo é ideal e também saber como verificar os níveis de uso.

Um link simbólico pode ser colocado de .../mysql/data/ibdata1para /dev/rdsk/c0t0d0s3. O MySQL então o veria como um arquivo, mas poderia ter um desempenho melhor porque não precisa passar pela camada do sistema de arquivos, ele gravaria diretamente em uma seção designada do disco.

  • alguem ja tentou isso?
  • Alguém acha que isso é uma má ideia? (Lembre-se de que essa ideia é apenas para servidores de banco de dados somente InnoDB. Não para servidores multiuso.)
  • Funcionaria (o innodb precisa verificar o tamanho do arquivo? Caso contrário, deve funcionar.)
  • O uso pode ser verificado?
mysql innodb
  • 1 1 respostas
  • 1836 Views

1 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2011-08-07T19:10:40+08:002011-08-07T19:10:40+08:00

    Em primeiro lugar, quais são os tipos de entrada que residem em ibdata1? Quatro (4) tipos de entrada:

    • Tabela MetaData
    • Páginas de dados da tabela
    • Índice de páginas de dados
    • Dados MVCC

    Sempre que uma tabela InnoDB experimenta DDL, DML ou sendo usada em uma transação, todos esses quatro tipos de entradas são lidos ou gravados. Enquanto isso, se innodb_file_per_table estiver desativado, todos esses tipos de entrada residirão em ibdata1. Se estiver ativado, apenas Table MetaData e MVCC Data residiriam em ibdata1, enquanto as Table Data Pages e Index Data Pages residiriam na subpasta do banco de dados como um arquivo .ibd.

    Isso sendo considerado, o que aconteceria se ibdata1 fosse colocado em outro volume e vinculado a um link simbólico?

    Para começar, como o MySQL representa uma tabela independentemente do mecanismo de armazenamento? Como um arquivo .frm. Onde vivem os arquivos .frm? No diretório de dados. O que há de errado com isso?

    Aqui está um exemplo:

    Usando o datadir padrão de /var/lib/mysql, vamos usar uma tabela InnoDB chamada mydb.mytable.

    Com innodb_file_per_table desabilitado, tudo ficaria em ibdata1 (que você está propondo fazer um link simbólico e enviar para outro volume de dados). Para a tabela mydb.mytable, isto é o que você teria:

    • /var/lib/mysql/mydb/mytable.frm
    • Todo o resto da tabela reside em ibdata1

    Imagine isso agora: você acessa a tabela, o MySQL primeiro acessa /var/lib/mysql/mydb/mytable.frm e depois acessa as páginas de dados e índice em ibdata1 para mydb.mytable. Isso estaria acontecendo constantemente com cada acesso de mydb.mytable. Esse vaivém em cascata tornaria as coisas um pouco mais lentas e você pode não obter o desempenho esperado movendo ibdata1 para algum outro volume de dados. Na verdade, o efeito cascata agora seria um fator do número de tabelas InnoDB multiplicado por dois (2).

    Imagine ter innodb_file_per_table ativado. Agora você teria uma configuração ligeiramente diferente:

    • /var/lib/mysql/mydb/mytable.frm
    • /var/lib/mysql/mydb/mytable.ibd
    • Dados MVCC e Table MetaData residiriam em ibdata1

    Essa cascata seria um pouco pior porque a cascata para acesso à tabela agora ocorreria entre três arquivos em vez de dois.

    Aqui está mais um cenário que alguns pensaram: Em vez de mover o ibdata1 para um volume diferente, que tal habilitar innodb_file_per_table e mover os arquivos .ibd para um ou mais volumes de dados diferentes? O efeito cascata agora seria um fator do número de tabelas InnoDB multiplicado por três (3). Percona expressou razões muito boas para não fazer isso, que você achará úteis .

    • 5

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 você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

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

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +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
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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