If we look at the previous posting about the causes of locks there are some published Best Practices that we should be following to reduce the deadlocks
- Large Lists (http://technet.microsoft.com/en-us/library/cc262813(v=office.12).aspx)
- No more the 2000 items per list view (Recommend using filtered views, if that doesn’t work then force a 2000 limit.
- Select a column to index, this is the column that users should be using for most filters or searches
- Enforce some kind of clean-up on lists or archival of those lists
- Crawl times
- Insure that we are not running two crawls at the same time
- Allow the system to clean up the Workflow history lists.
- Educate users on how to use SharePoint (http://office.microsoft.com/en-us/servers/or http://blogs.technet.com/b/hub/)
- Use 64-bit hardware for SharePoint and SQL
- Keep Site Collections as flat as is reasonable, this means that if a user needs a subsite that they should create it, but we should discourage the creation of multiple nested subsites. Instesad if possible have all subsites at the same level in the Site Collection.
- Keep sites and Site Collections clean delete or archive data that is no longer needed.
- Insure that you are not using to many Application Pools, this can cause you to over consume your memory.
- Maintain recommend database sizes and insure that you follow the recommendations in the capacity article http://technet.microsoft.com/en-us/library/cc262787(v=office.12).aspx#section3
- Insure that SQL is healthy and configured appropriately (http://technet.microsoft.com/en-us/library/Cc287996.aspx)
- Run database maintenance regularly.
- Insure that any queries in SharePoint returns a max of 2000 items, this could manifest itself thru list views, workflows, 3rd party applications, or admins running t-sql queries.
- Review all scheduled interaction in SharePoint, crawls vs Backup, etc