我正在使用SQL Server 2000.我需要将图像存储在我的数据库中。我正在分析中,我是否需要在应用程序的数据库中创建一个新表,或者需要单独为图像上传创建一个新的数据库。如果我在同一个数据库中创建新表的性能如何?它会影响应用程序性能吗?将图像上传到新数据库而不是使用应用程序的数据库
回答
通常将图像存储在数据库中是一件坏事。你有没有想过在文件系统中存储图像,只存储它在数据库中的位置?文件系统被设计用来存储文件,所以对它们进行旁路和使用数据库几乎没有什么好处。
没有优势?简单的备份,与交易的整合。这个问题不像你所建议的那样黑白。 C.F. [blob或不blob - 数据库或文件系统中的大型对象存储?](http://research.microsoft.com/apps/pubs/default.aspx?id=64525) – 2011-03-18 12:57:23
好吧 - 没有优点,但没有什么优势 – 2011-03-18 12:58:07
微软研究院有一篇名为To Blob or Not To Blob的非常好的论文。
他们大量的性能测试和分析后得出的结论是这样的:
如果您的图片或文档通常低于在大小256K,将它们存储在数据库中
IMAGE
列更有效(截至SQL Server 2005中,IMAGE
已被弃用 - 使用VARBINARY(MAX)
代替)如果您的图片或文档通常超过1 MB的大小,将它们存储在文件系统更加高效
在这两个之间
,这取决于你的使用有点难以取舍的
如果你决定把你的照片到SQL Server表,我会强烈建议使用一个单独的表用于存储这些图片 - 不要将员工照片存储在员工表中 - 将他们保存在单独的表格中。这样一来,假设您并不总是需要选择员工照片作为查询的一部分,那么员工表可以保持精简并且意味着非常高效。
对于文件组,请查看Files and Filegroup Architecture的介绍。基本上,您可以从一开始就为大数据结构创建一个单独的文件组的数据库,或者稍后添加一个额外的文件组。我们称之为“LARGE_DATA”。
现在,只要你有一个新的表来创建一个需要存储IMAGE
列,可以为大型数据指定该文件组:
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介绍,和玩用它!
谢谢marc_s! – sri 2011-03-18 14:00:57
- 1. 将图像上传到数据库
- 2. 让用户使用JavaScript将图像上传到数据库中
- 3. 错误而上传图像数据库
- 4. 使用文件上传将图像(多个图像)更新到数据库
- 5. 如何使用ajax将图像上传到MySql数据库......?
- 6. 使用PHP将多个图像上传到MYSQL数据库中
- 7. 如何使用webmatrix 3将图像上传到数据库?
- 8. 使用BLOB抛出异常将图像上传到数据库
- 9. 如何使用php脚本将图像上传到数据库?
- 10. 使用bulkloader.yaml将数据上传到新应用程序
- 11. 使用动态数据将图像上传到数据库LinQ-to-SQL网站
- 12. 如何将数据从iphone应用程序上传到mysql数据库
- 13. 应用程序如何将数据上传到在线数据库
- 14. 上传图像到mysql数据库
- 15. ajax图像上传到数据库
- 16. 无法上传图像到数据库
- 17. 编辑上传图像到数据库
- 18. Csharp的数据库应用程序中使用Access数据库
- 19. 更新数据库的应用程序
- 20. 从Android应用程序传输数据到外部数据库
- 21. 上传数据到远程数据库
- 22. 如何上传图像并使用反应将其保存到数据库
- 23. 使用主数据库而不是特定数据库
- 24. 使用azure将数据上传到公司数据库
- 25. 如何使用java将数据上传到数据库?
- 26. 使用java将数据从excel文件上传到数据库
- 27. Android:使用php脚本将图像上传到远程MySql数据库
- 28. 更新Android应用程序数据库
- 29. 上传多个图像到数据库使用PHP
- 30. 无法上传图像到mysql数据库使用php
嘿,是否有可能只保存在数据库中的图像的网址?我认为这将是最有效的。 – clamchoda 2011-03-18 12:49:50