Welcome to MSDN Blogs Sign in | Join | Help

Scaling to Extremely Large Lists and Performant Access Methods

The whitepaper for on understanding the best ways to access and work with extremly large lists is now available.  The paper titled "Working with Large Lists in Office SharePoint Server 2007" evaluates performance characteristics of large SharePoint lists under different loads and modes of operation. Although this whitepaper appears to be focused exclusively on SharePoint Server, you'll find when it comes to list scalability and programmatic access to lists there is little difference between WSS 3.0 and Office SharePoint Server 2007, especially since they use the same base lists.

The whitepaper walks through the test itself and how it was created, and provides the APIs that were used to test from browser access, SPList with For/Each, SPlist with SPQuery, SPlist with DataTable, SPListItems with DataTable, the Lists Web Service, Search and the PortalSiteMapProvider.  In addition to showing great charts of comparison of these programmatic methods, a results section in the paper shares the analysis and results.  The perf tester, Steve Peschka did a great job of pushing the product into the millions to show the real scale of lists and what methods work and what should be avoided.  It's a great read.

The conclusion of the paper and it's findings is shared here:

There is documented guidance for Microsoft® Office SharePoint® Server 2007 regarding the maximum size of lists and list containers. For typical customer scenarios in which the standard Office SharePoint Server 2007 browser-based user interface is used, the recommendation is that a single list should not have more than 2,000 items per list container. A container in this case means the root of the list, as well as any folders in the list — a folder is a container because other list items are stored within it. A folder can contain items from the list as well as other folders, and each subfolder can contain more of each, and so on. For example, that means that you could have a list with 1,990 items in the root of the site, 10 folders that each contain 2,000 items, and so on. The maximum number of items supported in a list with recursive folders is 5 million items.

In Office SharePoint Server 2007, virtually all end-user data is stored in a list. A document library, for example, is just a specialized list. The same is true for calendars, contacts, and other interfaces; they are all just customized versions of the basic SharePoint list, also referred to as an SPList. The individual items in the list are referred to as list items generally, or an SPListItem in an SPListItemCollection in the Office SharePoint Server 2007 object model. The findings in this article are equally important across all of the ways in which you store and work with data in a Office SharePoint Server 2007 site.

There are some scenarios in which you want to take advantage of the features of Office SharePoint Server 2007, but need to exceed the limit of 2,000 items per container. If you write your own interface for managing and retrieving the data, it’s quite possible that you can go past this limit without an adverse impact on farm performance. You may be able to manage larger lists to some extent by using views within Office SharePoint Server 2007 that are filtered such that there are never more than 2,000 items returned. Filtered views provide better performance than just trying to view one large flat list, but are not as efficient as breaking down the list into different containers if you are using the predefined browser-based Office SharePoint Server 2007 interface.

If you develop your own interface, there are several different ways to retrieve list data, each with different performance characteristics. Some data access methods perform very well, but are only useful in a limited number of scenarios. Finally, there are also performance tradeoffs that need to be made with other data maintenance tasks in addition to data retrieval.

I recommend Developers especially read this, but IT Professionals and Information Architects can learn what methods of access provide the best performance.

I've updated my list of key performance links with this paper.

Joel Oleson

Published Wednesday, July 25, 2007 7:56 AM by joelo

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Scaling to Extremely Large Lists and Performant Access Methods

Thanks for the info.

I'm guessing this applies to WSS as well?

Wednesday, July 25, 2007 8:56 AM by Martin Edelius

# re: Scaling to Extremely Large Lists and Performant Access Methods

Doh - I just read the summary so I didn't see that this *does* indeed apply to WSS as well.

So, if my first comment gets approved - disregard it. ;)

Wednesday, July 25, 2007 9:44 AM by Martin Edelius

# re: Scaling to Extremely Large Lists and Performant Access Methods

This is good information to have. However, I have a list containing around 3,500 contacts. When I attempt to use this list in conjunction with Microsoft Access, I get error messages. Could this be due to the constraint (or recommendation) of 2,000 items?

Wednesday, July 25, 2007 10:45 AM by cquick

# re: Scaling to Extremely Large Lists and Performant Access Methods

I just read the document, and I'm shocked: 50 seconds to delete a single item from a large list! Wow. Thanks for the honesty, though :)

Wednesday, July 25, 2007 11:07 AM by Peter {faa780ce-0f0a-4c28-81d2-3667b71287fd}

