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

How temporary tables behave in Stored Procedure of sybase

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

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

我的查询:

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

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

  1. 存储过程中临时 table 的范围是什么,如第 1 点所述,如果多个请求并行访问存储过程,将对临时 tables.

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

1:同一个stored proc的两次执行是完全独立的(可能在查询计划上有一些共性,但不影响结果)

2:参见1。临时表特定于存储过程调用和用户会话;临时表会在过程结束时自动删除(如果您尚未删除它们)。

3:临时表本身不能有 locking/blocking 问题。但是当然总是 locking/blocking 查询其他表的问题(例如,填充临时表)。这里没什么特别的。