小技巧:显示数据库查询耗时,改善开发者习惯

我会分享一系列在我开发生涯中积累的有用且容易实现的小技巧,本文是此系列的第一篇。sql

不少缘由均可能致使网站运行缓慢,但这其中最多见的就是在数据库查询耗时太多。目前,数据库查询可能在网页渲染过程当中起着很重要的做用(网页上的内容总得从某处获取),可是有时候 一些没必要要的亦或没有优化好的查询会影响网页渲染的速度。数据库

例如:框架

· 查询的数据根本没有被使用ide

· 查询时未使用索引优化

· 单次查询能够实现的功能却作了屡次查询网站

· 慢且复杂的查询spa

然而有一个简单的机制能够间接的预防而且修复此类问题:调试

用‘诊断框’在每个网页显示数据库查询的次数以及消耗的总时间。sqlalchemy

下面这个示例是我本身的一个网站(截图 或者 这个页面)底部的一个样例诊断块:索引

Request Details:
DB – Queries: 4, Time: 5.66 ms

我在全部开发项目以及生产环境(用个人帐号登录)中都加了相似的诊断框。对于一个大型网站来讲,你极可能想当你从办公室或者×××访问网站时启用诊断框。若是你愿意的话,诊断框中还能够增长一些更具体的信息(即将运行的查询语句以及其它过程花费的时间等等)。

好处

· 我能够及时的看到是否数据库致使了网页加载缓慢。 在生产环境作调试时这一点尤其有效,由于有些数据库查询在生产环境和开发环境中的表现大相径庭。

· 当增长新功能的时候,我能够直观的感觉到新增的数据查询是否轻量级的。这能帮助我在这个新功能带来的好处和它在访问数据时所消耗的时间这二者之间作一个 权衡。另外它还能够提醒我有些查询语句须要手动优化或者作一些缓冲。

· 当我参加的项目中使用了ORM框架时,它能告诉我ORM产生的查询语句是否正是我所指望的。

· 当删除一个功能或者作了一些数据缓冲,我能够经过它来确认查询数量是否如愿有所降低。

尾声

固然,这些点子不是我发明的,并且有些诊断模式几乎是每一个大型网站的常见功能。若是你尚未用到它们,我强烈建议你花点时间去实现它们。有这样的一个‘诊断盒’不会使你的网站自己变快,但它能在开发人员之间激发一些更好的习惯,而且长期来看,它可能对你的网站的速度有巨大的影响!

有兴趣的能够看下我在上述网站使用的sqlalchemy的 查询计数代码 。

发布于 10:04

相关文章
相关标签/搜索