Je suis en train de construire une application de base de données PHP / MySQL qui pourrait avoir une utilisation intensive sur certaines tables. p>
Trois tables ont le potentiel d'avoir beaucoup de mises à jour exécutées - voici quelques informations sur ces tables p>
La question large que j'ai est
4 Réponses :
Le nombre de tables n'est limité que par le nombre d'inodes ou l'espace physique sur le disque. p>
Sans en savoir plus sur ce que vous faites, même s'il est difficile de donner une bonne opinion. En règle générale, je dirais qu'une table de 1 000 000 rangées n'est pas si nécessaire pour MySQL tant que vous avez des indices appropriés. IMHO C'est une meilleure solution que d'avoir une table pour chaque utilisateur (le système peut le faire, mais je pense que cela finit par être un cauchemar de maintenance). P>
Pourquoi avez-vous besoin de 250k par table? Que stockez-vous c'est si grand dans chaque rangée? Explorez la scission de ces données dans d'autres tables. P>
Généralement bonne conception de la base de données met les catégories de données dans des tables plutôt que d'utiliser des tables en tant que lignes. P>
5 000 x 200 = 1 000 000. Cependant, je suis toujours d'accord, je suis toujours d'accord, les rangées de 1 m ne sont pas particulièrement grandes pour une base de données.
Bien dit - Je pense que je vais rester avec une grande table à la place (pour l'instant de toute façon) en fonction de vos commentaires. Merci -
mySQL n'impose pas de limites de table max. La vraie limitation va être votre système d'exploitation. MySQL stocke chaque table sous forme de fichier distinct, de sorte que 5 000 tables au lieu de 2 ou 3 ne sont pas si bonnes. P>
Je ne recommande certainement pas de créer une table pour chaque utilisateur, pour une myriade de raisons - vous voulez que vos données Mettez un index sur votre table d'identité utilisateur et tout ira bien. p>
Myisam stocke chaque table sous forme de fichier distinct mais InnoDB ne le fait pas.
Une table est définitivement préférable d'un point de vue de conception et de programmation. Je tiendrais compte que l'approche multi-tableaux de Sharding un piratage que vous ne devriez considérer que pour des raisons de performance après avoir développé et tester la conception "correcte". P>
Les mises à jour vous feront mal si 1) Votre table est de largement indexée ou 2), ils impliquent beaucoup de réécriture / déménagement de rangée (quelque chose que je ne connais pas les détails de MySQL). P>
Le nombre maximum de tables par base de données est limitée en fonction de votre système de fichiers. Ce numéro correspond au nombre de fichiers autorisés dans un répertoire. P>
Créer que de nombreuses tables ressemblent à un cauchemar de maintenance. Si vous avez besoin de changer quoi que ce soit sur vos tables, vous devez le faire pour chaque utilisateur. Cela pourrait des heures ou des jours. Garder toutes vos données utilisateur dans la même table avec un bon index sur l'ID utilisateur vous obtiendrez beaucoup plus loin. P>
De votre commentaire de Max Rild Taille, je présume que vous avez l'intention de stocker une grande partie de données dans un seul champ. Quelle proportion de vos mises à jour sera sur ce gros morceau de données vs les autres champs?