2009-10-29 4 views
0

J'ai installé MySQL 5.1.40 distribution de source (exécutable 64 bits x86_64) suivant ces instructions by Hivelogic et la gem mysql (2.8.1) en utilisant ARCHFLAGS = "- arch x86_64". Je l'utilise pour le développement de Ruby on Rails et mon problème est que même si MySQL fonctionne de toutes les façons, il est extrêmement lent.
Effectuez cette comparaison avec sqlite3 lors de l'exécution d'un db de rake standard: migrez en créant environ 15 tables.MySQL extrêmement lent sous Snow Leopard

MySQL:

temps rake db: migrer
0m4.882s réelles

utilisateur 0m1.426s sys

sqlite3:

temps rake db: migrer
0m2.282s réel
utilisateur 0m1.501s
sys 0m0.255s

Il faut aussi considérer que sur les 1.5s du temps d'exécution sur chaque test chargement du cadre de rails qui signifie que de sqlite3 exécute les tâches SQL dans environ 0.5-1 tandis que MySQL nécessite plus de 3 pour le même ensemble de tâches.

N'est-ce pas tout simplement faux? Quelle peut être la cause de cela? Quelqu'un rencontre le même problème?

J'ai installé et réinstallé mysql et mysql/gem ruby ​​plusieurs fois, mais toujours avec le même résultat ... :(

Mon installation Snow Leopard est une mise à niveau et non une nouvelle installation. Pourrait-il être la cause du problème? Certains des bibliothèques obsolètes?

Merci!

Répondre

0

à partir des données de votre question, il semble que vous comparez les bananes et des oranges.

Plus précisément, avez-vous des preuves que la res ults sont même hors de la ligne? Des comparaisons avec d'autres plateformes exécutant les mêmes tests?

Est-ce un test qui correspond à ce que vous voulez faire? C'est à dire. testez-vous quelque chose qui est pertinent pour l'ensemble typique de tâches que vous ferez normalement ou que vous essaierez d'optimiser pour une tâche ponctuelle qui se produit pendant l'installation?

Notez également que SQLite et MySQL ont des profils de performances radicalement différents. SQLite est une base de données mono-utilisateur, non client/serveur, alors que MySQL est généralement configuré pour agir dans un rôle client/serveur. Au-delà de profils de performances totalement différents, cela conduit également à des caractéristiques d'évolutivité complètement différentes.

+0

Merci pour votre réponse bbum! La seule comparaison que j'ai avec une autre plate-forme est que j'ai exécuté le même test (qui utilise le db: migrate) sous Leopard et il est maintenant beaucoup plus lent sous Snow Leopard avec un temps d'exécution de 1 min. 4 min dans Snow Leopard. J'ai aussi remarqué que mysql semble "étouffer" ce qui n'est pas arrivé sous Leopard.Si j'essaie d'insérer 200 enregistrements - les premiers 30-40 vont très vite (~ 0.8ms) mais ensuite ils ralentissent drastiquement à ~ 200ms par insertion même si la complexité entre les premiers inserts et les derniers est la même. – mrD

+0

OK-- Je suggère d'utiliser 'sample' sur Leopard et Snow Leopard pour obtenir une sorte d'aperçu des cycles du CPU. Cela peut également être dû à des changements de synchronisation de disque entre les deux systèmes d'exploitation. Dans tous les cas, il est courant d'avoir besoin d'accorder une base de données à un système particulier. – bbum