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.
Bien que vous n'aimez vraiment pas diviser une table si elle grandit, vous voulez juste la partitionner. –
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