临时表在sybase的存储过程中的行为方式

时间:2016-04-20 13:51:30

标签: database jdbc sybase-ase

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

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

我的查询:

  1. 如果多人同时启动Web应用程序 - 存储过程会多次执行吗?对于每个请求,数据库存储过程(或)的单个实例是否并行完成执行将由数据库创建新的存储过程实例。基本上我很想知道在这种情况下幕后发生了什么。
  2. 注意:在SybaseASE存储过程中,我们使用了许多临时表,根据几个条件插入和删除数据。并且基于角色,不同的用户将得到不同的结果。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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