我有一個小型webapp,它使用Pyhon/Flask和MySQL數據庫來存儲數據。我有一個學生數據庫,大約有3千行。嘗試加載該頁面時,加載需要很長時間,有時甚至需要一分鐘左右。大約20秒,這真的很慢,我想知道是什麼造成這種情況。 This是在發出任何請求之前服務器的狀態,當我嘗試加載該網站時發生this。在EC2 Micro實例上的MySQL性能不佳
正如我所說的,這是沒有太多的記錄,我感到這是爲什麼無效不解。我正在使用Ubuntu 12.04,與Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
mysql版本。其他查詢運行良好,例如列出名稱以某個字母開頭的學生大約需要2-3秒,這是可以接受的。這表明了表格的一部分,所以我猜測某些東西不是最優化的。
my.cnf文件是located here。我嘗試了一些東西,在底部添加了一些行,但沒有太多的成功。
的實際查詢由SQLAlchemy的完成,這是用來載入這些具體代碼:
score = db.session.query(Scores.id).order_by(Scores.date.desc()).correlate(Students).filter(Students.email == Scores.email).limit(1)
students = db.session.query(Students, score.as_scalar()).filter_by(archive=0).order_by(Students.exam_date)
return render_template("students.html", students=students.all())
這似乎是生成的SQL:
SELECT student.id AS student_id, student.first_name AS student_first_name, student.middle_name AS student_middle_name, student.last_name AS student_last_name, student.email AS student_email, student.password AS student_password, student.address1 AS student_address1, student.address2 AS student_address2, student.city AS student_city, student.state AS student_state, student.zip AS student_zip, student.country AS student_country, student.phone AS student_phone, student.cell_phone AS student_cell_phone, student.active AS student_active, student.archive AS student_archive, student.imported AS student_imported, student.security_pin AS student_security_pin, (SELECT scores.id \nFROM scores \nWHERE student.email = scores.email ORDER BY scores.date DESC \n LIMIT 1) AS anon_1 \nFROM student \nWHERE student.archive = 0"
預先感謝您時間和幫助!
你在桌子上有什麼索引?你能得到由sqlalchemy生成的實際查詢嗎? – datasage
沒有索引,我對數據庫的使用相對比較陌生,並沒有使用它們。在問題中添加了由鍊金術生成的查詢。 –