記團隊 效能優化 主題會

2021-08-30 23:53:10 字數 1562 閱讀 9942

很久沒有寫部落格了,呵呵,湊上週我主持了團隊的乙個效能優化的討論會的機會,把自己認為比較可行的記錄下來。

首先,我們團隊還是比較小,一共5個成員,我見證了團隊由2個人到5個人的發展,見證了團隊從一開始小專案都不能接,到現在專案應接不暇的過程。但是這個過程中,我們之前缺少了很多流程規範,缺少專案的質量控制,缺少專案的效能優化的考慮,缺少........這裡說都說不完。 雖然存在這麼多問題,但至少我們走在前進的路上。

之前我在專案開發中,就給大家明確指出:,我們團隊在開發方面的當前遇到的瓶頸:1. sql 方面的效能優化;2. 平台開發中小的細節的優化;(注:這裡平台是公司內部平台,暫不準備介紹) 這次我們就以【效能優化】的主題來討論一下。

效能優化,從上面我說的兩點來考慮優化,主要是以sql為主,平台暫不介紹,我們現在使用的資料庫以sql server2005為主。

一. 從編寫的sql的習慣上來說,之前我們每個人寫sql語句,直接在sql編輯區編寫自己的sql語句,只要能執行成功,就萬事ok了,根本就沒有考慮效能方面問題。因為我們自己在開發的時候(沒測試之前),資料量都是很小的,自己感覺不到。實際到客戶那邊,用一段時間就悲劇了。說到底還是編寫的習慣上面,強烈建議(1)在要除錯的sql語句前

加入set statistics io on語句,這樣用ems或者sql

server studio執行查詢

時會在執行的結果日誌裡生成表操作結果做為除錯參考:

1.* result : "100 rows fetched (219 ms) 2.

表'cm_material'。掃瞄計數1,邏輯讀取386 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。

3.表'pt_csgl'。掃瞄計數0,邏輯讀取2 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。"

強烈建議(2)執行「執行計畫」來檢查sql執行過程是否符合預期,是否用到索引。

在ems中點"explain query" ;studio裡有「顯示估計的執行計畫」按鈕

如下圖就是乙個執行計畫的效果圖,執行效果可以清楚看到執行過程

(二)從sql語句以及設計表的規則上:

1.盡量避免在where子句中對字段進行函式或表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄;

2.盡量避免使用!=或<>、is null或is not null、in ,not in等這樣的操作符,因為這會使系統無法使用索引,而只能直接搜尋表中的資料。

3.盡量使用數字型字段,我們開發人員大都喜歡把包含數值資訊的字段設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷。這是因為引擎在處理查詢和連線回逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了。

4.盡量避免在索引過的字元資料中,使用非打頭字母搜尋。這也使得引擎無法利用索引。

5.資料型別盡量小,這裡的盡量小是指在滿足可以預見的未來需求的前提下的。

6.少用text和image,二進位製字段的讀寫是比較慢的,而且,讀取的方法也不多,大部分情況下最好不用。

7.自增字段要慎用,不利於資料遷移。

這裡還只是對sql方面的簡單總結,先寫到這吧,呵呵。以後慢慢放些優化的測試例項

不要僅僅優化團隊層面效能

klaus leopold在 goto berlin 2015會議上發表了演講。在演講中他闡述了為什麼專注團隊層面的效能往往會導致區域性次優化 並不能在整個團隊層面提高敏捷。infoq對其進行了採訪,主要關於為什麼安裝 install 敏捷框架並不有助於提高敏捷 如何使用 kanban加強協作 和團...

不要僅僅優化團隊層面效能

klaus leopold在 goto berlin 2015會議上發表了演講。在演講中他闡述了為什麼專注團隊層面的效能往往會導致區域性次優化 並不能在整個團隊層面提高敏捷。infoq對其進行了採訪,主要關於為什麼安裝 install 敏捷框架並不有助於提高敏捷 如何使用 kanban加強協作 和團...

記一次前端效能優化

公司新做的乙個專案,寫完 第一次上測試環境測試,首屏載入要6秒左右的樣子,於是進行了一系列的優化,成功將首屏時間降到了200ms左右 今天寫篇文章,分享一下這次優化心得。專案背景 vue cli 2.x框架 一 技巧 二 壓縮 三 cdn 一 技巧 去掉多餘 減少請求數量 復用元件 二 壓縮 開啟w...