2. 盡量使用ExcuteReader來讀取數據,ExcuteReader是效率最高的,在MicroSoft的PetShop 4.0全部數據訪問都是用ExcuteReader來實現的,除非你對非連接有特殊要求(如 SmartClIEnt智能客戶端等)。
3. 在非連接場合,用DataTable比用DataSet性能好,除非你要保存多個關系表。
4. 使用DataTable的ImportRow方法。
有些場合需要把大量數據從一個DataTable復制到另一個DataTable,使用DataTable的ImportRow方法可以大大提高性能,數據量少時沒多大分別,當數據量到一萬行以上時就可以明顯的提高,可以達到幾倍。
5. 把數據序列化為二進制文件方便傳輸。
我們在處理DataSet,DataTable對象時可以序列化為XML文件,如果要在網絡傳輸,XML文件會產生內存,網絡帶寬等資源問題。這時我們就可以把它序列化為二進制文件,這樣生成的文件會減少很多,代碼如下:
FileStream fs = new fileStream(@"XMLData.bin",FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs,XMLData);
fs.colse();
這樣生成的二進制文件稱為XMLBinary,用WINHEX直接打開還可以看到一些XML標記在裡面,如果數據量很大,這時加一行代碼:
XMLData.RemortingFormat = SerializationFormat.Binary;
這時生成的文件稱為TrueBinary文件,當處理大量(超過10000行)時生成的文件尺寸是XMLBinary的幾分之一。序列化的時候會自動保存模式,這樣解序過程很簡單。我還不知道解序比直接讀取XML性能會下降多少。
6. 合理利用連接池。
連接池對性能的提高有很大的作用,默認是打開的。默認的Min Pool Size是0,一般設為一個比較小的值,如5。Max Pool Size默認是100,大多數WEB站點也夠用,大型的適當增大。
7. 使用SQLCLR開發
如果你是專注開SQL Server系列那你應該去研究一下SQLCLR,它的功能非常強大,在很多場合都可以提高性能(特別是大型企業級應用)。
8. 通過靜態類來訪問APP.Config/Web.Config
我們有很多配置信息都是放在APP.Config/Web.Config,訪問都會很頻繁,這時建立一個靜態類,所有的屬性都通過靜態類來訪問,可以在一定程度提高性能,靜態類只實例化一次,而APP.Config/Web.Config會產生很多IO操作。
public static class MyWebConfig
{
static MyWebConfig()
{
ConnString =
ConfigurationManager.ConnectionStrings["Connection"].
ConnectionString;
}
public static string DbConnectionString
{
get
{
return ConnString;
}
}
}
好了 今天就寫到這裡, 有什麼錯誤和不足的地方希望指出,歡迎提出更好的意見,共同進步。