我应该缓存SQL数据库数据并在本地查询吗?还是让应用直接查询数据库?

时间:2019-04-30 06:50:46

标签: c# sql-server

我正在用C#进行申请,这是我将添加到我的投资组合中的第一个专业项目。该应用程序连接到远程SQL Server,并查询特定的表以获取诸如学生信息,课程详细信息以及每门课程的学生注册数据之类的数据。

我的问题是,即使查询大部分时间将返回单个记录,是否仍需要缓存表?只有3个表(“学生”,“课程”,“入学人数”),并且“课程”是唯一一个不会经常更改的表,至少与其他两个表相比不会如此。

简而言之,该应用程序是一个CLI,可让用户查看学校课程,注册的学生以及学生在这些课程中的相应注册。该应用程序具有输入学生信息(例如他们的姓名,他们的邮寄地址和联系信息)的功能,然后将其保存到SQL Server。课程详细信息(如CourseID,名称和说明)也是如此。以及注册,这是服务器在记录中加入StudentID和CourseID的位置,以显示指定的学生已注册该课程。

我当前正在运行MSSQL的本地实例,但是计划创建一个轻量级的虚拟机来容纳SQL Server以复制远程访问方案。

我认为,如果将应用程序部署到大规模环境中,则表将增长到很大,并且简单的查询可能需要一些时间才能远程执行。

如果我设想表会增长到很大的规模,我是否应该实现缓存系统?还是我应该出于良好实践而这样做?

到目前为止,查询执行非常快。但是,这可能是由于MSSQL安装是本地的,或者表当前仅包含2-3个示例数据记录。我会在将来的计划中创建更多示例数据,以查看执行时间是否可以管理。

3 个答案:

答案 0 :(得分:1)

缓存是一种优化工具。尝试避免过早优化,尤其是在您不知道(甚至无法猜测)要优化的内容(CPU,网络,高清速度等)的情况下。

请记住,数据库在搜索和检索数据方面非常有效。如果有足够的硬件可用,数据库引擎将始终胜过C#缓存结构。

当网络延迟(数据库和应用程序之间)成为问题或应用程序设计(在一个交互/页面加载中多个简单的DB调用到小表中)时,缓存是有用的。

答案 1 :(得分:0)

对于C#应用程序(台式机/移动设备)来说,缓存系统是一种很好的做法。但是,您可以为没有缓存系统的学校设计一个项目,因为它不会严重削弱应用程序的性能。是否要使用它取决于您。

答案 2 :(得分:0)

对于经常访问但不经常更改的数据类型,缓存是一个不错的选择。对于您而言,它适用于您说数据不会经常更改的“课程”。

但是,对于将来将要增长且将频繁插入/更新的数据而言,最好考虑优化存储和从数据存储中检索数据的方式。在您的情况下,“学生”表和“注册”表就是这样的表,随着时间的推移,预计其中会有很多插入/更新。

因此,最好编写优化的过程以在这些表上执行CRUD操作并在表上保留正确排序的索引。与缓存结果相比,它不仅可以提供更好的数据可管理性,还可以提供所需的性能。