C# 需要专家';s关于决定数据库存储或文件库的评论

C# 需要专家';s关于决定数据库存储或文件库的评论,c#,multithreading,database-design,hard-drive,C#,Multithreading,Database Design,Hard Drive,嗨,朋友们 我有一个应用程序,它在数据库中存储了数千个文本文件,每个文件的平均容量为3KB。 另一个表存储了搜索频率更高的用户的简要信息。 由于有140000条记录,我的数据库性能变得太慢 我认为我可以将这些文件存储在磁盘上,从而将数据库大小减少约80%。存储这些文件仅用于显示(读取文件内容和显示),而不用于对其执行任何数据库操作。但我的网站有大约1000个用户,我担心如果我将这些文件存储在磁盘上,情况会变得更糟(磁盘I/O操作增加,在不同会话中读取文件可能会增加I/O,将硬盘头前后移动,加上我

嗨,朋友们
我有一个应用程序,它在数据库中存储了数千个文本文件,每个文件的平均容量为3KB。 另一个表存储了搜索频率更高的用户的简要信息。 由于有140000条记录,我的数据库性能变得太慢

我认为我可以将这些文件存储在磁盘上,从而将数据库大小减少约80%。存储这些文件仅用于显示(读取文件内容和显示),而不用于对其执行任何数据库操作。但我的网站有大约1000个用户,我担心如果我将这些文件存储在磁盘上,情况会变得更糟(磁盘I/O操作增加,在不同会话中读取文件可能会增加I/O,将硬盘头前后移动,加上我无法控制仅在一个线程中读取文件)

有人有相关经验吗?
请替我做这个决定。
谢谢谢谢

没有更多信息,我建议您更深入地了解性能问题的根源。您的查询是否高效,是否有索引支持您的查询


关于在数据库中存储文件,这很有趣。我只能给出我个人的意见,通常我宁愿将文件存储在磁盘上,而只是将对文件的引用即路径存储在数据库中。但是这里有很多优点/缺点,一个是备份比数据库备份要多。

更多的信息,我建议你深入研究性能问题的根源。您的查询是否高效,是否有索引支持您的查询


关于在数据库中存储文件,这很有趣。我只能给出我个人的意见,通常我宁愿将文件存储在磁盘上,而只是将对文件的引用即路径存储在数据库中。但是这里有很多优点和缺点,一个是备份需要跨越数据库备份。

< P>我会采纳你的意见。真的谢谢你

  • 在中安装至少8 gig内存 数据库服务器(更好的SQL缓存)

    将两个磁盘配置为镜像和 将日志文件放在 镜像上的应用程序数据库。不要 压缩此磁盘(更快的日志文件写入)

    将4个磁盘配置为Raid 10和 将db放置在Raid 10上。不要 压缩此磁盘(读取性能优于raid 5)

    将单个磁盘配置为 tempDB的位置。不要 压缩此磁盘(隔离tempDB的活动)

    仅在服务器上运行SQL Server

    确保您的数据库具有正确的 通过检查缺失的 索引动态管理视图

    确保数据库有维护计划 减少数据库和索引碎片

    提取并重新加载每个“文本” 数据库中的文件。之前 加载文本文件压缩(zip) 使用您的工具创建文件 选择。将“文本”文件存储在 varbinary数据类型。配置 应用程序来解压缩文件 显示前(减少SQL的磁盘IO以存储“文本”,并将网络IO存储到客户端)

    使用 已知用户数和搜索数

    将基准测试与实际测试进行比较 客户端使用期间的值

    监视磁盘等待、网络IO和 有规律的记忆


如果您的性能仍然很差,请联系SQLDBA来评估您的系统。我相信performanceDBA在这个网站上是从事合同业务的。

我会接受你的意见
请帮我做出这个决定。真的谢谢你

  • 在中安装至少8 gig内存 数据库服务器(更好的SQL缓存)

    将两个磁盘配置为镜像和 将日志文件放在 镜像上的应用程序数据库。不要 压缩此磁盘(更快的日志文件写入)

    将4个磁盘配置为Raid 10和 将db放置在Raid 10上。不要 压缩此磁盘(读取性能优于raid 5)

    将单个磁盘配置为 tempDB的位置。不要 压缩此磁盘(隔离tempDB的活动)

    仅在服务器上运行SQL Server

    确保您的数据库具有正确的 通过检查缺失的 索引动态管理视图

    确保数据库有维护计划 减少数据库和索引碎片

    提取并重新加载每个“文本” 数据库中的文件。之前 加载文本文件压缩(zip) 使用您的工具创建文件 选择。将“文本”文件存储在 varbinary数据类型。配置 应用程序来解压缩文件 显示前(减少SQL的磁盘IO以存储“文本”,并将网络IO存储到客户端)

    使用 已知用户数和搜索数

    将基准测试与实际测试进行比较 客户端使用期间的值

    监视磁盘等待、网络IO和 有规律的记忆


如果您的性能仍然很差,请联系SQLDBA来评估您的系统。我相信performanceDBA在这个网站上属于合同业务。

您当前的数据库设置是什么?这是在服务器、工作站还是“普通”计算机上运行的?您需要优化数据库。140K记录并没有那么多。您可能希望首先分析生产应用程序,看看它是否真的是数据库、网络延迟或连接到它的应用程序。这些文件是常用文件吗?缓存可以提高性能,这是另一个很好的选择。我在windows Server 2008上使用SQL Server 2008,我没有超过两个表描述,所以您认为是哪种优化,是的,这绝对是数据库的原因,在早期它运行平稳,但现在速度变慢,内存使用率高,我认为在这种情况下,普通的缓存是没有帮助的,或者你脑子里有了一些新的缓存策略!您当前的数据库设置是什么?这是在一台机器上运行的吗