暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note67:OceanBase社区版中,锁定解锁功能如何使用?

统计信息的锁定功能主要用于锁死统计信息,防止统计信息更新,以保证统计信息的稳定性。

例如,如果想指定某一张表不收集统计信息,就可以提前上锁,这样计划生成的时候就会采取其他方式获取统计信息(动态采样等)。又如,对于一张数据稳定的表,我们不需要经常去收集它的统计信息,因此就可以提前上锁。

锁定功能

目前支持如下三种锁定统计信息的方式:

  • 使用存储过程 lock_table_stats 锁定某个表的统计信息。

  • 使用存储过程 lock_partition_stats 锁定某个分区的统计信息。

  • 使用存储过程 lock_schema_stats 锁定某个 Schema 下所有表的统计信息。

具体的存储过程定义如下:

PROCEDURE lock_table_stats (
    ownname          VARCHAR2,
    tabname          VARCHAR2,
    stattype         VARCHAR2 DEFAULT 'ALL'
  );

PROCEDURE lock_partition_stats (
    ownname          VARCHAR2,
    tabname          VARCHAR2,
    partname         VARCHAR2
  );

PROCEDURE lock_schema_stats(
    ownname          VARCHAR2,
    STATTYPE         VARCHAR2 DEFAULT 'ALL'
  );

参数解释如下表所示。

参数解释
ownname用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。
tabname表名称。
partname分区名称。
stattype加锁的类型。一般包括如下三种加锁类型:
  • 'ALL'
  • 'DATA'
  • 'CACHE'
说明 当前版本的 OceanBase 数据库的 Oracle 模式仅支持 'ALL' 类型。

锁定功能的示例

锁定用户 test 下的表 t_part 的表级统计信息及 p0 分区的统计信息。

CALL dbms_stats.lock_table_stats('test', 't_part');
CALL dbms_stats.lock_partition_stats('test', 't_part', 'p0');

解锁功能

目前支持如下三种解锁统计信息的方式:

  • 使用存储过程 unlock_table_stats 解锁某个表的统计信息。

  • 使用存储过程 unlock_partition_stats 解锁某个分区的统计信息。

  • 使用存储过程 unlock_schema_stats 解锁某个 Schema 下所有表的统计信息。

具体的存储过程定义如下:

PROCEDURE unlock_table_stats (
    ownname          VARCHAR2,
    tabname          VARCHAR2,
    stattype         VARCHAR2 DEFAULT 'ALL'
  );

PROCEDURE unlock_partition_stats (
    ownname          VARCHAR2,
    tabname          VARCHAR2,
    partname         VARCHAR2
  );

PROCEDURE unlock_schema_stats(
    ownname          VARCHAR2,
    STATTYPE         VARCHAR2 DEFAULT 'ALL'
  );

参数解释如下表所示。

参数解释
ownname用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。
tabname表名称。
partname分区名称。
stattype加锁的类型。一般包括三种加锁类型: 'ALL'、 'DATA' 和 'CACHE'
说明 当前版本的 OceanBase 数据库的 Oracle 模式仅支持 'ALL' 类型。

注意

对于一张表,如果同时加锁表级和分区级的统计信息,那么解锁的时候也需要同时解锁表级和分区级的统计信息。

解锁功能的示例

解锁用户 test 下的表 t_part 的表级统计信息及 p0 分区的统计信息。

CALL dbms_stats.unlock_table_stats('test', 't_part');
CALL dbms_stats.unlock_partition_stats('test', 't_part', 'p0');
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论