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

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

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

例如:

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

· 查詢時未使用索引

· 單次查詢可以實現的功能卻做了多次查詢

· 慢且複雜的查詢

然而有一個簡單的機制可以間接的預防並且修復此類問題:

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

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

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

我在所有開發項目以及生產環境(用我的賬號登陸)中都加了類似的診斷框。對於一個大型網站來說,你很可能想當你從辦公室或者×××訪問網站時啓用診斷框。如果你願意的話,診斷框中還可以增加一些更具體的信息(即將運行的查詢語句以及其它過程花費的時間等等)。

好處

· 我可以及時的看到是否數據庫導致了網頁加載緩慢。 在生產環境做調試時這一點尤爲有效,因爲有些數據庫查詢在生產環境和開發環境中的表現截然不同。

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

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

· 當刪除一個功能或者做了一些數據緩衝,我可以通過它來確認查詢數量是否如願有所下降。

尾聲

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

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

發佈於 10:04


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章