How to avoid the Top 5 SharePoint Performance Mistakes
출처: <http://apmblog.compuware.com/2010/03/18/how-to-avoid-the-top-5-sharepoint-performance-mistakes/>
Sharepoint로 프로그램 짤때 몇가지 반드시 지켜야할 규칙이 있다.
대표적인것이 SPSite 와 SPWeb 개체를 사용하고 나면 반드시 Dispose해야 한다는것등등…
그외 프로그램 짤때 습관적으로 짜던 패턴들이 성능에 악영향을 미치는 것을 잘 보여주는 예제들이 있다고 한다.
물론 개인적으로 검증은 안해 봤지만… 굳이 나쁘다는데 이렇게 쓸 필요는 없으니까…
- 이렇게 쓰지 말란다…. 계속적으로 데이터베이스에 왔다갔다하며 부담을 준다나 어쨌다나…
SPList activeList = SPContext.Current.List;
for(int i=0;i<100 && i<activeList.Items.Count;i++) {
SPListItem listItem = activeList.Items[i];
htmlWriter.Write(listItem["Title"]);
}
이렇게써라 한다. 필요한 속성들만 담아놓고 in-memory 상에서 해결한다구...
SPListItemCollection items = SPContext.Current.List.Items;
for(int i=0;i<100 && i<items.Count;i++) {
SPListItem listItem = items[i];
htmlWriter.Write(listItem["Title"]);
}
- SPQuery 사용시 주의점
SPQuery 쓸때는 반드시 RowLimit 와 가져올 필요한 Field만 정의해서 사용하라.
이건 머 당연한 소리이니 ..
query.RowLimit = 100; // we want to retrieve 100 items
query.ViewFields = "<FieldRef Name='ID'/><FieldRef Name='Text Field'/><FieldRef Name='XYZ'/>";
세부적인 부분은 sharepoint CAML designer 를 통해서 확인해 가면서 CAML / SiteDataQuery 만들면 되겠다.
설명 : http://karinebosch.wordpress.com/2012/12/13/caml-designer-for-sharepoint-2013-released/
다운로드 : http://www.biwug.be/
- SPSite/SPWeb
위에서 설명했던 메모리 누수 발생
뭐 이런 형태로 쓰시라…
Using(SPsite site= new SPsite(url))
{
}
Or
SPsite site = nulll
try
{
site = new SPSite(url);
}
catch(Exception ex)
{
}
finally
{
site.close();
site.dispose();
}
- Indexed Column이 반드시 빠른 것은 아니다.
그렇다고 반드시 느려 지는것도 아니고 적절히 사용해라 정도로 이해하면 될듯.
- Sharepoint 는 대용량 관계형 데이터 베이스가 아니다.
당연한 이야기로 Sharepoint 로 구현하기 적합한 업무만 적용하라..