首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在SQL Server上"重新编译"存储过程意味着什么?

在SQL Server上,"重新编译"存储过程意味着重新生成存储过程的执行计划。当存储过程被修改或者数据库中的统计信息发生变化时,执行计划可能不再是最优的。重新编译存储过程可以帮助优化器生成更高效的执行计划,从而提高存储过程的执行性能。

在SQL Server中,可以使用以下语句来重新编译存储过程:

代码语言:txt
复制
EXEC sp_recompile '存储过程名称'

或者

代码语言:txt
复制
ALTER PROCEDURE 存储过程名称
WITH RECOMPILE
AS
BEGIN
    ...
END

需要注意的是,重新编译存储过程会导致其重新生成执行计划,可能会增加存储过程的编译时间。因此,在需要重新编译存储过程时,应该谨慎考虑,并在合适的时机进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL Server什么存储过程

什么存储过程?...预先存储好的SQL程序 保存在SQL Server中(跟视图的存储方式一样) 通过名称和参数执行   在数据库服务器端直接调用(DBA)   供应用程序调用(软件开发工程师) 类似于JAVA和...应用程序发送SQL过程 传输语句 -> 语法检查 ->语句优化 -> 语句翻译 -> 语句执行 应用程序调用存储过程或视图的过程 传输参数 -> 语句执行 存储过程的分类 系统存储过程...- 系统存储过程的名称一般以“sp_”开头 - 由SQLServer创建、管理和使用 - 存放在Master数据库中 - 类似于Java和C#语言类库中的方法 扩展存储过程 扩展存储过程的名称通常以...用户自定义存储过程 由用户自己的数据库中创建的存储过程 类似于C#语言中用户自定义的方法 调用存储过程 调用存储过程的语法 EXECUTE 过程名 [参数] EXEC 过程名 [参数]

7710

性能调优之CPU

Time:花费执行Winidows内核命令的处理器时间的百分比 Processor/ %User Time:花费处理应用程序的处理器时间的百分比 Process(sqlserver.exe)/...SQL Server以协同模式运行,必要的时候,SQL Server会让出资源给其他线程,通常来说,这种让步是临时的,但是,当长期、大量出现这种等待的时候,有可能意味着CPU存在压力,这个时候,可以检查...CPU资源,大量数据被加载到内存也会引起内存压力,导致计划缓存被移除,使得SQL Server必须重新编译执行计划,编译和生成执行计划也是高CPU开销操作。...5,参数嗅探 参数嗅探是指在创建存储过程,或者参数化查询的执行计划时,根据传入的参数进行预估并生成执行计划。...6,非参数Ad-Hoc查询 非参数Ad-Hoc查询,是指SQL Server 缓存了大量的只用一次的计划缓存,造成内存资源和CPU资源的浪费,可以使用存储过程、参数化的Ad-Hoc查询或启用

