2008-09-07 13 views
27

Quelle est la taille maximale d'une table MySQL? Est-ce 2 millions à 50Go? 5 millions à 80 Go?Taille de table maximale pour une base de données MySQL

À l'extrémité supérieure de l'échelle de taille, dois-je penser à compresser les données? Ou peut-être diviser la table si elle est devenue trop grande?

+0

Bien que vous n'aimez vraiment pas diviser une table si elle grandit, vous voulez juste la partitionner. –

+1

duplication possible de [Quelle taille peut avoir une base de données MySQL avant que les performances ne commencent à se dégrader?] (Http://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts -to-degrade) – random

Répondre

0

À propos de votre première question, la taille maximale efficace pour la base de données est généralement déterminée par le système d'exploitation, en particulier la taille du fichier serveur MySQL sera en mesure de créer, pas par le serveur MySQL lui-même. Ces limites jouent un grand rôle dans les limites de taille table. Et MyISAM fonctionne différemment d'InnoDB. Donc, toutes les tables dépendront de ces limites. Si vous utilisez InnoDB, vous aurez plus d'options sur la manipulation des tailles de tables, le redimensionnement de l'espace de table est une option dans ce cas, donc si vous prévoyez de le redimensionner, c'est la voie à suivre. Jetez un oeil à la page d'erreur The table is full. Je ne suis pas sûr que la quantité réelle d'enregistrement de chaque table donné toutes les informations nécessaires (OS, type de table, colonnes, type de données et la taille de chacun et etc ...) Et je ne suis pas sûr si cette information est facile à calculer, mais j'ai vu une table simple avec environ 1bi enregistrements dans quelques cas et MySQL n'a pas abandonné.

+1

pourquoi OS limiterait la taille de votre table? MySQL peut uniquement prendre en charge les tables dans un seul fichier? Il n'y a pas de concept d'espace de table qui permettrait de mapper plus d'un fichier à une seule table? –

35

J'ai déjà travaillé avec une très grande base de données MySQL (Terabyte +). La plus grande table que nous avions était littéralement plus d'un milliard de lignes.

Cela a fonctionné. MySQL a traité les données correctement la plupart du temps. C'était extrêmement lourd cependant. Le simple fait de sauvegarder et de stocker les données représentait un défi. Il faudrait des jours pour restaurer la table si nous avions besoin de le faire.

Nous avions de nombreuses tables dans la gamme 10-100 millions de lignes. Toute jointure significative aux tables prenait trop de temps et prenait une éternité. Nous avons donc écrit des procédures stockées pour «parcourir» les tables et traiter les jointures par rapport aux plages d'identifiants. De cette façon, nous traiterions les données de 10 à 100 000 lignes à la fois (joindre contre les ID 1-100 000 puis 100 001-200 000, etc.). C'était nettement plus rapide que de se joindre à toute la table.

L'utilisation d'index sur de très grandes tables qui ne sont pas basées sur la clé primaire est également beaucoup plus difficile. Mysql stocke les index en deux parties - il stocke les index (autres que l'index primaire) en tant qu'index des valeurs de clé primaire. Les recherches indexées sont donc faites en deux parties: d'abord, MySQL va à un index et en tire les valeurs de clé primaire qu'il doit trouver, puis il effectue une deuxième recherche sur l'index de clé primaire pour trouver où sont ces valeurs. Le résultat net est que pour les très grandes tables (1 à 200 millions de lignes et plus), l'indexation sur les tables est plus restrictive. Vous avez besoin de moins d'index plus simples. Et faire même des instructions select simples qui ne sont pas directement sur un index ne reviendra peut-être jamais. Où les clauses doivent atteindre les index ou oublier. Mais tout cela étant dit, les choses ont effectivement fonctionné. Nous avons pu utiliser MySQL avec ces très grandes tables et faire des calculs pour obtenir des réponses correctes.

+1

Avez-vous un indice où je pourrais obtenir des tables aussi énormes pour les tests? Nous sommes en train d'écrire un système de gestion de base de données et nous aimerions tester les performances de notre système avec MySQL. – StanE

-1

Voir cette http://www.clb4u.com/2013/10/scalability-and-limits-of-mysql.html

Prise en charge de grandes bases de données. Nous utilisons MySQL avec des bases de données contenant 50 millions d'enregistrements. Nous connaissons également les utilisateurs qui utilisent MySQL avec 200 000 tables et environ 5 000 000 000 lignes.

+3

S'il vous plaît ne faites pas de lien seulement des réponses. Inclure les parties essentielles de la réponse ici aussi. – Harry

+3

Le lien est rompu. – dbcb