25-07-2008, 11:52 AM
Les index doivent être choisis avec soins.
Plus tu as d'index, plus une mise à jour dans ta table prendra du temps si elle est liée à un index.
Les INSERT et les DELETE modifient également les index qui doivent rester à jour.
Les UPDATE ne modifie que les index référençant la/les colonnes modifiées.
Donc, si tu as une table à 10 colonnes avec un index sur chaque colonne, je te laisse imaginer le massacre à chaque modification.
Ensuite, les verrous sont des systèmes propres aux BDD pour garantir l'intégrité des données.
MySQL dans sa version classique (MyIsam) InnoDB utilise un verrouillage par table.
En gros, si quelqu'un modifie ou ajoute une information dans une table, personne ne peux ajouter/modifier (et même parfois lire) les informations tant que l'opération n'est pas terminée.
En cas de charge, on peut arriver rapidement à des problèmes de verrouillage (LOCK) qui, s'empilant les uns sur les autres, vont plomber l'application et le serveur.
InnoDB fonctionne avec un système de verrou par ligne. Seule la ligne modifiée est verrouillée/bloquée. C'est moins restrictifs qu'un système de verrou par table mais demande plus de ressources.
Pour en savoir plus sur le sujet, je te conseille de jeter un oeil au modèle de gestion des verrous et des transactions d'InnoDB.
Plus tu as d'index, plus une mise à jour dans ta table prendra du temps si elle est liée à un index.
Les INSERT et les DELETE modifient également les index qui doivent rester à jour.
Les UPDATE ne modifie que les index référençant la/les colonnes modifiées.
Donc, si tu as une table à 10 colonnes avec un index sur chaque colonne, je te laisse imaginer le massacre à chaque modification.
Ensuite, les verrous sont des systèmes propres aux BDD pour garantir l'intégrité des données.
MySQL dans sa version classique (MyIsam) InnoDB utilise un verrouillage par table.
En gros, si quelqu'un modifie ou ajoute une information dans une table, personne ne peux ajouter/modifier (et même parfois lire) les informations tant que l'opération n'est pas terminée.
En cas de charge, on peut arriver rapidement à des problèmes de verrouillage (LOCK) qui, s'empilant les uns sur les autres, vont plomber l'application et le serveur.
InnoDB fonctionne avec un système de verrou par ligne. Seule la ligne modifiée est verrouillée/bloquée. C'est moins restrictifs qu'un système de verrou par table mais demande plus de ressources.
Pour en savoir plus sur le sujet, je te conseille de jeter un oeil au modèle de gestion des verrous et des transactions d'InnoDB.
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC