大数据集是否需要存储过程?

Jos*_*ton 5 database sql-server performance database-design stored-procedures

我刚开始为一家规模合理的公司开展我的第一份开发工作,该公司必须管理大量数据.平均数据库是6GB(从我到目前为止看到的).其中一项工作是报道.目前的工作方式是 -

数据被复制并传输到数据仓库.从那里,收集特定报告所需的所有数据(数千行和大量表)并汇总到仓库中的报告数据库.这一切都是通过存储过程完成的.

请求报告时,将调用存储过程,该过程将数据复制到PHP读取的报告数据库以显示数据.

我根本不是存储过程的忠实粉丝.但是我所说过的人坚持认为存储过程是唯一的选择,因为通过编程语言直接查询数据的速度非常慢(想想30分钟?).安全也是一个问题.

所以我的问题是 - 当你有一个非常大的数据集时,是否需要存储过程?对于如此大量的数据,查询是否确实需要很长时间,或者DB服务器是否存在问题或数据的排列方式(以及索引?).我感觉有些不对劲.

Joh*_*som 12

使用存储过程的原因是SQL Server在称为计划缓存的内存区域中缓存为执行过程而创建的执行计划.当该程序随后在稍后重新运行时,执行计划有可能被重新使用.

存储过程的运行速度不会超过同一个查询,作为一批T-SQL执行.重复使用的执行计划可以提高性能.对于实际的T-SQL,查询开销将是相同的.

将数据卸载到报告数据库是一种典型的追求,但是您可能需要检查报告数据库上的索引策略,因为它可能需要与OLTP平台的索引策略完全不同.

您可能还希望考虑使用SQL Server Analysis Services来满足您的报告要求,因为它听起来像您的报告包含大量数据聚合.存储和处理数据以实现快速计数和分析正是SSAS的全部内容.听起来您的业务是时候构建数据仓库了.

我希望这有帮助,但请随时要求进一步的细节.

干杯,约翰