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

OceanBase内存相关参数

OceanBase 2022-11-21
1432

OceanBase 数据库支持通过参数来设置和管理内存的使用。

说明

有关以下提到的参数的详细介绍,请参见 系统配置项 章节。

OBServer 总内存

表示 OBServer 所有内存的上限,即所有租户累加不可能超过的上限,由两个参数控制:

  • memory_limit_percentage:物理机或者容器物理内存的百分比。

  • memory_limit:绝对数值。

当 memory_limit 非 0 时,使用 memory_limit 作为上限,否则使用 memory_limit_percentage 计算后的值作为上限。

高优先级预留内存

表示给一些特别重要的底层模块预留的一块空间。

可以通过 memory_reserved 参数进行设置。

500 租户内存

表示 500 租户预留内存,可以通过 system_memory 参数进行设置。

注意它不是 limit 的语义,目前的实现上 500 租户实际可使用内存是可能突破 system_memory 的,但其他租户可使用内存不会超过 OBServer 总内存(即 system_memory 的值)。

业务租户内存

业务租户内存由租户创建 unit 时指定。命令示例如下。

create resource unit if not exists sp_trans_test MAX_CPU=1, MEMORY_SIZE='5G', MAX_IOPS=128000, MIN_IOPS=128000, LOG_DISK_SIZE='2G';

create resource pool if not exists sp_trans_test unit='sp_trans_test', unit_num=1;

create tenant if not exists sp_trans_test RESOURCE_POOL_LIST=('sp_trans_test') set ob_tcp_invited_nodes='%';

OceanBase 数据库支持动态调整 unit 规格(缩容需谨慎)。

alter RESOURCE UNIT sp_trans_test MAX_CPU=1, MEMORY_SIZE='6G';

系统租户可以通过视图查询 unit 规格。

obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS\G
*************************** 1. row ***************************
UNIT_CONFIG_ID: 1
          NAME: sys_unit_config
       MAX_CPU: 2.5
       MIN_CPU: 2.5
   MEMORY_SIZE: 17179869184
 LOG_DISK_SIZE: 17179869184
      MAX_IOPS: 25000
      MIN_IOPS: 25000
   IOPS_WEIGHT: 2
*************************** 2. row ***************************
UNIT_CONFIG_ID: 1001
          NAME: unit001
       MAX_CPU: 2
       MIN_CPU: 2
   MEMORY_SIZE: 6442450944
 LOG_DISK_SIZE: 19327352832
      MAX_IOPS: 20000
      MIN_IOPS: 20000
   IOPS_WEIGHT: 2
*************************** 3. row ***************************
UNIT_CONFIG_ID: 1004
          NAME: sp_trans_test
       MAX_CPU: 1
       MIN_CPU: 1
   MEMORY_SIZE: 5368709120
 LOG_DISK_SIZE: 2147483648
      MAX_IOPS: 128000
      MIN_IOPS: 128000
   IOPS_WEIGHT: 0
3 rows in set 

租户内存分类

租户内存分为两类,memstore 与 SQL 执行。

  • memstore

    主要用于保存数据库增量数据。memstore 上限由参数 memstore_limit_percentage 控制,它表示租户 memStore 最多占租户总内存上限的百分比。freeze_trigger_percentage 参数用于控制转储时机,它表示当 memstore 内存达到 memstore 上限的某个百分比时触发转储,租户 memstore 的使用可以通过内部表查看 。

    MySQL [oceanbase]> select * From gv$memstore;
    +-----------+----------------+-------+-----------+-----------+---------------------+---------------------+------------+
    | TENANT_ID | IP             | PORT  | ACTIVE    | TOTAL     | FREEZE_TRIGGER      | MEM_LIMIT           | FREEZE_CNT |
    +-----------+----------------+-------+-----------+-----------+---------------------+---------------------+------------+
    |         1 | 100.81.113.215 | 46824 | 169792200 | 171966464 |          5153960700 |         10307921440 |          0 |
    |       500 | 100.81.113.215 | 46824 |         0 |         0 | 3689348814741910300 | 7378697629483820640 |          0 |
    |      1001 | 100.81.113.215 | 46824 |  33539200 |  35651584 |           382730200 |           858993440 |          0 |
    |      1002 | 100.81.113.215 | 46824 |         0 | 228589568 |         34359738350 |         68719476720 |          0 |
    +-----------+----------------+-------+-----------+-----------+---------------------+---------------------+------------+
    
  • SQL 执行

    表示 SQL 执行所需要的内存以及为了提高吞吐做的缓存,比如 SQL 执行计划等。

    ob_sql_work_area_percentage 是 SQL 工作区内存参数,表示 SQL 可能耗费大量内存的阻塞性算子所使用的内存。

sys 租户内存

前面提到,sys 租户就是实体租户,它的管理机制与业务租户完全一致。

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

评论