Components To Consider With SharePoint 2010 Performance

There are several components that must be considered when taking into account the holistic SharePoint 2010 environment. (All referenced posts are internal posts, so I won’t be sending you to a bunch of random sites :) )


There is a limit of 20 indexes that can be created for each list. Importantly, this includes the compound indexes. If you add indexes to a list then it can affect some of the overall operations. Therefore, it is strongly recommended that you don’t any more indexes than you need to. SharePoint requires at least three index slots when eDiscovery features are enabled (side note). It is a good idea to always leave at least three index slots open so that you can create new ones after if you need them.

For more information regarding indexing, please see this post.

SharePoint Server 2007 & Large Lists

With SharePoint Server 2007 you were limited to only 2,000 per list. You were also encouraged to have a maintenance performance plans for out of the box list views as well as certain forms of operations. There are many large lists that can be successfully managed with SharePoint Server 2010. Custom Web Parts are used to perform queries that need to be filtered. There is a small number of results within the content.

Performance decreases as the out of box list view increase. This is because the query for additional items isn’t indexed and so more time is needed to carry out the query successfully. SQL Server uses table locks that solve issues about operations when you have more than 5,000 items.

For more information regarding large list design, please see this post.


Office SharePoint Server 2007 folders allow you to separate files as well as to maintain the optimal view performance. It is encouraged that you put no more than 2,000 items in each container. If you have more in there that can result in slower performance. The folders are a vital part of the organization and they will be easier to work with if you divide them into smaller groups.

For more information regarding folder design in SharePoint 2010, please see this post.

Single Indexing

If you want to filter items you can use single indexing. This process involves manually creating indexes for metadata that you can query with. You can use single indexing for Web Parts, list views, and to create custom queries. For each column index that you add though there will be more of your resources in the database used.

For more information regarding indexing, please see this post.


When you have a large list you need to use search so that you can efficiently retrieve the content. The default search box is the primary way to use it. Web Parts are created to access large list content. The downside to this is that the results are only current when a crawl as been done recently. The information won’t always be up to date for this reason.

For more information regarding search in SharePoint 2010, please see this post.


You can use views to configure a number of different performances. They come from the many items listed here (and in other posts). You can use it as a means of filtering to set up data for less than 100 items. This is a better format than the entire list. If the columns being filtered aren’t indexed though you won’t see that huge benefit in overall performance.

For more information regarding views in SharePoint 2010, please refer to this post.

Record Center

The record center allows for long term storage of items you need to have for legal reasons. They content will always remain the same though and not be updated. Such items can be routed into one of two folders restricted or confidential. In the restricted folder a user must have permission to access the document. It will remain in the folder for a period of ten years.

With a confidential folder more users typically have access to what it is in it. These documents need to be kept for a period of seven years. This helps to keep the number of unique permissions lower and it also makes it easier to manage permissions. All of the items that are in the record center need to be rooted and classified as confidential or restricted on the metadata.

Auto Balancing & Content Organizer

The content organizer is the central component for organizing content with a repository. That is what allows for the content organizer to be submitted and then for a user to upload the document to the final state. This offers the ability to do several things such as automated routing of the documents based on the metadata between sites, routed documents and new folders are made automatically, and automatic balancing of the number of items per folder.


Fixing Access Denied Errors With SharePoint 2010 Timer Jobs

It is important to realize before we get started that this error was also present within SharePoint 2007. When creating timer jobs, it is important to understand the relationships between the SPSecurity.RunWithElevatedPrivileges method and the associated SPWebApplication object. When using SPSecurity.RunWithElevatedPrivileges, it will not allow modification of the SPWebApplication since it is persisted to the configuration database. However, other proxy objects are exempt from this such as SPSite ‘s and SPWeb ‘s. SPSecurity.RunWithElevatedPrivileges allows the elevation to just the content database, NOT the configuration database (which has the SPWebApplication property bag) which is generally more locked down.

The easiest way to fix this is to impersonate the user account for proxy objects (assuming you are using a current context to reference the application property) with an account that has the wss_content_application_pools database role for the config database since this will have elevated rights for stored procedures and what not. This will allow you to modify your timer jobs easily. If you want to be really lazy, just use the same account as the central admin app pool which inherently provides the required access to the configuration database.