1.2K30
  • 存储过程的优缺点

    也就是说存储过程可以给我们带来运行效率提高的好处。 另外,程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本是不会出现什么问题的。...其威力和优势主要体现在:   1.存储过程创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。  ...我不倾向于尽可能使用存储过程,是这么认为的:        1.   运行速度:   大多数高级的数据库系统都有statement   cache的,所以编译sql的花费没什么影响。...2.执行计划(存储过程首次运行时将被编译,这将产生一个执行计划-- 实际是 Microsoft SQL Server存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)...........但sql server新版本,执行计划已针对所有 T-SQL 批处理进行了缓存,而不管它们是否存储过程中,所以没比较优势了。

    1.8K20

    内存数据库 mysql-mysql in memory_In-Memory:内存数据库

    内存数据库将原本存储Disk的数据,存储在内存中,利用内存的高速访问优势实现数据的快速查询和更新,但是,内存数据库,不仅仅是存储空间的变化,内存数据库引擎实现本地编译模块( )、交叉事务(Cross...支持本地编译的模式有:存储过程(SP),触发器(),标量值函数(Scalar )或内嵌多语句函数(Inline Multi- )。...,数据更新会持久化存储到DiskSQL Server重启之后,内存优化表的数据能跟根据存储Disk的副本还原。...选项 指定创建的内存优化表是非持久化的,这意味着Table Schema是持久化存储到Disk,但是,任何数据更新都不会持久化到DiskSQL Server重启之后,内存优化表的数据会丢失。   ...三,创建 SP   本地编译SP创建时编译成机器代码,整个SP以原子方式执行,这意味着,以SP为单位,整个SP中的所有操作是一个原子操作,要么执行成功,要么执行失败。

    2.1K10

    存储过程

    存储过程简介 什么存储过程存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字...存储过程的好处: 1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。...2.一个存储过程程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。 3.通过存储过程能够使没有权限的用户控制之下间接地存取数据库,从而确保数据的安全。...8.RECOMPILE: 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。...使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。 说明 升级过程中,SQL Server 利用存储 syscomments 中的加密注释来重新创建加密过程

    2K30

    MySQL进阶三板斧(二)揭开“存储过程”的神秘面纱

    存储过程(参数类型) 6. 存储过程(具体参数解析) ---- 一、什么存储过程 存储过程存储在数据库目录中的一段声明性SQL语句。...首次调用存储过程时,MySQL在数据库目录中查找名称,编译存储过程的代码,将其放置称为缓存的存储区中,然后执行该存储过程。...如果你同一会话中再次调用相同的存储过程,则MySQL将从缓存中执行存储过程,而无需重新编译它。 存储过程可以具有参数,因此你可以向其传递值并返回结果。...8.RECOMPILE: 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。...使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。 说明升级过程中,SQL Server 利用存储 syscomments 中的加密注释来重新创建加密过程

    98220

    T-SQL性能调整(一)--编译重新编译

    这里需要有个概念的介绍:执行计划缓存,         SQL Server 有一个用于存储执行计划和数据缓冲区的内存池。池内分配给执行计划或数据缓冲区的百分比随系统状态动态波动。        ...编译重新编译      SQL Server 有一个高效的算法,可查找用于任何特定 SQL 语句的现有执行计划。...SQL Server重新使用找到的任何现有计划,从而节省重新编译 SQL 语句的开销。如果没有现有执行计划,SQL Server 将为查询生成新的执行计划。...首先我们要知道什么情况下会有重新编译产生新的执行计划,我简单总结了几种比较常见的情况:      1.使用WITH REPCOMPILE 或者调用sp_repcompile,将不会缓存计划。     ...建议,尽量采用数据库默认的设置,不要在存储过程中假如不必要的set选项。

    93690

    SQL Server 执行计划缓存

    内存池中用于存储执行计划的部分称为过程缓存。 SQL Server 执行计划包含下列主要组件: 查询计划 执行计划的主体是一个重入的只读数据结构,可由任意数量的用户使用。这称为查询计划。... SQL Server 中执行任何 SQL 语句时,关系引擎将首先查看过程缓存中是否有用于同一 SQL 语句的现有执行计划。...SQL Server重新使用找到的任何现有计划,从而节省重新编译 SQL 语句的开销。如果没有现有执行计划,SQL Server 将为查询生成新的执行计划。...SQL Server自动删除执行计划 什么情况下会删除执行计划 没有人工手动清除缓存的情况下,如果出现内存不足的情况下SQL Server会自动清除一部分没被利用到的缓存计划。...猜测:SQL Server架构更改的时候通过检测执行计划已经对原先的执行计划进行了编译,所以新的查询中还是使用了第一次查询的执行计划。 如果有谁知道结果麻烦告知。

    1.9K90

    Apriso 开发葵花宝典之传说的完结篇GPM

    如果选中,则流程或操作再生失败,或操作脚本编译失败(部署过程中始终编译操作脚本),部署失败。...这意味着服务仅在一个节点运行,如果服务停止,Cluster Manager将尝试重新启动该服务。如果失败,它将启动另一个功能正常的集群节点的所有服务。...多数据库支持 可以生成一个包含数据库对象(不含数据的数据库表)的包,数据库视图、数据库包、数据库存储过程和数据库函数)和将在两种不同数据库类型正确部署的SQL脚本。...项时就会出现一个不同的额外选项: 举例AprisoSQL Server环境下,并设置替代数据库为Oracle类型,设置后Process builder开发时,就可以分别写入SQL Server和Oracle...存储库中存储项有两种方法: 全部内容-只适用于以下项目: GAC组件 文件 SQL脚本 存储过程(数据库对象) 自定义动作 配置文件 自上次生成包以来检测到的更改列表(“diff”)(以扩展名为.diff

    24310

    架构探索之会话状态、Web Farm、负载均衡器

    我们需要什么?我们需要存储信息。Session提供了一种将信息存储服务器内存的功能。它可以支持任何类型的对象与我们自己的自定义对象一起存储。...InProc会话模式将其会话数据存储应用程序域的内存对象中。这由应用程序池中的工作进程处理。所以如果我们重新启动服务器,我们将丢失会话数据。...该服务器可能运行在同一个系统,但它不在运行Web应用程序的主应用程序域。这意味着如果你重新启动你的ASP.NET进程,你的会话数据将仍然存在。...我已经详细解释了配置部分使用这些文件的情况。这是Web场景中最有用的状态管理。 什么时候应该使用SQLServer会话模式? SQL Server会话模式是一种更可靠和安全的会话状态管理。...SQL Server:这是另一种方法,我们可以Web场中使用它。我们需要首先配置数据库。所要求的步骤已经被解释了。 ? 如上图所示,所有Web服务器会话数据将存储单个SQL Server数据库中。

    1.4K30

    Windows提权系列中篇

    MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。无论这个DLL什么位置,函数的声明是什么样的。...sa权限利用 微软的SQL Server提权过程中往往也会给我们很大帮助,尤其是当找到SA用户的密码时,系统权限就基本到手了。...对于 SQL Server 用户和应用程序开发人员来说,CLR 集成意味着您现在可以使用任何 .NET Framework 语言(包括 Microsoft Visual Basic .NET 和 Microsoft...要通过此种方式来执行命令,也有几个前提: 1.SQL Server能启用CLR并可以创建自定义存储过程 2.SQL Server当前账号具有执行命令/代码所需要的权限 具体测试步骤如下: 1.新建项目...右键项目,选择添加->新建项,新建SQL CLR C# 存储过程。 2.编写代码。 ? 3.编译

    2.4K00

    数据库

    如何加锁,何时加锁,加什么锁,你可以通过hint手工强行指定,但大多是数据库系统自动决定的。这就是为什么我们可以不懂锁也可 以高高兴兴的写SQL。 悲观锁:利用数据库本身的锁机制实现。...存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集。经编译存储在数据库中。...【存储过程优点概括】 ① 存储过程创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。...③ 重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。...④ 远程存储过程SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程

    65520

    MSSQLSQL Server 提权手法详解

    SQL Server 提权手法详解 环境:Win10 、SQL Server 2008 一、SQL Server 的安装 介绍: ​ Microsoft SQLServer是一个C/S模式的强大的关系型数据库管理系统...重新启动完成之后,我们就可以使用sa用户登录了 之后navicat中连接,输入数据如下 三、原理 “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储SqlServer中预先定义好的...“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写好的各种小脚本共同组成的集合体,我们称之为“存储过程”。...如果用户拥有管理员sa权限则可以用sp_configure重新开启它 MSSQL的权限: ​ Windows server类的操作系统,默认具有system权限。...sa的密码(某些站点直接在web应用程序中使用sa连接数据库),一般情况下,.net的站点数据库连接字符串web.config或者和global.aspx也有可能是编译DLL文件当中 2、判断端口

    41810

    SQL 运行时性能统计信息的获取

    这些统计信息包含了编译及执行流失总时间,CPU 执行时间,磁盘 IO 开销。知道了这些有什么用之类的问题,请充分发挥你的想象力。...最直接的一点,你可以知道前面存储过程中哪段 SQL 执行的最慢,需要全身心的解决这段 SQL 查询效率。这仅从看查询执行流失总时间即可清晰得做出判断。...数据行是存储在数据页的,一个页 SQL Server 中是 8K(其他数据库比 SQL Server 灵活的地方在于数据页大小可调,比如 Oracle 就是,8K, 32K,64K, Hadoop...当然,调试的时候,千万别直接修改原存储过程。...建议存储过程名后加上_pt (performance tunning 缩写), 需要的 SQL 段落前加上 print ' xxx begins...' 以明确统计信息的步骤对象归属。

    80640

    什么要使用存储过程

    如果是正式项目,建议你用 sql server 或 oracle 的存储过程。数据与数据之间打交道的话,过程会比程序来的快的多。...面试官问有没有用存储,实际就是想知道前来面试的程序员到底做过数据量大的项目没。如 果是培训出来的,或者小项目小公司出来的,对存储肯定接触的少了。...其威力和优势主要体现在:1.存储过程创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。...4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 存储过程的缺点1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。   ...3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

    1.7K150

    到底该不该使用存储过程

    记得MySQL支持存储过程是5.0版本开始的, 那时候已经是2006年了,而从新版本发布到用户全面升级,势必要延迟几年, 而同时期的Sql Server2005和Sql Server2008的Transact-SQL...首先,很多人说存储过程性能不行,其实也不一定, 尤其是Sql Server。...即使真碰到什么问题是SQL编程无法解决的,也可以把这部分问题提取出来通过程序实现, 但我相信这样的问题总是占少数的。 其次, 把逻辑封装在存储过程里,有一个好处是改动方便。...改程序需要重新编译、停服、发布, 存储过程是可以热更新的, 能减小发布程序所带来的影响。SQL Server为基础的程序中,光上面说的这些也足够成为用SQL编程实现业务逻辑的理由了。...以我个人的经验来说,存储过程是个好东西,尤其SQL Server下。

    1.4K90

    浅谈 SQL Server 查询优化与事务处理

    什么是索引呢,索引是 SQL Server 编排数据的内部方法,他为 SQL Server 提供了一种方法来编排查询数据的路由,从而达到通过使用索引来提高数据库的检索速度、改善数据库性能。...,存储过程就是 SQL 语句和控制语句的预编译集合,保存在数据库里,可由应用程序调用执行。...那为什么需要存储过程呢,因为从客户端(client)通过网络向服务器(server)发送 SQL 代码并执行是不妥当的,导致数据可能会泄露不安全,印象了应用程序的运行性能,而且网络流量大。...使用存储过程的优点就是: 1、模块化程序设计 2、执行速度快、效率高 3、减少网络流量 4、具有良好的安全性 存储过程分为两类:系统存储过程和用户自定义的存储过程 系统存储过程: 是一组预编译的T-SQL...根据系统存储过程的不同作用,系统存储过程可以分为不同类,扩展存储过程SQL Server 提供的各类系统存储过程中的一类。

    2K50

    SQL Server 存储过程的几种常见写法分析

    最近发现还有不少做开发的小伙伴,存储过程的时候,参考已有的不同的写法时,往往很迷茫, 不知道各种写法孰优孰劣,该选用那种写法,以及各种写法优缺点,本文以一个简单的查询存储过程为例,简单说一下各种写法的区别...避免了拼SQL字符串,既做到让参数非空的时候生效,有做到参数为空的时候不生效,看起来不错,是真的吗?   那么这种存储过程的有什么问题?     ...上面提到过,SQL执行之前是需要编译的,       因为在编译的时候并不知道查询条件是否传入了值,有可能为null,有可能是一个具体的值 实话说,为什么抑制到到索引的使用,我之前也是没有弄清楚的,...://www.cnblogs.com/wy123/p/5645485.html 总结:   以上总结了三种开发中比较常见的存储过程的写法,每种存储过程的写法可能在不同的公司都用应用,   是不是有人挑个最简单最快捷...不是太熟悉SQL Server的同学可能会有点迷茫,有很多种写法,究竟要用哪种写法这些写法之间有什么区别。

    1.4K80

    MySQL8 中文参考(八十六)

    存储过程存储函数、触发器和定时事件都受到使用NDB存储引擎的表的支持,但这些内容不会在充当集群 SQL 节点的 MySQL 服务器之间自动传播,必须在每个 SQL 节点单独重新创建。...这意味着,默认情况下,如果 CMake 您的系统找不到 Java 的位置,配置过程将失败;如果您不希望启用 Java 和 ClusterJ 支持,您必须显式地通过 -DWITH_NDB_JAVA=OFF...这样做的过程几乎与用于为 Windows 编译标准 MySQL Server 二进制文件的过程相同,并且使用相同的工具。...支持包含的 MySQL ServerSQL 节点mysqld)的原地升级;对于多个 SQL 节点,可以重新启动单个mysqld 进程的同时保持 SQL 应用在线。...具体取决于当地情况;本节提供了关于在上述升级和回滚过程中每个点应该做什么的一般信息。

    9910
    领券