During my TechNet presentation on Tuesday evening (14/6/05 in Reading), I got a little side tracked and, while talking about partitioning in SQL 2005, found myself drawing my audiences’ attention to the fact that only one thread can access a database file at any one time. This fact being the foundation to my post http://blogs.technet.com/mat_stephen/archive/2005/02/02/365325.aspx
I misused the word access, more than one thread can access a database file at any one time for ‘read’. What I had in mind was the fact only one thread can open a file for ‘write’ – hence the blog entry above.
In the same breath I said that ‘not many people know this’, and they don’t. Not surprisingly I’ve since had some emails on this subject, all asking for more information.
For sometime I’ve struggled to find evidence for my assertions in this area – forgetting how I was first alerted to the issue and only being able to point to the win32 openfile api call for evidence.
Well I’ve now found the documentation I’ve been looking for all this sometime. At last I’ve found it again here http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/rdbmspft.mspx, look under the heading 'Parallel Data Retrieval'.
For those of you still keen to find out more in this area, I point you to another document dealing with a real scenario involving a SAN and the added complexity introduced by a SAN. Checkout this 10Tb project to detail the Human Genome @ http://www.microsoft.com/sql/techinfo/administration/2000/rosetta.asp.
Hope this helps clarify this important and little appreciated fact. I've seen the startling evidence myself - but I know this is not enough for you hard nose sceptics amongst you - I know this because I too am a hard nosed sceptic.