本文主要介紹SharePoint列表庫的效率問題,一直以來以為闕值5k,超過會線性下降,需要分文件夾存放;或許這是之前版本的描述,但是2013版本通過測試,真心不是這么一回事兒。
下面,簡單介紹下自己的測試過程:
1、創建一個測試列表,Data Test如下圖:
2、創建控制台程序,添加插入數據代碼,如下:
3、添加的代碼:
using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["Data Test"]; StringBuilder sbDelete = new StringBuilder(); sbDelete.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>"); for (int i = 0; i < 2; i++) { sbDelete.Append("<Method>"); sbDelete.Append("<SetList Scope=\"Request\">" + list.ID + "</SetList>"); sbDelete.Append("<SetVar Name=\"ID\">New</SetVar>"); sbDelete.Append("<SetVar Name=\"Cmd\">Save</SetVar>"); sbDelete.Append("<SetVar Name=" + "\"urn:schemas-microsoft-com:office:office#Title\">Test Data " + i.ToString() + "</SetVar>"); sbDelete.Append("</Method>"); Console.WriteLine("Num. " + i.ToString()); } sbDelete.Append("</Batch>"); Console.WriteLine("Start Time:" + DateTime.Now.ToString()); web.ProcessBatchData(sbDelete.ToString()); Console.WriteLine("End Time:" + DateTime.Now.ToString()); Console.WriteLine("Data Insert complate..."); }
4、查看添加1w數據,耗時3分27秒,如下圖:
5、查看列表設置,超出列表默認闕值,如下圖:
6、嘗試刪除列表,發現報錯,因為超過闕值,如下圖:
7、管理中心修改列表闕值,如下圖:
8、插入5w條數據,花費時間18分47秒,如下圖:
9、插入數據時的任務管理器,控制台占用很大內存;
總 結
一直以來,以為SharePoint列表庫超過5000不分文件夾存放,性能會呈線性下降,真的測試了才發現效率可觀。當在測試列表插入100w數據時,列表視圖單頁1k個項目,翻頁速度不到秒的級別,可以說很快。
當然,自己的數據量達到百萬級別,但是數據結構簡單,並沒有附件類型,可能會使效率更快,有一定誤差,接下來有時間還會做類似的測試,分享結果給大家參考。