2012-05-16 1 views
0

J'ai quelques problèmes sur mon serveur et j'ai besoin de l'améliorer. Tout d'abord, toutes les 2 heures, j'introduis/met à jour/supprime environ 1 million de résultats (dont toute la table) dans une table MyISAM et la table doit être accessible pendant ce temps depuis mon site web.php/MySQL - Problème avec une table toujours "cassée"

Environ 1 fois par mois, mon site ne s'affiche pas et le message "Impossible de se connecter à la base de données" s'affiche. Lorsque je redémarre le serveur, je peux voir que cette table doit être réparée.

Y at-il un moyen d'empêcher ma table d'être "cassée" ou de la réparer automatiquement? Devrais-je remplacer le moteur par innoDB? Pourquoi?

Deuxièmement, pendant cette opération mon site est vraiment lent et ce n'est pas seulement la page qui montre les résultats de cette table.

J'ai accès à mon serveur, mais je ne sais pas ce que je cherche ... L'opération est une tâche cron avec une belle de 19 ans

Je veux que mon site soit à la même vitesse que tout ce que je fais en arrière-plan. L'opération que je fais prend environ une heure à exécuter et cela n'a pas d'importance si cela prend plus que cela.

+0

Y a-t-il une raison pour laquelle vous travaillez sur la table en direct plutôt que de travailler avec une copie de celle-ci? –

+2

embaucher un professionnel db pour quelques heures. –

+0

@Brandt: Mais comment puis-je copier la deuxième table à la table en direct sans vider la table?Si je le vide, les utilisateurs ne verront aucun résultat pendant l'opération. – Marm

Répondre

0

L'opération est une tâche cron avec une belle de 19.

exécution de la tâche à une faible priorité ne fait pas beaucoup de sens.

toutes les 2 heures, j'insérer/mettre à jour/supprimer environ 1 million de résultats (Wich est tout le tableau)

Ceci est beaucoup de données. Votre vraiment pousser l'enveloppe de ce que le système est capable de faire. Quant à la façon de résoudre le problème ... combien d'efforts serait-il vraiment d'essayer d'utiliser innodb? IMHO moins de poster ici, en attente de réponses et de les essayer.

Il y a beaucoup d'autres choses que vous pourriez essayer - comme exécuter le travail cron contre un cliché de la table et l'échanger à la place de la table accessible par l'extrémité avant (mais à elle seule cela ne résout pas problème de corruption).

Certainement, j'ai rencontré des problèmes pour effectuer beaucoup de suppressions sur les tables MyISAM.

Je soupçonne qu'il existe peut-être plusieurs façons de résoudre le problème - mais vous n'avez pas donné beaucoup d'indications sur les raisons pour lesquelles vous avez besoin d'un tel roulement de données; Comme je doute que vos utilisateurs se penchent sur les détails de tous les enregistrements que vous modifiez, je pense que le plus gros gain serait de consolider les données avant qu'elles ne se retrouvent dans la base de données.

et ce n'est pas seulement la page qui montre les résultats de cette table.

Même lorsque vous désactivez l'accès aux données de chiffre d'affaires rapide via des tâches cron et des URL frontaux? C'est un problème complètement différent.

+0

sans la bonne chose, le serveur web est complètement inaccessible pendant que le travail cron fonctionne. – Marm

+0

Si je demande InnoDB, c'est parce que je veux avoir le pour et le contre avant de faire un gros changement comme ça. – Marm

+0

Vous avez dit que vous avez rencontré des problèmes lors de l'exécution de nombreuses suppressions sur les tables MyISAM. Serait-ce mieux avec innoDB? – Marm

Questions connexes