SQL Server 2008 Filestream Performance-Win32 API
最近可能要做一个项目,规模不小,但我负责的部分不大,就是开发一些管理工具,用于对Partition和FileGroup的管理。
用户的这个数据库就是用于管理文件的,但是数量相当的大,预估每天在60G左右, 在使用FileStream的时候就要考虑一下了。本身FileStream就是Varbinary的数据类型,我们可以使用T-SQL语句进行操作,也可以使用Win32 API(那天听说了一个新名词RBS-Remote Blob Storage),这样一来我们如何确定适用那种方式进行操作就成了问题。
如何选择主要要看数据的大小了,一般来说如果数据小于2M的使用使用T-SQL的方式会比较快一些,如果数据大小大于2M Win32 API会快一些,另外还要注意的就是Win32 API不支持部分更新,也就是说无法进更新varbinary中部分的数据,所以选择以何种方式使用Filestream的时候也要注意。
另外在还要注意的是我们在更新数据byte的的时候都会有一个缓存的数组,这个数组的大小对于性能也有很大的影响,这个大小最好能够与磁盘扇区的大小对齐,在之前我的代码中512和4096时的性能差异就很大了。
Read the complete post at http://blog.joycode.com/svs/archive/2008/05/19/115119.aspx