Número máximo de registros em uma tabela de database MySQL

Qual é o limite superior de registros para a tabela de database MySQL. Eu estou querendo saber sobre o campo de incremento automático. O que aconteceria se eu adicionasse milhões de registros? Como lidar com esse tipo de situação? THX!

    Os tipos int do mysql podem fazer algumas linhas: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

    não assinado maior valor é 4,294,967,295
    o maior valor não assinado é 18,446,744,073,709,551,615

    O maior valor de um 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 sua chave primária, só poderá ter tantas linhas quanto o número de valores exclusivos no tipo de dados de sua chave primária, mas não precisará tornar sua chave primária um número inteiro , você poderia fazer 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ê poderia usar um sistema operacional que tem 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.

    Os limites do tamanho do database são muito 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 opção --with-big-tables para suportar até 2 64 linhas por tabela.

    http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

    O mecanismo de armazenamento 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.

    Sugiro nunca excluir dados. Não diga se as tabelas tiverem mais de 1000 truncarem o final da tabela. É preciso haver lógica de negócios real no seu plano, como há quanto tempo esse usuário está inativo. Por exemplo, se for maior que 1 ano, coloque-os em uma tabela diferente. Você teria isso acontecer semanalmente ou mensalmente em um script de manutenção no meio de um tempo lento.

    Quando você se deparar com muitas linhas em sua tabela, deverá começar a particionar as tabelas ou particionar e colocar os dados antigos em tabelas antigas por ano, como users_2011_jan, users_2011_feb ou usar números para o mês. Em seguida, mude sua programação para trabalhar com esse modelo. Talvez crie uma nova tabela com menos informações para resumir os dados em menos colunas e, em seguida, consulte apenas 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 chegam ao seu site o tempo todo em uma tabela e os usuários que nunca entram em um conjunto arquivado de tabelas.

    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 Scalability and Limits em http://dev.mysql.com/doc/refman/5.6/en/features.html , o suporte do MySQL para 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.

    Limites de tamanho de linha

     The maximum row size for a given table is determined by several factors: 
    • A representação interna de uma tabela MySQL possui 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 com 9 a 12 bytes em relação ao limite de tamanho da linha, porque seu conteúdo é armazenado separadamente do restante da linha.

    • O tamanho máximo da linha para uma tabela InnoDB, que se aplica a dados armazenados localmente em uma página de database, é ligeiramente menor que a metade de uma página. Por exemplo, o tamanho máximo da linha é um pouco menor que 8 KB para o tamanho de página InnoDB padrão de 16 KB, que é definido pela opção de configuração innodb_page_size. “ Limites em tabelas do InnoDB ”.

    • Se uma linha contendo colunas de tamanho variável exceder o tamanho máximo de linha do InnoDB, o InnoDB seleciona colunas de comprimento variável para armazenamento externo fora da página até que a linha caiba dentro do limite de tamanho de linha do InnoDB. A quantidade de dados armazenados localmente para colunas de tamanho variável que são armazenados fora da página é diferente pelo formato de linha. Para mais informações, consulte “ Armazenamento de Linha InnoDB e Formatos de Linha ”.
    • Diferentes formatos de armazenamento usam diferentes quantidades de header de página e dados de trailer, o que afeta a quantidade de armazenamento disponível para linhas.

    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 possui 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 com 9 a 12 bytes em relação ao limite de tamanho da linha, porque seu conteúdo é armazenado separadamente do restante da linha.

    O tamanho máximo de linha para uma tabela InnoDB, que se aplica a dados armazenados localmente em uma página de database, é um pouco menor que a metade de uma página para 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 de página InnoDB padrão de 16 KB. Para páginas de 64 KB, o tamanho máximo da linha é um pouco menor que 16 KB. Veja a Seção 15.8.8, “Limites nas Tabelas InnoDB”.

    Se uma linha contendo colunas de tamanho variável exceder o tamanho máximo de linha do InnoDB, o InnoDB seleciona colunas de comprimento variável para armazenamento externo fora da página até que a linha caiba dentro do limite de tamanho de linha do InnoDB. A quantidade de dados armazenados localmente para colunas de tamanho variável que são armazenados fora da página é diferente pelo formato de linha. Para mais informações, veja Seção 15.11, “Armazenamento de Linha InnoDB e Formatos de Linha”.

    Diferentes formatos de armazenamento usam diferentes quantidades de header de página e dados de trailer, o que afeta a quantidade de armazenamento disponível para linhas.

    Para informações sobre formatos de linha InnoDB, veja Seção 15.11, “Armazenamento de Linha InnoDB e Formatos de Linha”, e Seção 15.8.3, “Estrutura de Linha Física de Tabelas InnoDB”.

    Para obter informações sobre formatos de armazenamento MyISAM, consulte a Seção 16.2.3, “Formatos de armazenamento de tabela MyISAM”.

    http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

    Não há limite. Depende apenas da memory livre e do tamanho máximo do arquivo. Mas isso não significa que você não deva tomar precaução ao lidar com o uso de memory em seu database. Sempre crie um script que possa excluir linhas que estão fora de uso ou que mantenham o número total de linhas dentro de uma determinada figura, digamos, mil.