zoukankan      html  css  js  c++  java
  • DB2中的prepare和bind

    要解释这些还关系到好几个概念:

    1. 动态SQL和静态SQL:在程序运行的时候才能确定执行计划的SQL是动态的;在程序编译的时候就已经可能知道执行计划的是静态的

    2. prep/precompile:不要把prep看成是prepare了,这里是预编译

    3. 嵌入式SQL:这个就没办法找到很好的定义了。一般来说使用标准接口的程序都是非嵌入式的,像CLI/JDBC/ODBC。现在只有C和COBOL是支持嵌入式SQL的了。目前大部分应用程序都不是嵌入式的了。

    接下来再看看:

    PREPARE:目的主要是把动态SQL进行解析成标准函数,生成package,让其在程序运行时生成执行计划。主要是针对动态SQL的。

    BIND:主要是针对静态SQL语句的,在BIND的过程当中语句的package就已经获得执行计划了。在precompile的时候就已经绑定了,如果有什么修改会导致静态SQL的执行计划会更改的,就需要rebind。一般来说是在开发环境里面重新编译一下,重新生成bnd文件,然后将新的bnd文件拷贝到生产环境里面再rebind。另外,只有SP、UDF和使用了嵌入式SQL的程序才需要BIND。

  • 相关阅读:
    concurrent模块
    gevent模块
    Python中的线程
    2019.10.22 用TCP实现服务端并发接收
    Python中的进程
    进程和线程
    网络编程常用模块及方法
    [UOJ #222][NOI2016]区间(线段树)
    [BZOJ 4873][SHOI&SXOI2017]寿司餐厅(最大权闭合子图)
    [BZOJ 3751][NOIP2014]解方程(哈希)
  • 原文地址:https://www.cnblogs.com/jackhub/p/3147199.html
Copyright © 2011-2022 走看看