데이터 저장을 위해 Pyhon/Flask와 MySQL 데이터베이스를 사용하는 하나의 작은 webapp가 있습니다. 나는 약 3000 개의 줄이있는 studentsdatabase를 가지고있다. 해당 페이지를로드하려고하면로드하는 데 많은 시간이 걸리고 때로는 1 분 정도 걸립니다. 그것의 약 20 초, 정말 천천히 그리고 나는 이것이 무엇을 일으키는 지 궁금해하고 있습니다. This은 요청이 이루어지기 전의 서버 상태이고 해당 사이트를로드하려고하면 this이 발생합니다.EC2 Micro 인스턴스의 MySQL 성능이 좋지 않음
내가 말했듯이 이것은 너무 많은 레코드가 아니며, 왜 이것이 비효율적인지에 의아해합니다. 나는 Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
mysql 버전으로 우분투 12.04를 사용하고있다. 다른 쿼리는 잘 실행됩니다. 예를 들어 이름이 문자로 시작하는 목록 학생은 2-3 초 정도 걸릴 수 있습니다. 그것은 테이블의 일부분을 보여 주므로 뭔가가 올바르게 최적화되지 않았다고 생각합니다.
My.cnf 파일은 located here입니다. 나는 약간의 물건을 시험해 보았고, 바닥에 몇 줄을 추가했지만 너무 많은 성공을 거두지 않았다.
실제 쿼리
은 SQLAlchemy의 수행, 이것은이를로드하는 데 사용되는 특정 코드된다 : 이것은 SQL을 생성 할 것으로 보인다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())
:
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
인덱스가 없기 때문에 데이터베이스 작업에 비교적 익숙하지 않으며이를 사용하지 않았습니다. 알케미가 생성 한 쿼리를 질문에 추가했습니다. –