且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在SQL Server数据库中保存字体的***方法

更新时间:2022-12-18 09:15:42

Microsoft Research有一篇非常好的论文,名为

There's a really good paper by Microsoft Research called To Blob or Not To Blob.

经过大量性能测试和分析后,他们的结论是:

Their conclusion after a large number of performance tests and analysis is this:

  • 如果您的图片或文档通常小于256K,将它们存储在数据库VARBINARY列中会更有效

  • if your pictures or document are typically below 256K in size, storing them in a database VARBINARY column is more efficient

如果图片或文档的大小通常超过1 MB,则将它们存储在文件系统中的效率更高(并且使用SQL Server 2008的FILESTREAM属性,它们仍受事务控制并且属于数据库的一部分)

if your pictures or document are typically over 1 MB in size, storing them in the filesystem is more efficient (and with SQL Server 2008's FILESTREAM attribute, they're still under transactional control and part of the database)

在这两者之间,根据您的使用情况有些不同

in between those two, it's a bit of a toss-up depending on your use

如果您决定将图片放入SQL Server表中,我强烈建议使用一个单独的表来存储这些图片-不要将employee foto存储在employee表中-请将它们保存在单独的表中.这样,假设您并不需要总是选择员工图片作为查询的一部分,那么Employee表就可以保持精简,平均和高效.

If you decide to put your pictures into a SQL Server table, I would strongly recommend using a separate table for storing those pictures - do not store the employee foto in the employee table - keep them in a separate table. That way, the Employee table can stay lean and mean and very efficient, assuming you don't always need to select the employee foto, too, as part of your queries.

对于文件组,请查看文件和文件组体系结构以获取介绍.基本上,您可以从一开始就为大型数据结构使用单独的文件组创建数据库,或者稍后再添加其他文件组.我们称之为"LARGE_DATA".

For filegroups, check out Files and Filegroup Architecture for an intro. Basically, you would either create your database with a separate filegroup for large data structures right from the beginning, or add an additional filegroup later. Let's call it "LARGE_DATA".

现在,每当要创建一个新表需要存储VARCHAR(MAX)或VARBINARY(MAX)列时,就可以为大数据指定此文件组:

Now, whenever you have a new table to create which needs to store VARCHAR(MAX) or VARBINARY(MAX) columns, you can specify this file group for the large data:

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

查看有关文件组的MSDN简介,并试用它!

Check out the MSDN intro on filegroups, and play around with it!