Bonjour,
Ce n'est pas parce qu'il n'y a pas d'interventions que le sujet n'est pas attractif. Mais, mine de rien, il y a des gens qui suivent en silence car ils écoutent ce que vous dites d'autant plus que ce que te propose
furiouslol est juste.
La question du poids d'une table dans une base de données est crucial non seulement pour les traitements appliqués à cette table mais aussi pour sa maintenance : backup, import/export , ... surtout pour MySQL.
L'optimisation du volume est une question mathématique à laquelle la méthode conceptuelle relationnelle apporte quelques solutions surtout au niveau de la structure et du formatage des données à enregistrer dans une table.
Voici un exemple simple:
Si on doit conserver les données d'identité des membres, il faut une table "membre" dont les champs représentent l'ensemble des données à collecter sur un membre.
Ex minimaliste: Membre (id, nom, prenom, email)
Le volume de données de cette table dépend considérablement des types et de la taille binaire (octet) de ses champs.
Donc, si le format est le suivant :
Code : Tout sélectionner
Membre (id int, nom varchar(15), prenom varchar(15), email varchar(50))
La longueur d'un enregistrement en octet =
- id (4 oct)
+ nom (15 oct)
+ prenom (15 oct)
+ email (50 oct)
------------------------
= 84 oct.
Le volume de cette table pour une charge de 10 000 enregistrements = 84 oct x 10 000 = 821 Ko
Avec cette formule de calcul, on constate que si le nombre de champs change(augmente ou diminue), le volume change (augmente ou diminue respectivement) alors systématiquement pour un même nombre d'enregistrements.
De même, si les formats (type/taille) de données changent, le volume change aussi pour un même nombre d'enregistrements.
Et finalement le volume peut changer aussi si le nombre d'enregistrements change.
On comprend par ça que le volume en octets dépend fortement de 3 événements : le nombre de champs, le format de données choisi pour les champs et le nombre d'enregistrements stockés dans la table.
La question de l'optimisation du volume doit être projetée donc sur ces trois axes.
Mais on peut remarquer que les deux axes concernant les champs (nombre et format) ont un caractère prépondérant par rapport à l'axe concernant le nombre d'enregistrements. Car il faut bien fixer la structure de la table avant de la mettre en service pour accueillir les données.
C'est pour cela que l'optimisation de la structure ou format des données est une question qu'il faut aborder au niveau de la structuration et la création de la base de données et non à postériori.
Par contre, l'optimisation au niveau du nombre d'enregistrements d'une table peut avoir des solutions relevant de l'administration de données comme l'archivage et l'épuration, le découpage logique et le clusturing ...
En ce qui te concerne, je te conseille, puisque tu es en train de restructurer ta base, de bien réfléchir sur le découpage des structures de tes tables, la distribution des champs et leur formatage (type/taille) sans rentrer en conflit avec le format et le contenu des données existantes.
Le découpage et la mise en relation des tables engendre un dédoublement de données liées ; pour ne pas affecter trop le volume global de la base il est conseillé d'utiliser des index numériques (clés primaires, clés étrangères, index de regroupement et index de contrainte d'unicité) comme liens entre les tables (selon le modèle relationnel)
Le choix du format du champ (type/taille) jouant le rôle d'index est important car un index engendre un dédoublement des enregistrements concernant ce champ. C'est pour cela qu'un format numérique (le plus petit possible => entier) est souvent recommandé.
En ce qui concerne les limites d'une base de données MySQL, je pense que c'est une question qui est relative à la configuration de l'environnement dans lequel MySQL tourne (les outils déployés pour l'administrer, le client qui l'interroge par des requêtes, etc...)
Par exemple, Si c'est un environnement Web utilisant PHP, le premier événement qui risque de perturber et le timeout Web qui pourrait ne pas convenir avec le temps d'attente de la réponse du serveur de données suite à une requête sur une table trop lourde ou à une requête complexe (trop de champs, de relations...)
Deuxième exemple, si on utilise Un utilitaire Web pour administrer MySQL comme PHPMyAdmin, le premier événement qui perturbe est la configuration du débit autorisé pour le postage ou l'upload de données lors d'import/export ou de chargement de script SQL.
Le troisième exemple concerne le problème relatif aux données de type texte : l'encodage des caractères et les délimiteurs et le problème des caractères binaires comme le contenu d'une image incorporée.