最近在優化一個比較大型的高併發網站,收益頗多,經驗分享給你們。 數據庫
1. 表字段分割。常常訪問的表、行數量大的表,切記保持最少長度字段,不在select列表的數據,請作垂直分割。舉例:文章表,不要將文章正文部分的內容存在文章信息表裏,能夠將這個字段獨立存儲到另外一張表articleContent(articleID,articleContext)。由於這個字段長度大,影響查詢時的行掃描。 併發
2. 頻繁更新的字段作表的垂直分割。在作更新操做時,通常會作行鎖定,有的會設置成表鎖定。那麼在作query的時候,更新操做沒完成前,全部查詢都會排隊等待。 高併發
3. 儘可能作cache字段,減小表關聯查詢。 優化
4. 對一些非重要、非實時性強的數據,作定時更新,而不是實時更新。 網站
5. 索引。好的索引對查詢的效果能夠達成百上千倍,但前提是好的數據表結構設計。索引太多容易引發更新變慢。注意where和order by裏的字段。關於索引,我會開專題講解優化。 設計
6. 按期重建索引。使用必定時間後,會有索引碎片的問題,這就如磁盤碎片整理。 orm
7. 過濾慢查詢,通常系統查詢時間超過0.1s的都要檢查。 索引
8. 善用explain分析查詢成本。進行了全表掃描的語句都要考慮優化,如幾百內的小數據量表除外。 配置
9. 配置參數優化。如臨時表size、鎖機制、數據庫引擎類型。 select