Global Plsql Cache特性函数
invalidate_plsql_object(),invalidate_plsql_object(schema, objname, objtype)
描述:使Global Plsql Cache全局缓存中的对象失效,仅在enable_global_plsqlcache = on时可用。当前版本分布式不支持使用该函数。调用该函数的用户需要具有SYSADMIN权限。
参数:该函数为重载函数。
- 无参调用:将使DATABASE内的所有全局缓存对象失效。
- 带参调用:当指定schema、objname、objtype三个参数时,可将当前DATABASE内的指定全局缓存对象失效。其中:
- schema为对象所属的schema名称。
- objname为对象名称。
- objtype为对象类型,对象为package类型时值为“package”,对象为函数或存储过程时值为“function”。
gs_plsql_memory_object_detail(db_oid, obj_oid, obj_type)
描述:获取存储过程创建的package、function的主要有效内存占用情况。enable_global_plsqlcache = off时该函数显示当前session中的存储过程内存情况,跨session查询暂不支持。当前版本分布式不支持使用该函数。调用该函数的用户需要有SYSADMIN权限。
参数:该函数需传入db_oid、obj_oid、obj_type三个参数,如传入参数不匹配,返回空行。具体参数说明如表1所示。其中db_oid、obj_oid传入0为默认查找cache中所有package、function的有效内存使用情况。
|
参数列表 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
db_oid |
uint32 |
查询数据库oid为db_oid内存储的存储过程的主要有效内存占用情况。0默认为当前缓存中全部数据库实例。 |
0~2^32-1。 |
|
obj_oid |
uint32 |
查询object的oid。0默认为当前缓存中全部pkg与function。 |
0~2 ^32-1。 |
|
obj_type |
text |
查询object的类型,标识查询目标object为package或function。 |
|
返回值类型:Tuple
该函数显示数据库内满足查询条件的有效内存占用情况说明如表2所示。
|
名称 |
类型 |
描述 |
|---|---|---|
|
object_oid |
uint32 |
查询内存对象的oid。 |
|
context_name |
text |
内存对象名。 |
|
item |
text |
查询内存对象项目名。 |
|
searchpath |
text |
内存对象访问编译产物的Schema及其他环境变量。 |
|
guc |
uint64 |
创建对象时的环境参数,即behavior_compat_flags的值。 |
|
file |
text |
内存对象创建所在文件。 |
|
line |
uint32 |
内存对象创建所在文件行数。 |
|
size |
uint32 |
内存对象大小。 |
|
db_oid |
uint32 |
查询内存对象所在数据库oid。 |
dump_plsql_compiled_object(object_oid, object_type)
描述:打印存储过程的PACKAGE、FUNCTION编译产物信息。GUC参数enable_global_plsqlcache设置为off时,该函数只能查找当前session内的编译产物信息。暂不支持跨session、跨database查询。调用该函数需要有SYSADMIN权限。
参数:该函数需要传入object_oid和object_type两个参数,如果传入参数的数量或者类型不匹配,返回报错。具体参数说明如表3所示。
|
参数列表 |
类型 |
描述 |
取值范围 |
|---|---|---|---|
|
object_oid |
uint32 |
查询object的oid。 |
0~2^32-1。 |
|
object_type |
text |
查询object的类型(不区分大小写)。 |
|
返回值类型:text
示例:
-- 如下用例构造当GUC参数enable_global_plsqlcache设置为on时,创建存储过程,调用dump_plsql_compiled_object打印存储过程编译产物信息的情况。
gaussdb=# CREATE OR REPLACE PROCEDURE test_proc(a out int, b out int) AS
gaussdb$# BEGIN
gaussdb$# a := 1;
gaussdb$# b := 1;
gaussdb$# END;
gaussdb$# /
CREATE PROCEDURE
gaussdb=# SELECT test_proc();
test_proc
-----------
(1,1)
(1 row)
gaussdb=# SELECT oid FROM pg_proc WHERE proname = 'test_proc';
oid
-------
17879
(1 row)
gaussdb=# SELECT * FROM dump_plsql_compiled_object(17879, 'function');
dump_plsql_compiled_object
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
PL/pgSQL compiled function info:
+
fn_oid: 17879
+
pkg_oid: 0
+
namespace_oid: 2200
+
fn_owner: 10
+
fn_input_collation: 0
+
fn_xmin: 198373
+
fn_signature: test_proc()
+
fn_searchpath:{ 2200 , addCatalog: true, addTemp: true, addUser: false}
+
fn_rettype: 2249
+
fn_rettyplen: 0
+
fn_rettypioparam: 0
+
glc_func_life: 2
+
fn_retbyval: false
+
fn_retistuple: true
+
fn_retset: false
+
fn_readonly: false
+
is_private: false
+
fn_is_trigger: false
+
pre_parse_trig: false
+
is_autonomous: false
+
is_inline_handler: false
+
is_plpgsql_func_with_outparam: false
+
need_skip_process_autonm_pkg: false
+
remembered_by_resowner: false
+
out_param_varno: 2
+
found_varno: 3
+
fn_nallargs: 2
+
sql_cursor_found_varno: 4
+
sql_notfound_varno: 5
+
sql_isopen_varno: 6
+
sql_rowcount_varno: 7
+
sql_bulk_exceptions_varno: 11
+
sqlcode_varno: 8
+
sqlstate_varno: 9
+
sqlerrm_varno: 10
+
retvarno: 0
+
guc_stat: 22821463346118656
+
use_count: 0
+
resolve_option: 2
+
ndatums: 12
+
datums:{
+
type: GSPLSQL_DTYPE_VAR, dno: 0 ispkg: false refname: $1 isImplicit: false addNamespace: false pkg_oid: 0 varname: a isconst: 0,notnull: 0, isnull: true freeval: false is_place_holder: false isbind: fals
e is_cursor_var: false is_cursor_open: false is_diff_pkg_cursor: false tableOfIndexType: 0 isIndexByTblOf: false +
GSPLSQLType: typname: int4, typoid: 23, ttype: 0, typlen: 4, typrelid: 0, typioparam: 23, collation: 0, typinput_oid: 42, atttypmod: -1, typbyval: true, typtype: b, typnamespace: pg_catalog, collectionTy
pe: 0, tableofOid: 0, tableOfIndexType: 0, arrayTypOid: 0, cursorCompositeOid: 0, subtypOid: 0, is_subtype: false, notnull: false, temptypmod: -1 +
default_val: cursor_explicit_expr:
...
}
+
datum_need_free:{ 0: true 1: true 2: true 3: true 4: true 5: true 6: true 7: true 8: true 9: true 10: true 11: true }
+
namespace_name: public
+
glc_status:{m_type: GLC_FUNCTION_OBJ, m_location: in_global_hash_table, m_glc_object_state: valid, m_refcount: 1}
+
fn_nargs: 0
+
dump count: 1
+
**************************************************************************
+
(1 row)