gpt4 book ai didi

python - 往返 MySql 的开销?

转载 作者:可可西里 更新时间:2023-11-01 07:48:36 27 4
gpt4 key购买 nike

所以我构建 Django 应用程序已经有一段时间了,喝了很酷的东西:只使用 ORM,从不编写自定义 SQL。

一旦您拥有大量用户特定内容(即照片、 friend 、其他数据等),网站的主页(用户将花费 80% - 90% 的时间的主要界面)就会变慢

所以我打开了 sql 记录器(预装了 pinax,我只是在设置中启用了它)并想象一下当它报告超过 500 个数据库查询 时我的惊讶!!使用手工编码的 sql,我几乎不会在最复杂的页面上运行超过 50 个。

事后看来,这并不令人惊讶,但似乎这不太好。

...即使只有十几个查询需要 1 毫秒以上

所以我想知道,往返 mysql 有多少开销? django 和 mysql 在同一台服务器上运行,因此不应该有任何与网络相关的开销。

最佳答案

仅仅因为您正在使用 ORM 并不意味着您不应该进行性能调优。

我和您一样,有一个性能低下的应用程序主页。我看到我正在执行数百个查询来显示该页面。我查看了我的代码,并意识到通过谨慎使用 select_related(),我的查询会带来更多我需要的数据 - 我从数百个查询变成了数十个。

您还可以运行 SQL 分析器,看看是否有索引可以帮助您进行最常见的查询 - 您知道,标准数据库的东西。

缓存也是你的 friend ,我想。如果一个页面很多内容没有变化,是否需要每次都查询数据库?

如果一切都失败了,请记住:ORM 很棒,是的——您应该尝试使用它,因为它是 Django 的哲学; 但你没有嫁给它

如果您确实有一个用例,其中研究和调整 ORM 导航没有帮助,如果您确定您可以使用标准查询做得更好:在这种情况下使用原始 sql。

关于python - 往返 MySql 的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689031/

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