小技巧:顯示數(shù)據(jù)庫查詢耗時,改善開發(fā)者習(xí)慣
我會分享一系列在我開發(fā)生涯中積累的有用且容易實現(xiàn)的小技巧,本文是此系列的第一篇。
很多原因都可能導(dǎo)致網(wǎng)站運行緩慢,但這其中最常見的就是在數(shù)據(jù)庫查詢耗時太多。目前,數(shù)據(jù)庫查詢可能在網(wǎng)頁渲染過程中起著很重要的作用(網(wǎng)頁上的內(nèi)容總得從某處獲取),但是有時候 一些不必要的亦或沒有優(yōu)化好的查詢會影響網(wǎng)頁渲染的速度。
例如:
查詢的數(shù)據(jù)根本沒有被使用
查詢時未使用索引
單次查詢可以實現(xiàn)的功能卻做了多次查詢
慢且復(fù)雜的查詢
然而有一個簡單的機制可以間接的預(yù)防并且修復(fù)此類問題:
用‘診斷框’在每一個網(wǎng)頁顯示數(shù)據(jù)庫查詢的次數(shù)以及消耗的總時間。
下面這個示例是我自己的一個網(wǎng)站(截圖 或者 這個頁面)底部的一個樣例診斷塊:
Request Details:
DB – Queries: 4, Time: 5.66 ms
我在所有開發(fā)項目以及生產(chǎn)環(huán)境(用我的賬號登陸)中都加了類似的診斷框。對于一個大型網(wǎng)站來說,你很可能想當你從辦公室或者VPN訪問網(wǎng)站時啟用診斷框。如果你愿意的話,診斷框中還可以增加一些更具體的信息(即將運行的查詢語句以及其它過程花費的時間等等)。
好處
我可以及時的看到是否數(shù)據(jù)庫導(dǎo)致了網(wǎng)頁加載緩慢。 在生產(chǎn)環(huán)境做調(diào)試時這一點尤為有效,因為有些數(shù)據(jù)庫查詢在生產(chǎn)環(huán)境和開發(fā)環(huán)境中的表現(xiàn)截然不同。
當增加新功能的時候,我可以直觀的感受到新增的數(shù)據(jù)查詢是否輕量級的。這能幫助我在這個新功能帶來的好處和它在訪問數(shù)據(jù)時所消耗的時間這兩者之間做一個 權(quán)衡。另外它還可以提醒我有些查詢語句需要手動優(yōu)化或者做一些緩沖。
當我參加的項目中使用了ORM框架時,它能告訴我ORM產(chǎn)生的查詢語句是否正是我所期望的。
當刪除一個功能或者做了一些數(shù)據(jù)緩沖,我可以通過它來確認查詢數(shù)量是否如愿有所下降。
尾聲
當然,這些點子不是我發(fā)明的,而且有些診斷模式幾乎是每個大型網(wǎng)站的常見功能。如果你還沒有用到它們,我強烈建議你花點時間去實現(xiàn)它們。有這樣的一個‘診斷盒’不會使你的網(wǎng)站本身變快,但它能在開發(fā)人員之間激發(fā)一些更好的習(xí)慣,并且長期來看,它可能對你的網(wǎng)站的速度有巨大的影響!
posted on 2014-10-17 12:50 順其自然EVO 閱讀(423) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