2012-06-09 2 views
0

Nous avons une très grande table Mysql qui est MyISAM. Chaque fois que nous exécutons la commande optimize table, la table est verrouillée et les performances sont affectées. La table n'est pas en lecture seule et donc créer des tables temporaires et les échanger peut ne pas fonctionner. Nous ne sommes pas en mesure de partitionner la table aussi.Optimiser la table sur les énormes tables mysql sans partition

Existe-t-il un autre moyen/outil pour optimiser la fonctionnalité de la table sans dégrader les performances? Toute suggestion serait d'une grande aide.

Merci d'avance.

+2

Y at-il une raison que vous utilisez 'MyISAM'? – Quassnoi

+0

Juste pour avoir une meilleure vitesse dans SELECT. –

Répondre

0

http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

Pour les tables InnoDB, OPTIMIZE TABLE est mis en correspondance avec ALTER TABLE, qui reconstitue la table (...)

Par conséquent, je n'attendre à une amélioration de passer à InnoDB, comme le suggère probablement Quassnoi.

Par définition, OPTIMIZE TABLE a besoin de quelques accès exclusif à la table, d'où les performances dégradées au cours OPTIMIZE'ation

Néanmoins, il pourrait y avoir quelques mesures à prendre pour réduire le temps pris par OPTIMIZE, selon la façon dont votre la table est "énorme":

  • Si votre table comporte de nombreux champs, il se peut que votre table doive être normalisée. Inversement, vous pourriez vouloir normaliser votre table en étalant vos colonnes dans plusieurs tables "plus étroites", et établir des relations un-à-un.
  • Si votre table contient de nombreux enregistrements, implémentez une partition «manuelle» dans votre code d'application. Une simple étape consisterait à créer une table "archive" contenant des enregistrements rarement mis à jour. De cette façon, vous n'avez besoin d'optimiser qu'un plus petit ensemble d'enregistrements (la table non-archive). Optimisez la commande de table verrouiller la table, il diminue les performances.
+1

L'amélioration serait que vous n'auriez pas besoin d'OPTIMISER la table. –

+0

Si vous gardez votre "jeu de données actif" (c'est-à-dire le tableau "non archivé" dans mon article ci-dessus) assez petit, il se pourrait très bien que vous n'ayez absolument PAS besoin de l'OPTIMISER. – RandomSeed

Questions connexes