我应该在SQL数据库中创建我的表列有多大(二进制(xy))如果我想存储相机拍摄的照片 - 这意味着可变大小到...我不知道.. 7MB?但如果我宁愿将大小限制在2MB左右,我会的。你的意见是什么?
修改
或者我应该在哪里存储它们?我正在使用asp.net mvc构建一个Web画廊。
答案 0 :(得分:3)
您所说的是varbinary
列。当然,如果您使varbinary
大于8000,它会立即将其转换为varbinary(max)
列,这意味着它可以存储最多2GB。这与SQL Server如何存储行(每页8k)有关。
因此,无论如何,每一行都将列存储为指向位的指针。所以,如果我是我,我会做的是将图像存储在文件系统中,并将这些文件的位置存储在数据库中。
答案 1 :(得分:0)
如果要在SQL Server中存储图像,请使用varbinary(max)列类型。它允许高达2Gb(如果我记得)。
此外,当您使用SQL Server 2008(我不知道快速版本)时,您可以使用新的filestream数据类型。
当然,将其存储在数据库中的最大好处是,您只需要备份一件事,并且您不会遇到文件系统和数据库不同步的问题。新的文件流类型是一个有趣的开发,因为它可以帮助缓解这些问题。
将这些数据存储在数据库中的缺点是会给数据库带来额外的压力,特别是如果数据库和Web服务器之间的带宽已经很紧张的话。
答案 2 :(得分:0)
正如其他人已经在评论中所说的那样(尽管有警察,你们应该得到答案)你们真的必须有一些杀手的理由将图像存储在数据库中。否则只需将它们放在文件系统中即可。
特别是在从Web服务器传送图像的情况下也是如此。 Web服务器在从文件系统提供图像方面比从代码中提取图像更有效。