Ich bin etwas neu zu diesem Thema, wenn jemand mir helfen kann, wäre das genial.SQLAlchemy-Marshmallow langsam zu JSON Abfrage und Serialisierung
Also habe ich einige Modelle in SQLAlchemy für eine Flask-App eingerichtet, an der ich arbeite. Ich habe die db (derzeit SQLite) mit einigen gefälschten Daten gefüllt, während ich die App baue und bin irgendwie überrascht, wie langsam einer meiner Anrufe ist.
Ich habe eine Tabelle in der DB namens Menü. Die Speisekarte hat ein Kind, Abschnitte, die ein Kind, Elemente hat. wie folgt aus:
- Menü
- Sections
- Artikel
- Sections
Das Objekt I bin abfragt, 1 Menü, die 4 Abschnitte hat, die Jeder hat 10 Gegenstände.
In meiner Flask-Route frage ich die DB mit Menu.query.get (id) und serialisieren sie mit Marshmallow zu JSON.
Ganze Sache dauert 250ms geben oder nehmen auf meinem lokalen Rechner zurück.
Also meine Frage (n) ist/sind: Ich bin ich dumm in Sorgen über 250ms? Was ist der Schuldige für die Langsamkeit? - Schlechtes Schemadesign? - SQLite/Verwenden eines SQL Db? - Etwas anderes?
Jede Hilfe würde sehr geschätzt werden.
Zusätzlich. Ich hatte ursprünglich 2 Ebenen tiefer (Elemente haben Optionen, die Auswahlmöglichkeiten haben), aber es dauerte ungefähr eine volle Sekunde, um sie abzuschließen, also habe ich diese auf einen separaten Endpunkt verschoben, wenn der Benutzer ein bestimmtes Objekt anfordert.
werden sie faul geladen. Ich werde mich umstellen und schauen, ob es Verbesserungen gibt. Vielen Dank. – GMarsh
wow. das hat sicherlich geholfen. bis zu 50-75ms bei dieser Änderung. nur neugierig, irgendwelche Nachteile auf eifrig laden vs faul? – GMarsh
Die Datenbank wird einen JOIN durchführen, so dass mehr Arbeit geleistet wird, aber wenn Sie wissen, dass die Daten von der Abfrage benötigt werden, ist dies der effizienteste Weg, um die Daten zu erhalten (im Gegensatz zu einer separaten "Lazy" -Abfrage).Alternativ können Sie den Standard als lazy loading verwenden und die Option jointeload() für Abfragen verwenden, die Sie verknüpfen möchten. – Naishy