效能優化:
1.分析階段:確定實時性需求、響應時間的需求、硬體的配置
2.設計階段:最關鍵的階段,關係到以後所有效能除錯的過程,設計完成可以進行初步索引設計,為整個系統打下好的基礎。
1.遵循四正規化 屬性不能拆分,完全函式依賴,消除傳遞依賴 對於每乙個x->y,x都能找到乙個候選碼( 若關係中的某一屬性組的值能唯一地表示乙個元組,而其真子集不行,則稱該屬性組為候選碼)。
2.合理的冗餘
3.主鍵設計 相當於唯一索引
4.外來鍵設計 外來鍵是最高效的一致性維護方法,資料庫的一致性要求,依次可以用外來鍵、check約束、規則約束、觸發器、客戶端程式,一般認為,離資料越近的方法效率越高。
5.欄位設計 數字型比字串快,資料型別盡量小,盡量不允許為null,少用text,image
6.資料庫物理儲存和環境的設計
在設計階段,可以對資料庫的物理儲存、作業系統環境、網路環境進行必要的設計,使得我們的系統在將來能適應比較多的使用者併發和比較大的資料量。
這裡需要注意檔案組的作用,適用檔案組可以有效把i/o操作分散到不同的物理硬碟,提高併發能力。
7.系統設計 系統設計階段應該歸納一些業務邏輯放在資料庫程式設計實現,資料庫程式設計包括資料庫儲存過程、觸發器和函式。用資料庫程式設計實現業務邏輯的好處是減少網路流量並可更充分利用資料庫的預編譯和快取功能。
8、 索引的設計
在設計階段,可以根據功能和效能的需求進行初步的索引設計,這裡需要根據預計的資料量和查詢來設計索引,可能與將來實際使用的時候會有所區別。
關於索引的選擇,應改主意:
a、 根據資料量決定哪些表需要增加索引,資料量小的可以只有主鍵。
b、 根據使用頻率決定哪些字段需要建立索引,選擇經常作為連線條件、篩選條件、聚合查詢、排序的字段作為索引的候選字段。
c、 把經常一起出現的字段組合在一起,組成組合索引,組合索引的字段順序與主鍵一樣,也需要把最常用的字段放在前面,把重複率低的字段放在前面。
d、 乙個表不要加太多索引,因為索引影響插入和更新的速度。
編碼階段:
1.只返回需要的資料
2.盡量少做重複的工作
3.注意事務和鎖 原子性、一致性、隔離性、永續性
4.注意臨時表和表變數的用法 關於臨時表產生使用select into和create table + insert into的選擇,我們做過測試,一般情況下,select into會比create table + insert into的方法快很多,但是select into會鎖定tempdb的系統表sysobjects、sysindexes、syscolumns,在多使用者併發環境下,容易阻塞其他程序,所以我的建議是,在併發系統中,盡量使用create table + insert into,而大資料量的單個語句使用中,使用select into。
盡量使用索引 不要對索引字段進行運算,而要想辦法做變換 不要對索引字段進行格式轉換 不要對索引字段使用函式 要對索引字段進行多欄位連線
效能優化總結
儘量減少布局的層級,有選擇的使用功能較為複雜,效能較低的viewgroup,如 relativelayout,但推薦使用relativilayout來替換多重巢狀的linearlayout,減少布局層級。推薦使用,和viewstub來布局。避免在view的ondraw中進行大量的操作。主要體現於兩個...
效能優化總結
最近在查效能優化,總結了以下幾條 第一 在接受訊息 socket地方 打上每條訊息的消耗 這個能快速定位到 哪些函式消耗的比較高 第二 在遊戲主迴圈中,打上沒幀的消耗 如果消耗是穩定網 的 說明一定有物件建立了沒有刪掉 並且這個物件還在 主 迴圈中 可以檢查一下 註冊的各地地方的定時器 陣列是否有物...
js 效能優化總結
1 盡量不要使用 eval alert hello world var sayhi new function alert hello world settimeout alert hello world 100 全域性變數 for x in list 3 減少dom訪問。重複訪問dom低效 for ...