Ich habe eine Client-Anwendung erstellt, die HTTP verwendet, um über eine einfache API mit einem Python 2-Server zu kommunizieren. Der Server verwendet das ORM von SQLAlchemy ziemlich umfangreich, um die Daten für diese HTTP-Anforderungen bereitzustellen. Das Problem ist, dass meine CPU-Auslastung ziemlich hoch ist, selbst mit nur wenigen aktiven Clients. Dieser Server sollte in der Lage sein, ein paar hundert Clients gleichzeitig mit etwa einer Anfrage pro Sekunde pro Client zu bedienen, so dass es immer noch überschaubar sein sollte (oder ich hoffe).Wie verbessert man SQLAlchemy Leistung?
Wie kann ich die Leistung verbessern? Ich weiß das Problem ist das ORM als cProfile zeigt dies ganz deutlich. Eine einzige Abfrage führt anscheinend ungefähr 10000 Python-Anweisungen aus, was ziemlich merkwürdig erscheint. Ich habe versucht, verschiedene Datenbank-Engines/Backends einzubauen und habe den Interpreter nur zum Spaß in Pypy geändert, aber das hat offensichtlich nicht zum ursprünglichen Problem beigetragen und auch die Performance nicht verbessert.
Was mache ich hier falsch? Ich hoffe wirklich, das ist ein "gut, duh!" Problem.
Sollten meine Beziehungen von einem anderen Typ sein? eifrig, faul, dynamisch, etc? Im Moment spezifiziere ich nichts speziell.
Hilfe sehr geschätzt.
werfen Sie einen Blick auf meine Antwort http://stackoverflow.com/questions/1171166/how-can-i-profile-a-sqlalchemy-powered-application/1175677#1175677 für einige Stellen zu starten – zzzeek