【问题标题】:How temporary tables behave in Stored Procedure of sybasesybase 存储过程中临时表的行为
【发布时间】:2016-04-20 13:51:29
【问题描述】:

我已尝试为我的问题找到答案,但没有找到合适的答案。

我们有一个 Java Web 应用程序,其中数据根据用户角色加载到启动屏幕上。 启动屏幕上的数据是通过执行一个存储过程来获取的,该存储过程又返回一个 ResultSet,然后从中处理数据以显示在启动屏幕上。

我的查询:

  1. 如果多人同时启动 Web 应用程序,存储过程会被执行多次吗?是否会在数据库存储过程的单个实例上并行执行(或)对于每个请求,数据库都会创建一个新的存储过程实例。基本上我很想知道在这种情况下幕后发生了什么。

注意:在这个 SybaseASE 存储过程中,我们使用了许多临时表,根据几个条件在其中插入和删除数据。并且根据角色不同的用户会得到不同的结果。

  1. 存储过程中临时表的范围是什么,如第 1 点所述,如果多个请求并行访问存储过程,对临时表有何影响。

  2. 根据第 2 点,是否有可能因为存储过程中的临时表而发生数据库阻塞或死锁情况?

【问题讨论】:

    标签: database jdbc sap-ase


    【解决方案1】:

    1:同一个存储过程的两次执行是完全独立的(在查询计划方面可能存在一些共性,但不影响结果)

    2:参见 1。临时表特定于存储的 proc 调用和用户会话;临时表会在 proc 结束时自动删除(如果您还没有删除它们)。

    3:临时表本身不能存在锁定/阻塞问题。但当然,在查询的其他表上总是存在锁定/阻塞问题(例如,填充临时表)。这里没什么特别的。

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多