OceanBase數據庫是多租户設計的數據庫,同一個進程會運行着多個租户的請求,從租户資源劃分上可以分為三類,500租户內存、系統租户內存、業務租户內存。
- 500是個特殊的虛擬租户,共享性的、非實體租户消耗的內存都被OceanBase數據庫劃歸500租户。
- 系統租户是OceanBase數據庫自動創建的第一個實體租户,管理着集羣相關的內部表,這些內部表上的請求觸發的內存就劃歸到了sys租户。
- 業務租户就是集羣安裝後由DBA創建的跑業務流量的實體租户,這些租户的請求觸發的內存就劃歸租户自己。
視頻講解如下:
https://www.bilibili.com/video/BV1kE4uzLEav/?aid=115360137221...
OceanBase數據庫支持通過參數來設置和管理內存的使用,這裏主要關注兩個方面的內存參數:OBServer節點總內存和業務租户內存。
OBServer節點總內存
表示OBServer節點所有內存的上限,即所有租户累加不可能超過的上限,由以下兩個參數控制:
- memory_limit_percentage 物理機或者容器物理內存的百分比
- memory_limit 內存的絕對數值
當memory_limit不為0M時,使用memory_limit作為上限,
否則使用memory_limit_percentage計算後的值作為上限。
下面展示了這兩個參數的相關信息:
ob> show parameters like 'memory_limit%' \G;
# 輸出的信息如下:
*************************** 1. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.79.10
svr_port: 2882
name: memory_limit_percentage
data_type: INT
value: 80
info: the size of the memory reserved for internal use
(for testing purpose). Range: [10, 95]
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 80
isdefault: 1
*************************** 2. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.79.10
svr_port: 2882
name: memory_limit
data_type: CAPACITY
value: 10G
info: the size of the memory reserved for internal use
(for testing purpose),
0 means follow memory_limit_percentage. Range: 0, [1G,).
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
isdefault: 0
2 rows in set (0.014 sec)
通過使用命令obd cluster edit-config <集羣名稱> 可以修改OBServer節點的總內存大小。
業務租户內存
業務租户內存由租户創建ResourceManager Unit(資源單元)時指定。系統租户可以通過視圖查詢Resource Unit的規格,例如:
ob> select name,MAX_CPU,MIN_CPU,MEMORY_SIZE,LOG_DISK_SIZE
from oceanbase.DBA_OB_UNIT_CONFIGS;
# 輸出的信息如下:
+-----------------+---------+---------+-------------+---------------+
| name | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE |
+-----------------+---------+---------+-------------+---------------+
| sys_unit_config | 1 | 1 | 2147483648 | 2147483648 |
| ru1 | 1 | 1 | 2147483648 | 2147483648 |
| ru2 | 1 | 1 | 2147483648 | 2147483648 |
| ru3 | 1 | 1 | 2147483648 | 2147483648 |
+-----------------+---------+---------+-------------+---------------+
4 rows in set (0.004 sec)