我在如下定义的包上有几个结果缓存功能 . 这个想法是这个包函数被几个程序调用,这些程序作为并发请求并行运行并收集相同的信息 .
由于某些原因,在应用Result Cache Functionallity后,程序花费的时间更长 . 我检查了参数和结果缓存表,例如:
V$RESULT_CACHE_OBJECTS
V$RESULT_CACHE_STATISTICS
我可以看到我的对象被缓存了 .
由于我将这些程序作为并发请求运行,因此我获取了跟踪文件,但我无法在任何地方看到结果缓存 . 有任何想法吗?
规格:
Create or replace Package myPackage
As
Type myRecord Is Record( field1 Number
, field2 Varchar2(300)
, field3 Varchar2(300)
, field4 Varchar2(300));
Function myFunction ( p_organization_id In Number )
Return myRecord Result_Cache;
End myPackage;
身体:
Create or replace Package Body myPackage
As
Function myFunction ( p_organization_id In Number )
Return myRecord Result_Cache
Is
l_record myRecord;
l_record_null myRecord;
Begin
Select field1
, field2
, field3
, field4
Into l_record
From My_partners
Where 1 = 1
And partner_type = 3
And partner_id = p_organization_id;
Return l_record;
Exception When Others
Then
Return l_record_null;
End myFunction;
End myPackage;