缺省情况下,为确定性过程启用过程结果缓存 (PRC)。
高速缓存的范围为当前服务器(例如,indexserver 或 cacheserver)。如果使用相同的参数在同一服务器中多次调用相同的确定性过程,则除了第一次调用外,将使用缓存的结果,除非将缓存的结果逐出。由于高速缓存在当前服务器中是全局的,因此即使在不同的查询计划之间也共享结果。
备注目前,PRC 仅支持标量参数。您可以创建具有表参数的确定性过程,但此类过程将禁用自动高速缓存。
相同的关键字 DETERMINISTIC 可用于过程和函数,但当前含义不同。
对于用户定义的标量函数,将为每个语句执行创建新的高速缓存,并在执行后将其销毁。缓存是当前语句的本地缓存,该语句在某个时间点具有持久性的固定快照。由于此行为,可以在确定性标量 UDF 中将更多事物视为“确定性”,例如读取表。