# *** NOW AVAILABLE *** White Paper: Working with Large Lists in MOSS 2007

*** NOW AVAILABLE *** White Paper: Working with Large Lists in MOSS 2007

Wednesday, July 25, 2007 11:27 AM by Andrew Connell [MVP MOSS]

# *** NOW AVAILABLE *** White Paper: Working with Large Lists in MOSS 2007

[via SharePoint Team Blog: Scaling to Extremely Large Lists and Performant Access Methods ] This could

Wednesday, July 25, 2007 11:53 AM by Mirrored Blogs

# *** NOW AVAILABLE *** White Paper: Working with Large Lists in MOSS 2007

This is *fantastic* information!!  

One thing that is noticibly absent from the discussion:  SPSiteDataQuery requests.  Given thh prevalance and popularity of the Content Query Web Part, this seems particularly relevant.  

Are there any other gotchas to be looking for?  For instance, custom field types, lookup fields, lists with many different fields or content types, etc?  Along the same lines - and per cquick's comment - it would be great to have a very brief discussion of data access methods used by applications such as Access, Excel, Outlook (for offline syncing), etc, as well as by common list interfaces in SharePoint - particularly the CQWP and DFWP/DVWP.

Wednesday, July 25, 2007 1:12 PM by planier

# re: Scaling to Extremely Large Lists and Performant Access Methods

Why do all the OTB web parts shipped with WSS v3 and MOSS implement obsolete connection interfaces?  They are multiple articles encouraging utilizing the new interfaces yet they are not programmatically comptabile to be connected with for example a ListViewWebPart.  Is it possible that this may change in a service pack?

Wednesday, July 25, 2007 10:58 PM by Mike

# White Paper: Working with large lists in Office SharePoint® Server 2007

[via SharePoint Team Blog: Scaling to Extremely Large Lists and Performant Access Methods ] Summary:

Thursday, July 26, 2007 3:13 AM by Marwan Tarek's blog

# re: Scaling to Extremely Large Lists and Performant Access Methods

Thanks, this info is handy to have when discussing with clients about the strong points and limitation of MOSS 2007.

Thursday, July 26, 2007 6:11 PM by Henry W

# re: Scaling to Extremely Large Lists and Performant Access Methods

It would be interesting to know why the browser-based access is so slow (by a factor of 10!).  Is it just the rendering/client stuff that uses up the 9x, or does it actually use a different data access method?

Also, it seems to me that there a 2 more tests that would be interesting:

* one for the browser based test where the view being used was grouped/categorised by Expense (I am assuming that the original used the basic flat view)

* a repeat of the tests on a 100,000 item library where the recommended folder structure was in place

(unless I have misread the paper and folder structures were in place - in which case do the tests without the folders)

Friday, July 27, 2007 3:26 AM by AndrewvR

# re: Scaling to Extremely Large Lists and Performant Access Methods

This is very useful. What wasn't clear though is the add and delete times and what the tests were. Are there time comparisons for the various ways to add - using web service or SPList.Items.Add()?

Friday, July 27, 2007 12:18 PM by umashinde

# re: Scaling to Extremely Large Lists and Performant Access Methods

Great information but as was mentioned in a previous comment it would be great to get some results for accessing data via SPSiteDataQuery. Also, the MOSS CrossListQueryCache object seems to be an efficient way to access list data but that never gets any mention.

Thursday, August 02, 2007 1:23 PM by Michael Reynolds

# re: Scaling to Extremely Large Lists and Performant Access Methods

So, would a custom page created in SharePoint designer be considered the Stadnard SharePoint Server 2007 Browser interface? I am using the DataFormWebPart to display list data in a list that could potentially contain 20K records (if we go this direction). So far, I haven't run into any slowness on this page (or when using the default view list page.

We are not currently up to a very large concurrent user base yet, but that number could be increasing in the future when this list is utilized more often (maybe a few hundred concurrent users). Could this be the reason why performance seems ok now?

Wednesday, October 24, 2007 11:09 AM by James

# Things to Consider for SharePoint Performance

SharePoint performance is a function of a number of factors. Some are obvious, some are less obvious,

Tuesday, October 21, 2008 3:37 AM by Arpan Shah's Blog

# [转载]SharePoint对象模型性能考量

SharePoint对象模型性能考量

作者AndreasGrabner译者朱永光发布于2009年6月1日上午3时46分

Wednesday, June 10, 2009 10:48 AM by pccai

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker