qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          小技巧:顯示數(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í)專欄

          <2014年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安平县| 聂拉木县| 沁水县| 阳春市| 临沂市| 瓦房店市| 新平| 朔州市| 黄浦区| 潮安县| 澄迈县| 乡城县| 托里县| 台湾省| 乌苏市| 油尖旺区| 岐山县| 雅安市| 新密市| 宜城市| 诸城市| 柳河县| 元氏县| 双牌县| 营口市| 上栗县| 玉树县| 永修县| 疏勒县| 临朐县| 旺苍县| 库伦旗| 渝北区| 连山| 长兴县| 龙州县| 仁寿县| 开江县| 吉隆县| 会宁县| 喀喇|