Bonjour à tous !
J'ai à mon actif une base de données de plus de 25 Go et qui ne cesse de croitre ...
Sauf qu'aujourd'hui, toute requête légèrement complexe sur une table de 8 Go demande un fou de chargement.
Bien que tous les index soient corrects (C'est la commande Explain qui le dit :lol: ), il en reste que tout SELECT trop long bloque la table (Lock Table)... Normal me direz-vous ?
Sauf que lorsqu'une requête (mise à jour Crontab) met 400 secondes (LEFT JOIN sur 9 très grosses tables et une réponse de 80 000 résultats), c'est 400 secondes de coupure pour les visiteurs !
C'est très génant !
Par conséquent, j'ai essayé d'analyser la situation et j'ai creusé ... jusqu'à trouver une solution : créer un petit script BASH me permettant de copier les tables que j'ai besoin en une table temporaire en passant directement par les fichiers (MYD, MYI et FRM) pour une copie de plusieurs Gigas en moins de 10 minutes. (beaucoup plus long par CREATE TABLE TEMPORARY)
Sauf que ce système est assez contraignant !
Certes, ca fonctionne à merveille ... les mises à jour sont beaucoup plus rapide ... sauf que c'est très lourd !
Il faut à chaque fois copier les tables, avec une réparation de plusieurs heures à chaque fois car elles sont corrompus ...
Bref, c'est un système qui fonctionne bien, mais qui est TROP lourd ...
D'où ma question : connaissez-vous un système de duplication de tables ?
Voici le principe :
La base A est la principale. Les visiteurs lit tout dessus les "petites données".
La base B est la secondaire. Une réplique parfaite de la base A est réalisée en temps réel, sauf que toutes les mises à jour se feront par l'intermédiaire de cette base B pour ne pas bloquer la base A.
Par exemple :
Je rajoute une ligne dans la table X de la base A. Il faut que la même ligne se rajoute à la table X de la base B.
En fait, c'est un peu un système de RAID ... mais je ne connais pas bien son principe ...
Quelqu'un aurait-il l'amabilité de m'expliquer ?
Je vous remercie sincèrement de l'attention que vous portez à mon message ainsi qu'à toutes les réponses qui pourront suivre.
PS : Merci de ne pas me dire qu'il faut revoir les requêtes de mise à jour ... je l'ai déjà fait et comme je l'ai expliqué au dessus : les EXPLAIN me donne de très bon résultats !
J'ai à mon actif une base de données de plus de 25 Go et qui ne cesse de croitre ...
Sauf qu'aujourd'hui, toute requête légèrement complexe sur une table de 8 Go demande un fou de chargement.
Bien que tous les index soient corrects (C'est la commande Explain qui le dit :lol: ), il en reste que tout SELECT trop long bloque la table (Lock Table)... Normal me direz-vous ?
Sauf que lorsqu'une requête (mise à jour Crontab) met 400 secondes (LEFT JOIN sur 9 très grosses tables et une réponse de 80 000 résultats), c'est 400 secondes de coupure pour les visiteurs !
C'est très génant !
Par conséquent, j'ai essayé d'analyser la situation et j'ai creusé ... jusqu'à trouver une solution : créer un petit script BASH me permettant de copier les tables que j'ai besoin en une table temporaire en passant directement par les fichiers (MYD, MYI et FRM) pour une copie de plusieurs Gigas en moins de 10 minutes. (beaucoup plus long par CREATE TABLE TEMPORARY)
Sauf que ce système est assez contraignant !
Certes, ca fonctionne à merveille ... les mises à jour sont beaucoup plus rapide ... sauf que c'est très lourd !
Il faut à chaque fois copier les tables, avec une réparation de plusieurs heures à chaque fois car elles sont corrompus ...
Bref, c'est un système qui fonctionne bien, mais qui est TROP lourd ...
D'où ma question : connaissez-vous un système de duplication de tables ?
Voici le principe :
La base A est la principale. Les visiteurs lit tout dessus les "petites données".
La base B est la secondaire. Une réplique parfaite de la base A est réalisée en temps réel, sauf que toutes les mises à jour se feront par l'intermédiaire de cette base B pour ne pas bloquer la base A.
Par exemple :
Je rajoute une ligne dans la table X de la base A. Il faut que la même ligne se rajoute à la table X de la base B.
En fait, c'est un peu un système de RAID ... mais je ne connais pas bien son principe ...
Quelqu'un aurait-il l'amabilité de m'expliquer ?
Je vous remercie sincèrement de l'attention que vous portez à mon message ainsi qu'à toutes les réponses qui pourront suivre.
PS : Merci de ne pas me dire qu'il faut revoir les requêtes de mise à jour ... je l'ai déjà fait et comme je l'ai expliqué au dessus : les EXPLAIN me donne de très bon résultats !