小技巧:顯示數據庫查詢耗時,改善開發者習慣

我會分享一系列在我開發生涯中積累的有用且容易實現的小技巧,本文是此係列的第一篇。sql

不少緣由均可能致使網站運行緩慢,但這其中最多見的就是在數據庫查詢耗時太多。目前,數據庫查詢可能在網頁渲染過程當中起着很重要的做用(網頁上的內容總得從某處獲取),可是有時候 一些沒必要要的亦或沒有優化好的查詢會影響網頁渲染的速度。數據庫

例如:框架

· 查詢的數據根本沒有被使用ide

· 查詢時未使用索引優化

· 單次查詢能夠實現的功能卻作了屢次查詢網站

· 慢且複雜的查詢spa

然而有一個簡單的機制能夠間接的預防而且修復此類問題:調試

用‘診斷框’在每個網頁顯示數據庫查詢的次數以及消耗的總時間。sqlalchemy

下面這個示例是我本身的一個網站(截圖 或者 這個頁面)底部的一個樣例診斷塊:索引

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

我在全部開發項目以及生產環境(用個人帳號登錄)中都加了相似的診斷框。對於一個大型網站來講,你極可能想當你從辦公室或者×××訪問網站時啓用診斷框。若是你願意的話,診斷框中還能夠增長一些更具體的信息(即將運行的查詢語句以及其它過程花費的時間等等)。

好處

· 我能夠及時的看到是否數據庫致使了網頁加載緩慢。 在生產環境作調試時這一點尤其有效,由於有些數據庫查詢在生產環境和開發環境中的表現大相徑庭。

· 當增長新功能的時候,我能夠直觀的感覺到新增的數據查詢是否輕量級的。這能幫助我在這個新功能帶來的好處和它在訪問數據時所消耗的時間這二者之間作一個 權衡。另外它還能夠提醒我有些查詢語句須要手動優化或者作一些緩衝。

· 當我參加的項目中使用了ORM框架時,它能告訴我ORM產生的查詢語句是否正是我所指望的。

· 當刪除一個功能或者作了一些數據緩衝,我能夠經過它來確認查詢數量是否如願有所降低。

尾聲

固然,這些點子不是我發明的,並且有些診斷模式幾乎是每一個大型網站的常見功能。若是你尚未用到它們,我強烈建議你花點時間去實現它們。有這樣的一個‘診斷盒’不會使你的網站自己變快,但它能在開發人員之間激發一些更好的習慣,而且長期來看,它可能對你的網站的速度有巨大的影響!

有興趣的能夠看下我在上述網站使用的sqlalchemy的 查詢計數代碼 。

發佈於 10:04

相關文章
相關標籤/搜索