几天前我被问到这个问题(tel intvw),我被抽空了。我说执行计划存储在服务器中,所以它称为存储过程。但我不确定我是否正确。
我之后的研究表明,SQL Server 内部有专门用于存储执行计划的计划缓存或过程缓存。在 that article还有对所谓的编译计划 stub 的引用。所以看起来是先创建编译计划 stub ,然后创建执行计划。
所以我想知道的是简要的
如果您可以将我推荐给现有的 SO 问题或其他文章,那也应该没问题。
最佳答案
Why is a Stored Procedure called stored procedure
因为它是程序即 存储 在一个数据库中。
在其他语言/环境中,通常不会存储可以执行的过程。它们以字节码或汇编程序编译。 IE。该程序不再以其原始文本形式存在。无法像在这些环境中创建时那样检索原始过程(尽管逆向工程可以检索该过程的本质)。
当您在 SQL Server 中创建存储过程时,它完全以原始全文形式存储,相同的缩进、相同的大小写、相同的行,包括注释等等。您可以完整地检索用于创建存储过程的文本。
Simplified explanation about executing a stored procedure
当 SQL Server 想要执行一个存储过程时,它会首先检查缓存,看它是否已经被编译过。如果它在缓存中找到一个条目(以执行计划的形式),它将使用这个条目来执行。如果没有找到条目,它会将过程编译为执行计划,将其存储在缓存中以备后用,然后使用执行计划执行它。
有些情况会强制重新编译存储过程,例如当执行计划缓存被清除(架构更改、统计更新等)或向编译器提供强制重新编译的命令时(存储过程
WITH RECOMPILE
,查询选项 OPTION(RECOMPILE)
,...)。
关于sql-server - sql存储过程为什么叫存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35265691/