Qual é o limite superior de registros para a tabela de banco de dados MySQL. Eu estou pensando sobre o campo de incremento automático. O que aconteceria se eu adicionar milhões de registros? Como lidar com esse tipo de situação? THX!
Qual é o limite superior de registros para a tabela de banco de dados MySQL. Eu estou pensando sobre o campo de incremento automático. O que aconteceria se eu adicionar milhões de registros? Como lidar com esse tipo de situação? THX!
Respostas:
Os tipos mysql int podem fazer algumas linhas: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
unsigned int
maior valor é 4,294,967,295
assinado bigint
maior valor é18,446,744,073,709,551,615
O maior valor de um número inteiro tem pouco a ver com o número máximo de linhas que você pode armazenar em uma tabela.
É verdade que, se você usar um int ou bigint como chave primária, poderá ter apenas tantas linhas quanto o número de valores exclusivos no tipo de dados da sua chave primária, mas não precisará tornar sua chave primária um número inteiro. , você pode torná-lo um CHAR (100). Você também pode declarar a chave primária em mais de uma coluna.
Existem outras restrições no tamanho da tabela além do número de linhas. Por exemplo, você pode usar um sistema operacional que tenha uma limitação de tamanho de arquivo. Ou você pode ter um disco rígido de 300 GB que pode armazenar apenas 300 milhões de linhas se cada linha tiver 1 KB de tamanho.
Os limites do tamanho do banco de dados são realmente altos:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
O mecanismo de armazenamento MyISAM suporta 2 32 linhas por tabela, mas você pode construir o MySQL com a --with-big-tables
opção de suportar até 2 64 linhas por tabela.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
O mecanismo de armazenamento do InnoDB não parece ter um limite no número de linhas, mas tem um limite no tamanho da tabela de 64 terabytes. Quantas linhas se ajustam a isso depende do tamanho de cada linha.
Eu sugiro, nunca exclua dados. Não diga que se as tabelas tiverem mais de 1000 truncar o final da tabela. É necessário que haja lógica de negócios real em seu plano, por quanto tempo esse usuário está inativo. Por exemplo, se for mais de 1 ano, coloque-os em uma tabela diferente. Isso aconteceria semanal ou mensalmente em um script de manutenção no meio de um tempo lento.
Quando você encontra muitas linhas na sua tabela, deve começar a fragmentar as tabelas ou o particionamento e colocar dados antigos em tabelas antigas por ano, como users_2011_jan, users_2011_feb ou usar números para o mês. Em seguida, altere sua programação para trabalhar com este modelo. Talvez faça uma nova tabela com menos informações para resumir os dados em menos colunas e depois consulte as tabelas particionadas maiores quando precisar de mais informações, como quando o usuário estiver visualizando seu perfil. Tudo isso deve ser considerado com muito cuidado, para que no futuro não seja muito caro refatorar. Você também pode colocar apenas os usuários que acessam seu site o tempo todo em uma tabela e os usuários que nunca entram em um conjunto de tabelas arquivadas.
No InnoDB, com um limite no tamanho da tabela de 64 terabytes e um limite de tamanho de linha do MySQL de 65.535, pode haver 1.073.741.824 linhas. Esse seria o número mínimo de registros utilizando o limite máximo de tamanho de linha. No entanto, mais registros podem ser adicionados se o tamanho da linha for menor.
De acordo com a seção Escalabilidade e Limites em http://dev.mysql.com/doc/refman/5.6/en/features.html , o MySQL suporta grandes bancos de dados. Eles usam o MySQL Server com bancos de dados que contêm 50 milhões de registros. Alguns usuários usam o MySQL Server com 200.000 tabelas e cerca de 5.000.000.000 de linhas.
The maximum row size for a given table is determined by several factors:
A representação interna de uma tabela MySQL tem um limite máximo de tamanho de linha de 65.535 bytes, mesmo que o mecanismo de armazenamento seja capaz de suportar linhas maiores. As colunas BLOB e TEXT contribuem apenas de 9 a 12 bytes para o limite de tamanho da linha porque seu conteúdo é armazenado separadamente do restante da linha.
O tamanho máximo da linha para uma tabela do InnoDB, que se aplica aos dados armazenados localmente em uma página do banco de dados, é um pouco menos que meia página. Por exemplo, o tamanho máximo da linha é um pouco menor que 8 KB para o tamanho da página padrão do InnoDB de 16 KB, definido pela opção de configuração innodb_page_size. " Limites nas tabelas do InnoDB ".
Link http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Limites de tamanho de linha
O tamanho máximo da linha para uma determinada tabela é determinado por vários fatores:
A representação interna de uma tabela MySQL tem um limite máximo de tamanho de linha de 65.535 bytes, mesmo que o mecanismo de armazenamento seja capaz de suportar linhas maiores. As colunas BLOB e TEXT contribuem apenas de 9 a 12 bytes para o limite de tamanho da linha porque seu conteúdo é armazenado separadamente do restante da linha.
O tamanho máximo da linha para uma tabela do InnoDB, que se aplica aos dados armazenados localmente em uma página do banco de dados, é um pouco menos de meia página para as configurações innodb_page_size de 4KB, 8KB, 16KB e 32KB. Por exemplo, o tamanho máximo da linha é um pouco menor que 8 KB para o tamanho da página padrão do InnoDB de 16 KB. Para páginas de 64 KB, o tamanho máximo da linha é um pouco menor que 16 KB. Consulte a Seção 15.8.8, “Limites nas tabelas do InnoDB”.
Se uma linha contendo colunas de tamanho variável exceder o tamanho máximo da linha do InnoDB, o InnoDB selecionará colunas de tamanho variável para armazenamento externo fora da página até que a linha se ajuste ao limite de tamanho da linha do InnoDB. A quantidade de dados armazenados localmente para colunas de tamanho variável que são armazenadas fora da página varia de acordo com o formato da linha. Para obter mais informações, consulte a Seção 15.11, “Armazenamento de linha do InnoDB e formatos de linha”.
Diferentes formatos de armazenamento usam quantidades diferentes de dados de cabeçalho e trailer da página, o que afeta a quantidade de armazenamento disponível para linhas.
Para obter informações sobre os formatos de linha do InnoDB, consulte a Seção 15.11, “Armazenamento de linha do InnoDB e formatos de linha” e a Seção 15.8.3, “Estrutura de linha física das tabelas do InnoDB”.
Para obter informações sobre os formatos de armazenamento MyISAM, consulte a Seção 16.2.3, “Formatos de armazenamento de tabelas MyISAM”.
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Não há limite. Depende apenas da memória livre e do tamanho máximo do arquivo do sistema. Mas isso não significa que você não deve tomar medidas de precaução ao lidar com o uso de memória em seu banco de dados. Sempre crie um script que possa excluir linhas que estão fora de uso ou que manterá o total de linhas dentro de uma determinada figura, digamos mil.