嗨,朋友们
我有一个应用程序,在数据库中存储数以千计的文本文件,平均每个3KB。和另一个表,存储关于他们的简短信息,搜索频率更高。有140,000条记录,我的数据库性能变得太慢。
我认为我可以将这些文件存储在磁盘上,使我的数据库大小减少约80%。存储这些文件的目的只是为了显示(读取文件内容和显示),而不是为了对它们进行任何数据库操作。但是我的网站有大约1000个用户,我担心如果我将这些文件存储在磁盘上,情况会变得更糟(磁盘I/O操作增加,在不同的会话中读取文件可能会增加I/O来回移动硬盘磁头,而且我无法控制仅在一个线程中读取文件)
有谁有相关经验吗?
请帮我做这个决定。谢谢,谢谢
发布于 2010-12-05 06:02:58
我会从字面上理解你的评论Please make this decision for me. THANKS THANKS。
将两个磁盘配置为镜像,并将应用程序数据库的日志文件放在镜像上。不压缩此磁盘(更快的日志文件写入速度)
将4个磁盘配置为Raid 10,并将数据库放在Raid 10上。请勿压缩此磁盘(读取性能优于raid 5)
配置单个磁盘作为tempDB的位置。不压缩此磁盘(隔离tempDB的活动)
仅在服务器上运行SQL server。
通过检查缺失的索引动态管理视图,确保数据库具有正确的索引。
确保您的数据库具有减少数据库和索引碎片的维护计划
从数据库中提取并重新加载每个“文本”文件。在加载文本文件之前,使用您选择的工具压缩(zip)该文件。以varbinary数据类型存储“text”文件。将应用程序配置为在显示之前解压缩文件(减少SQL存储'text‘的磁盘IO和客户端的网络io )
使用已知数量的用户和搜索对您的应用程序进行基准测试
定期将基准测试与client usageMonitor磁盘等待、网络IO和内存期间的实际值进行比较。
如果您的性能仍然很差,请联系SQL DBA来评估您的系统。我相信这个网站上的performanceDBA是做合同生意的。
发布于 2010-12-04 23:39:08
在没有更多信息的情况下,我建议您更深入地研究性能问题的根源。您的查询是否有效,是否有索引来支持您的查询。
关于在数据库中存储文件,这很有趣。我只能给出我个人的观点,通常我宁愿将文件存储在磁盘上,只存储对文件ie的引用。数据库中的路径。但这里有许多利弊需要考虑,其中一件事是您的备份需要跨越的不仅仅是数据库备份。
https://stackoverflow.com/questions/4354206
复制相似问题