gpt4 book ai didi

python - EC2 微型实例上的 MySQL 性能不佳

转载 作者:行者123 更新时间:2023-11-29 04:45:50 25 4
gpt4 key购买 nike

我有一个小型网络应用程序,它使用 Pyhon/Flask 和一个 MySQL 数据库来存储数据。我有一个学生数据库,大约有 3000 行。尝试加载该页面时,加载需要很长时间,有时甚至需要一分钟左右。大约 20 秒,这真的很慢,我想知道是什么原因造成的。 This是发出任何请求之前服务器的状态,this当我尝试加载该网站时发生。

正如我所说,这不是太多的记录,我很困惑为什么这样无效。我正在使用 Ubuntu 12.04,Ver 14.14 Distrib 5.5.32,使用 readline 6.2 mysql 版本的 debian-linux-gnu (x86_64)。其他查询运行良好,例如列出名字以某个字母开头的学生大约需要 2-3 秒,这是可以接受的。这显示了表格的一部分,所以我猜有些地方没有正确优化。

我的.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"

提前感谢您的宝贵时间和帮助!

最佳答案

@datasage 是对的——微实例只能做这么多。您可以尝试为您的 mysql 数据库启动第二个微实例。在单个微型实例上同时运行 apache 和 mysql 会很慢。

根据我的经验,当使用 AWS 的 RDS 服务 (mysql) 时,您可以在用于测试的微实例上获得合理的性能。根据实例运行的时间长短,有时您可以让爬虫对您的站点执行 ping 操作,因此它可以帮助在安全策略中将其 IP 限制到您的计算机。

看起来您的数据库结构并不那么复杂 - 您可以在电子邮件字段上添加索引,但我怀疑除非您的数据集超过 5000 行,否则不会有太大区别。如果您使用的是 sqlalchemy ORM,这看起来像:

class Scores(base):
__tablename__ = 'center_master'
id = Column(Integer(), primary_key=True)
email = Column(String(255), index=True)

关于python - EC2 微型实例上的 MySQL 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com