这篇文章我想谈下SQL Server里一个非常重要的性能调优话题:重编译(Recompilations) .当你执行非常简单的存储过程(使用临时表)时,就会发生.今天我想奠定SQL Server里重编译的基础,它们为什么会发生,下篇文章我会向你展示通过不同方式重写你的存储过程避免重编译. 什么是重编译? 在我谈SQL Server里重编译细节前,首先来看看下面一个很简单存储过程. CREATE PROCEDURE DemonstrateTempTableRecompiles AS BEGIN C…
在上一篇文章里,我讨论了使用临时表如何引起SQL Server里的重编译.在文章最后我提到,今天这篇文章我会聚焦表变量(Table Variables)的更多信息,它可以避免重编译的昂贵开销.我们来详细分析下. 表变量(Table Variables) 表变量总局限于提交到SQL Server的批处理语句范围.当你在批处理语句范围外引用表变量时,SQL Server就会返回你一条错误信息.这是和临时表相比第1个重大区别.下列代码向你展示了如何创建和使用表变量——只在简单存储过程的上下文里. CR…
SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译(recompile)的条件:     - 对查询所引用的表或视图进行更改(ALTER TABLE 和 ALTER VIEW).     - 对执行计划所使用的任何索引进行更改.     - 对执行计划所使用的统计信息进行更新,这些更新可能是从语句(如 UPDATE STA…
曾经在网络上看到过一种说法,SqlServer的存储过程中使用临时表,会导致重编译,以至于执行计划无法重用, 运行时候会导致重编译的这么一个说法,自己私底下去做测试的时候,根据profile的跟踪结果, 存储过程中使用临时表,如果不是统计信息变更导致导致的重编译,并不会导致重编译, 但是现实情况下,对于一些特殊的情况,即便是统计信息没有更新,又确实会出现每次运行都重编译的情况, 存储过程中使用了临时表,什么情况下会重编译,什么情况下不用重编译? 为了弄清楚这个问题,查阅了大量的资料,才把这个问题…
查询优化是一个复杂而且耗时的操作,所以SQL Server需要重用现有的查询计划.查询计划的缓存和重用在多数情况下是有益的的,但是在某些特殊的情况下,重编译一个查询计划可能能够改善性能. SELECT usecounts, cacheobjtype, objtype, [text] FROM sys.dm_exec_cached_plans P CROSS APPLY sys.dm_exec_sql_text(plan_handle) WHERE cacheobjtype = 'Compiled…
1. 必须有DXperience相应版本的全部源代码SourceCode.把全部源代码复制到\Program Files\Developer Express .NET vX.X\Sources目录.目标目录的默认位置是在C:\Program Files\Developer Express .NET vX.X\Sources\(其中X.X为应替换相应的版本号,以下不再重复说明).2. 必须创建一个强名称的文件.要创建此文件,必须执行下面的命令建立你自己的密钥:sn -k StrongKey.snk…
编译的含义 当SQLSERVER收到任何一个指令,包括查询(query).批处理(batch).存储过程.触发器(trigger) .预编译指令(prepared statement)和动态SQL语句(dynamic SQL Statement)要完成语法解释.语句解释, 然后再进行“编译(compile)”,生成能够运行的“执行计划(execution plan)”.在编译的过程中, SQLSERVER会根据所涉及的对象的架构(schema).统计信息以及指令的具体内容,估算可能的执行计划,…
本文出处:http://www.cnblogs.com/wy123/p/6262800.html   在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不…
本文出处:http://www.cnblogs.com/wy123/p/6266724.html 最近在学习 WITH RECOMPILE和OPTION(RECOMPILE)在重编译上的区别的时候,无意中发现表值函数和内联表值函数编译生成执行计划的区别下文中将会对此问题展开讨论.简单地说就是:同样一句SQL,分别写成内联函数和表值函数,然后执行对Function的查询,发现其执行计划和执行计划缓存是不一样的, 根据某些测试的一些共同规律发现,内联函数的编译很有可能与Parameter Embed…
1.与正确性相关的重编译 1.为表或视图添加列,删除列. 2.为表添加约束.默认值.规则,删除约束.默认值.规则. 3.为表或视图添加索引. 4.如果计划用不用索引而这个索引被删除. 5.删除表中的统计信息. 6.增加触发器,删除触发器. 2.与优化相关的重编译 1.手动更新了统计信息. 2.统计信息过于陈旧.…
背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限.在只有被测试APP的apk文件的情况下,修改apk文件后缀名为zip,解压缩后,修改AndroidManifest.xml文件,删除META-INF文件夹,重压缩为apk文…
在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不是仅仅只有这么一点区别. 事实上在某些特定情况下,两者的区别并非仅仅是存储过程级重编译和语句级重编译的…
win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号的dll,lib,头文件.(dll加入到环境变量里,执行时用,自己编译的dll调试时能够跟踪到Opencv的源代码内:lib和头文件配置到编译器里) PS:假设仅仅是使用Opencv而不须要跟踪源代码,则使用Opencv自带的库文件就可以. 跳到5配置Opencv开发环境.相应的文件都在..\ope…
1.反编译与重编译 工具:apktool 下载地址:https://ibotpeaches.github.io/Apktool/ 环境:Java (JRE 1.7) 安装步骤:参考官网(也可以不安装,直接使用java -jar apktool.jar 命令) ,具体如下图所示反编译命令:java -jar apktool.jar d xxx.apk --frame-path <指定框架资源保存路径>重编译命令:java -jar apktool.jar b <反编译出来的文件夹> …
本文源链接:http://blog.csdn.net/qq393830887/article/details/56025923 工具 Java环境 Apktool(这玩意有些坑爹,不是官网最新的就好,找到一个好用的版本号能少非常多坑) Apktool watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXEzOTM4MzA4ODc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravi…
DevExpress 是一个比较有名的界面控件套件,提供了一系列优秀的界面控件.这篇文章将展示如何在拥有源代码的情况下,对 DevExpress 的程序集进行重新编译. 特别提示:重编译后,已安装好的 DevExpress Demo 项目都将无法正常运行,需要将 Demo 也进行重编译操作后,方可恢复正常,新手请注意. 系统必备 Windows 7 SP1 以上操作系统 Visual Studio 2010 SP1 .Net Framework 4.5 [ 下载 .Net Framework 4…
SQLSERVER编译与重编译 编译的含义 当SQLSERVER收到任何一个指令,包括查询(query).批处理(batch).存储过程.触发器(trigger) .预编译指令(prepared statement)和动态SQL语句(dynamic SQL Statement)要完成语法解释.语句解释, 然后再进行“编译(compile)”,生成能够运行的“执行计划(execution plan)”.在编译的过程中, SQLSERVER会根据所涉及的对象的架构(schema).统计信息以及指令的…
转: http://blog.csdn.net/endoresu/article/details/6967435 以su命令为例. 查看su命令的路径: # which su /bin/su 查看su是由哪个包安装的: # rpm -qf /bin/su coreutils-5.97-12.1.el5 去网上搜索“coreutils-5.97-12.1.el5.src.rpm”包,注意,后面还多了个“.src”,表示源代码的安装包. 将下载到的源代码的包直接安装是行不通的,需要先安装下列.rpm…
本文以DevExpress 11.1.8举例 必须满足几个条件 1. 必须有DXperience相应版本的全部源代码SourceCode.把全部源代码复制到X:\Program Files\DevExpress XXX\Components\Sources目录.目标目录的默认位置是在C:\Program Files\DevExpress 20XX\Components\Sources(其中X.X为应替换相应的版本号,以下不再重复说明). 2. 必须有一个强名称的文件.该文件可以是你自己生成的,或…
解决方法来自此链接 http://www.tuicool.com/articles/qiQBb2N vs2008+cmake2.8+OpenCV2.8.4配置过程 1.解压opencv2.4.8 2. CMake2.8 生成VS2008版本的解决方案 3.OpenCV.sln重新编译,出现问题出现14个工程编译错误,几乎都提示缺少opencv_ocl248d.lib, 单独对工程进行opencv_ocl工程 进行生成操作,发现与opencl_kernels.hpp相关. 于是搜索得文章最上方连接…
背景: > System.Data.SQLite.dll 程序集 不能良好的支持 AngCPU 格式 System.Data.SQLite.dll 在 适应 x86 和 x64 有三个方案: > 分别使用 32 或 64 的 混合编译程序集(程序如果以64位 运行,但引用32位的 程序集 就会报错,反之) —— 所以这种方案 很惹人嫌. > 使用 AnyCPU 的程序集 —— 但是 你得间接引用 C++ 核心程序集:SQLite.Interop.dll —— 即:你得 同时引用 两个程序…
反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detail/han1202012/8221787 octopus@octopus:~/decompiler$ tree -L 2 . ├── linux │   ├── apktool │   ├── dex2jar-0.0.9.15 │   └── jd-gui ├── mac │   ├── apkto…
流程 (1)在默认的优化编译下,时序违例. (2)在assignments中选择setting. (3)根据需求,选择不同的优化方式,目前选择性能优先. (4)可以发现时序满足要求. 以上.…
工具 cmake-3.9.1 opencv-3.3.0  gcc-6.3.0 前几天为了装eclipse的CDT,把minggw里的make改了,今天突然想学opencv,可是只找到了vc版本,千辛万苦找到了用gcc重新编译的方法,谁知cmake只知道根据mingw的make方法,出现了“error in configuration process project files may be invalid”问题,历时2小时终于cmake成功. 谁知在make过程中出现了如下问题 1. 返回cma…
最近沉迷某游戏 尝试了一些不可描述的东西 , 记录一下研究过程 具体是哪个app不公开 ... 准备工具 APKtool && signapk && jre .net reflector && activate && reflexil 以上这些不提供下载 ,哪里找自己想 开始操作 首先解压 apktool.bat if 333.apk apktool.bat d 333.apk 然后 会得到一个文件夹 ,  例如这里是333.apk, 会得到…
1.在源码目录的根目录下,make clean; 2.进到源码的\linux\kernel\目录下,执行make mrproper: 3.再退回到根目录,执行source  build/envsetup.sh,   lunch,    make.…
asp.net 编译错误类型“同时存在于”不同的dll中. 出现这种错误大概有三种情况: 1.ASPX页面,一个*.ASPX,对应着一个*.cs文件,两者其实是一个文件,通过两者实现代码分离,每个*.aspx页面都引用着自身的CS文件:如果两个页面引用了相同得.CS文件,在发布得时候也会出现这种错误. 2.估计是在Bin里面还有一个老版本的DLL,而新版的DLL名字换掉了,新的覆盖不掉老的,并存在BIN里时,有可能会发生这种情况. 解决方案:把BIN里的手动删掉,C:\WINDOWS\Micro…
先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译: 一.重新编译PHP cd ./php-5.4.38 #生成配置 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-openssl --with-zlib --with-bz2…
  在网上的解决方法 方法参考如下: (1) Window-->Preferences-->General-->Workspace  有个"Build automatically"自动编译,勾打上. (2)留意一下"Problems"选项卡(在Tasks,Console,Servers选项相邻)下面的提示信息,是不是工程中有错误(比如:少了jar,编译的路径出错等),导致没有办法编译.按照提示解决问题. (3)查看该工程目录下的".cla…
不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflector + reflexil 临时直接修改dll代码,然后重编译,替换原来的文件(当然:代码未混淆的情况下,这个也可以用来搞破解,这不在本文讨论之列) 步骤: 1.Relector 加载相关的dll后,启用Reflexil界面 2.找到需要修改的代码位置,然后参考下图,右击->Replace all with code 3.写新的代码 然…