一直對數據庫的優化一竅不通大家談論最多應該是怎樣從 SQL 查詢語句和索引下手去優化對於索引很多高手都寫過很多文章看來看去也沒悟出什麼東西不過今天我修改了數據表的幾個主鍵(可以認為就是聚焦索引)並且添加了一些非聚焦索引SQLServer 的性能立刻提高了上去
對於 Users 表原先是把主鍵設置為 UserID(自增字段)字段上通過事件跟蹤器發現對於 Users 表的查詢比較耗費資源(可以從 CPUReadsDuration這三相值來判斷)而且所有的查詢基本上都是對 Users 表的 name 來查詢的即 SELECT * FROM users WHERE name = xxx既然WHERE後邊跟的是 name就應該把聚焦索引設置到 name 字段上並且 name 字段是不重復的所以可以這樣修改修改前的耗費忘了記錄了修改之後的耗費大大降低了CPUReadsDuration分別為如果WHERE後面跟的字段是可重復的就不能作為聚焦索引這時可以為該字段添加非聚焦索引
按照這個思路來優化其他表
select count(*) from mark where name = xxx
優化前
CPU / Reads / Duration(下同)
/ /
/ /
/ /
優化後 對mark表加入name以及infoid的非聚焦索引
/ /
/ /
/ /
/ /
/ /
/ /
select * from comment where infoid =
優化前
/ /
/ /
優化後comment表給infoid加非聚焦索引
/ /
/ /
/ /
/ /
對所有表都經過類似的優化後性能立刻提升了上去CPU 從原先的 % 左右降低到 % 左右由此可見對於表的設計應該非常重視主鍵的選擇不要為每個表都來一個 int 類型的自增字段作為主鍵另外就是跟蹤數據庫查詢根據具體的查詢來建立非聚焦索引
不清楚 ASPNET 到底能承受多大的頁面浏覽量雖然這個問題問的太寬泛但總體印象上對 ASPNET 的性能有所懷疑大型 Web 好像也沒有幾個用 ASPNET 做的dangdang 網是的聖誕節的時候去訪問老是出現頁面打不開的故障DoNews 也是不過也是經常出現那非常熟悉的錯誤頁面至於 MySpace沒有太多關注
看到關於豆瓣的一組數據很是羨慕一台Web服務器運行 Lighttpd每天處理萬個request峰值每秒處理個request 一台應用服務器運行Python每天處理萬PV 數據庫服務器運行MySQL負載情況沒有介紹
對於特別注重速度的web年代裡覺得 PythonPHPROR 這些輕量級的框架來做 Web 開發將更加適合再加上免費的 Linux 平台以及 MySQL數據庫最理想不過了微軟也搞了一個 MVC 框架呵呵是不是覺察到了一些危機了呢?
From:http://tw.wingwit.com/Article/program/net/201311/12883.html