OceanBase 单机租户最多能支持多少分区?

OceanBase数据库-学习笔记4-租户 主要讲述了,租户的概念、分类、特点,已经资源池的创建,租户如何关联到资源池 阅读详情

OceanBase 单机租户允许创建的最大分区数是多少?作者通过分区超限错误排查,计算出单机允许创建的最大分区数量。

作者:何文超,爱可生南区交付服务部 DBA 团队成员,主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文共 1200 字,预计阅读需要 3 分钟。

背景

ERROR 1499 (HY000): Too many partitions (including subpartitions) were defined

创建表报错,虽然是内部错误,但是错误信息是指:创建了太多了分区。

[root@observer04 ~]# mysql -h10.186.64.125 -P2883 -uroot@wenchao_mysql#hwc_cluster:1682755171 -p"xxxx"  
MySQL [lss]> CREATE TABLE `wms_order` (
  `A1` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A1',
  `A2` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A2',
  `A3` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A3',
  `A4` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A4',
  `A5` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A5',
  `A6` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A6',
  `A7` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A7',
  `A8` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A8',
  `A9` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A9',
  `A10` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'A10'
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.0' REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = '物流订单表'
MySQL [lss]> ERROR 1499 (HY000): Too many partitions (including subpartitions) were defined

接下来我们分析一下问题的原因。

排查

2.1 检查参数

  1. 检查每个 OBServer 上可以创建最大的分区数量,当前是 500000。
[root@observer04 ~]# mysql -h10.186.64.125 -P2883 -uroot@sys#hwc_cluster:1682755171 -p"xxxx" -A oceanBase

MySQL [oceanBase]> select * from __all_virtual_sys_parameter_stat where name like '%_max_partition_%';
+-------+----------+---------------+----------+-------------------------------+-----------+--------+--------------+---------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+
| zone  | svr_type | svr_ip        | svr_port | name                          | data_type | value  | value_strict | info                                        | need_reboot | section  | visible_level | scope   | source  | edit_level        |
+-------+----------+---------------+----------+-------------------------------+-----------+--------+--------------+---------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+
| zone1 | observer | 10.186.64.122 |     2882 | _max_partition_cnt_per_server | NULL      | 500000 | NULL         | specify max partition count on one observer |        NULL | OBSERVER | NULL          | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+---------------+----------+-------------------------------+-----------+--------+--------------+---------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+
  1. 检查当前分区数量的和,目前并没有超过这个限制(500000)。
MySQL [oceanBase]> select count(*) from v$partition;
+----------+
| count(*) |
+----------+
|   421485 |
+----------+

2.2 检查回收站

  1. 检查回收站是否开启?
[root@observer04 ~]# mysql -h10.186.64.125 -P2883 -uroot@wenchao_mysql#hwc_cluster:1682755171 -p"xxxx"

MySQL [lss]> show variables like '%recy%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| recyclebin    | ON    |
+---------------+-------+
1 row in set (0.01 sec)
  1. 检查回收站中是否存在未删除的分区表?
MySQL [lss]> show recyclebin;
+-----------------------------------------+---------------+-------+----------------------------+
| OBJECT_NAME                             | ORIGINAL_NAME | TYPE  | CREATETIME                 |
+-----------------------------------------+---------------+-------+----------------------------+
| __recycle_$_1682755171_1689139725669688 | mytable_1     | TABLE | 2023-07-12 13:28:45.687379 |
| __recycle_$_1682755171_1689139737584112 | mytable_1     | TABLE | 2023-07-12 13:28:57.584660 |
| __recycle_$_1682755171_1689139750594392 | t1            | TABLE | 2023-07-12 13:29:10.594118 |
+-----------------------------------------+---------------+-------+----------------------------+
3 rows in set (0.01 sec)

如果存在,需要和业务侧沟通是否可以清理。回收站的表清理后,发现分区表数量减少,但是创建表依旧报错。

  1. 查看回收站中中对象保留天数。 ``` MySQL [lss]> SHOW PARAMETERS LIKE 'recyclebin_object_expire_time'\G;

*** 1. row *** zone: zone1 svr_type: observer svr_ip: 10.186.64.122 svr_port: 2882 name: recyclebin_object_expire_time data_type: NULL value: 0s info: recyclebin object expire time, default 0 that means auto purge recyclebin off. Range: [0s, +∞) section: ROOT_SERVICE scope: CLUSTER source: DEFAULT edit_level: DYNAMIC_EFFECTIVE 1 row in set (0.02 sec)


配置项 `recyclebin_object_expire_time` 的取值说明如下:
- 当其值为 0s 时,表示关闭自动 Purge 回收站功能。
- 当其值不为 0s 时,表示回收一段时间前进入回收站的 Schema 对象。


## 2.3 检查租户内存

1. 找到分区数最多的 10 个租户。
```shell
[root@observer04 ~]# mysql -h10.186.64.125 -P2883 -uroot@sys#hwc_cluster:1682755171 -p"xxxx"

// 1. 找到分区数最多的 10 个租户
SELECT t2.tenant_name,t2.tenant_id, t1.replica_count
FROM
 (SELECT tenant_id, COUNT(*) AS replica_count
  FROM __all_virtual_partition_info
  GROUP BY tenant_id
  ORDER BY replica_count DESC
  LIMIT 10) t1
JOIN
 (SELECT tenant_id, tenant_name
  FROM __all_tenant) t2
ON t1.tenant_id=t2.tenant_id
ORDER BY replica_count DESC;
+-------------------+-----------+---------------+
| tenant_name       | tenant_id | replica_count |
+-------------------+-----------+---------------+
| wenchao_mysql     |      1100 |        107853 |
| wenchao_01        |      1088 |         99846 |
| wenchao_02        |      1104 |         15873 |
| wenchao_03        |         1 |          3867 |
| wenchao_04        |      1044 |          3270 |
| wenchao_05        |      1066 |          2811 |
| wenchao_06        |      1079 |          2658 |
| wenchao_07        |      1103 |          2103 |
| wenchao_08        |      1057 |          2040 |
| wenchao_09        |      1016 |          1950 |
+-------------------+-----------+---------------+
10 rows in set (0.13 sec)
  1. 查找租户有多少表。
select count(*),svr_Ip from __all_virtual_meta_table where tenant_id=1100 and role=1 group by svr_ip;
+----------+-------------+
| count(*) | svr_Ip      |
+----------+-------------+
|   11921  |10.186.64.103|
|   11868  |10.186.64.104|
|   12013  |10.186.64.105|
+----------+-------------+
3 rows in set (0.35 sec)
  1. 计算租户需要扩容内存大小。
  • 租户当前分区总数 num=107853/副本数
  • 租户可用内存上限=(1-memstore_limit_percentage)*租户 unit 的内存大小 =(1-0.8)*24GB=4.8GB
  • 单个副本分区所需总内存 partition_mem=128k*(107853/3)+max(1000,(107853/3)/10)*400k=5.75GB

注意:单个副本分区所需总内存 > 租户可用内存上限,租户所需内存超限,需要对租户内存进行扩容。

  1. 根据租户内存计算最大分区数量。
  • 单机租户允许创建的最大分区数量=(max_memory-memstore_limit)/partition_mem_n
  • 单机租户允许创建的最大分区数量=(24-24*0.8)/(5.75/(107853/3))=4.8/(5.75/(107853/3))=30011
  • partition_mem_n:指的是单个分区所需总内存

临时处理方案: 扩容租户内存。

根源治理: 不可能无限扩内存;给出业务方合理的分区数量限制,建议业务侧合理使用分区表,制定合理的定期清理策略。

总结

根据上述计算得出:单机租户允许创建的最大分区数量为 30011,建议业务侧注意控制分区数量,以免超限,对业务造成影响。

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
初探OceanBase 4.x单机环境下如何进行主备架构搭建 OceanBase 4.x的单机一体化概念,可以在业务允许的情况下从MySQL替换到OB上,随着业务逐渐增长可以切换到分布式架构上,本文主要介绍OB单机和主备架构搭建 VS MySQL 阅读详情

相关推荐

OceanBase单机版从零部署到实战指南

本文详细介绍了OceanBase单机版的从零部署到实战应用全流程,包括环境准备、系统配置、安装步骤、常见问题排查及性能调优建议。OceanBase单机版作为高性能、高兼容性的数据库解决方案,特别适合个人开发者、中小企业和教学环境使用,支持MySQL和Oracle语法,资源占用优化且内置全功能监控。

weixin_42522953的博客 411

一、Oceanbase基础

整个分布式数据库。:表示区域,是地域的逻辑概念,如1个城市,1个集群可以有多个Region,用于跨城市远 距离容灾。:表示分区,是机房或机架的逻辑概念,1个Region包含1个或多个Zone,分区部署可提高可用。:observer为1个进程/1个节点(通常1台服务器部署1个observer进程),Oceanbase是 一个单进程软件,包含数据库所有管理功能:连接、sql解析、存储、事务、负载均衡。

lv_zj的专栏 2340

OceanBase 推出单机版 ,为中小规模业务提供高性价比方案

OceanBase正式推出了全新的单机版数据库。这款产品基于OceanBase自主研发的单机分布式一体化架构,具有精简的架构设计和出色的兼容性,能够为中小规模业务场景提供高性价比的数据库解决方案,充分满足客户在不同业务规模下的多样化需求。

OceanBase分布式数据库的博客 1531

深入OceanBase内部机制:多租户架构下的资源隔离实现精讲

OceanBase 数据库采用了单集群多租户设计,天然支持云数据库架构,支持公有云、私有云、混合云等多种部署形式。OceanBase 数据库通过租户实现资源隔离,让每个数据库服务的实例不感知其他实例的存在,并通过权限控制确保租户数据的安全性,配合 OceanBase 数据库强大的可扩展性,能够提供安全、灵活的 DBaaS 服务。租户是一个逻辑概念。在 OceanBase 数据库中,租户是资源分配的单位,是数据库对象管理和资源管理的基础,对于系统运维,尤其是对于云数据库的运维有着重要的影响。

码到三十五 8094

OceanBase 2.2 ORACLE租户开发者指南.pdf

OceanBase 2.2 的租户(实例)兼容 ORACLE 和 MySQL 两种语法,这是 ORACLE 租户的开发者指南,方便开发同学学习和使用 OceanBase。 文档保存在:https://github.com/obpilot/ob-docs/tree/master/developer 后期会持续更新。

CAN总线开发必看:报文发送类型全解析(含Cycle/Event/CE/IfActive对比)

本文深入解析CAN总线开发中的四种报文发送类型(Cycle/Event/CE/IfActive),对比其核心特征与工程应用场景。通过典型ECU交互案例和决策矩阵,帮助开发者根据实时性、总线效率等需求选择最优方案,并详解信号发送模式与恢复机制,提升车载网络通信可靠性。

weixin_30632089的博客 311

OceanBase数据库-租户

若想要统一管理,共用一套资源,则需要在数据库下创建多个用户,每个用户分配不同的权限,操作不同数据库表,但是,这也只是。,能够单独创建数据库、表等,租户之间的物理资源能够独立分配,实现了物理资源和逻辑资源的隔离。下,假如有多个系统,每个系统需要单独维护自己的数据库实例,无法统一运维管理。OceanBase有三种租户类型:系统租户、用户租户、Meta租户。租户可以等同于传统数据库的数据库实例,拥有自己的资源配置。描述用户租户的租户,存储和管理用户租户的私有数据。用户创建的租户,支持完整的数据库功能。

weixin_50502586的博客 708

中文翻译《ASPICE in practice》之“SUP.8 配置管理”

一般来说,自动化程度越低,负责 CM 的个人就必须花费越多的精力,例如,检查基线的正确性和完整性,或确保在归档系统上正确完成手动版本控制。必须防止未经许可的访问。为了唯一地标识基线,许多 CM 工具提供了一种“标记”基线的机制,即为受影响的 CM 项目的所有版本分配相同的标签,例如“第 3 次交付状态”。此选择必须允许绘制合格的基线(参见 BP5),即确保实际上所有描述特定开发阶段的元素(需求和设计文档、开发环境、变更请求、测试用例、测试文档,也可能是重要的中间工作产品等)都可以在 CM 系统中进行基线。

Smith_Chai的博客 1583

OceanBase 社区版入门教程

为了帮助大家快速入门分布式数据库的开发、运维和性能诊断技能,OceanBase 开源团队正式推出原生分布式数据库 OceanBase 社区版的第一本教程——《 OceanBase 社区版入门到实战》,深入浅出地讲解如何快速掌握 OceanBase 实践技能,提升职场核心竞争力。

RV1126双摄IMX577驱动移植避坑:从RK3588到RV1126的dts配置与内存崩溃解决实录

本文详细记录了在RV1126平台上移植RK3588的IMX577双摄驱动的完整过程,重点解决了dts配置与内存崩溃问题。通过分析硬件架构差异、驱动移植关键点及CMA内存越界问题,提供了两种有效解决方案,并分享了双摄同步优化与网络调试的实战经验,为嵌入式视觉系统开发提供实用参考。

weixin_42641741的博客 405

工业级24V电源保护电路深度解析:五重防护机制详解

自恢复保险丝(PPTC,Positive Temperature Coefficient)是一种过流保护元件✅可恢复:过流后自动恢复,无需更换⚡响应快:电流超标立即动作🔄多次使用:在额定范围内可反复使用第1层(F1):阻挡过流 → 物理熔断第2层(D3):吸收浪涌 → 能量泄放第3层(Q1):防止反接 → 逻辑阻断第4层(Q2/Q3):抵御过压 → 主动切断第5层(CR):平滑启动 → 时序控制设计哲学:"让每一级保护专注做好一件事"通过这篇文章,我们深入理解了:✅自恢复保险丝。

qq_58068673的博客 3563

OceanBase租户管理

OceanBase数据库采用多租户架构,适用于资源整合和SaaS服务等场景,降低了运维复杂度。租户是逻辑资源单元,通过资源池与物理资源关联,可动态调整资源配额。资源规格、资源单元(Unit)和资源池是理解租户的关键概念。Unit是资源调度的基本单位,具有节点、Zone、Region等位置属性。资源池由多个Unit组成,是资源分配的基本单位。租户容量可通过垂直扩缩容(调整Unit资源规格)和水平扩缩容(调整Unit个数和分布)动态调整。OceanBase V4.0引入Meta租户,管理用户租户的私有数据,提升

Made In SQL 1676

手把手教你用STM32F103C8T6单片机,做一个即插即用的USB游戏手柄(附完整代码)

本文详细介绍了如何使用STM32F103C8T6单片机制作即插即用的USB游戏手柄,涵盖硬件搭建、HID协议解析及完整代码实现。通过深入讲解USB HID协议的七大关键描述符,帮助开发者快速掌握嵌入式USB设备开发技巧,打造个性化游戏控制器。

weixin_30887919的博客 439

深入讲解 OceanBase 单机版

为大家整体介绍OceanBase单机版的架构、部署流程、性能测试、MySQL对吧、资源配置等。

OceanBase分布式数据库的博客 3757

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 198

【Hadoop】开发插件安装

前言 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java...

weixin_44039347的博客 3207

OceanBase 4.x 部署实践:如何从单机扩展至分布式部署

OceanBase 4.X 版本支持2种部署模式:单机部署与分布式部署,同时支持从单机平滑扩展至分布式架构。这样,可以有效解决小型业务向大型业务转型时面临的扩展难题,降低了机器资源的成本。

OceanBase分布式数据库的博客 1898

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

OceanBase 单机企业版初体验

为方便通过 obd 部署 OceanBase 数据库单机版,OceanBase 提供了统一的安装包 oceanbase-standalone-all-in-one-4.2.5.3-xxxxxxxxxxxxxxxxxx.el7.x86_64.tar.gz。大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区联合创始人,荣获Oracle ACE Pro称号,墨天轮MVP,墨天轮年度“墨力之星”,拥有Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP认证以及。

JiekeXu的博客 1134

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一文讲透 OceanBase 单机版:架构介绍、部署流程、性能测试、MySQL对比、资源配置等等

OceanBase 单机集中式集群(即单机版,后文不再称“单机集中式集群”)是OceanBase 推出的极简数据库架构,区别于分布式集群架构,单机版无多副本和扩缩容能力,适用于开发测试环境及数据安全性要求不高的业务系统。OceanBase v4.1.0 之后,物理备库的产品形态变更为租户级主备,即主或备的角色信息属于租户,分为主租户和备租户,集群不再有主备角色的概念,而只是承载租户的容器。本节适用于集群做 Sysbench 测试前,对单机版集群的资源规格和集群配置等做一轮巡检,已提供更好的性能表现。

ActionTech的博客 3447

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【oceanbase】oceanbase企业单机版安装测试

安装还算简单,文档、工具也基本完善,但企业版最好还是购买支持服务来提供保障,对于普通用户而言,国产数据库的运维(尤其是非开源的)还是交给专业人士比较好。DarkAthena本博客所有文章除特别声明外,均采用许可协议。转载请注明出处。

DarkAthena的博客 1587

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OceanBase 4.0 - 从分布式到单机,从单机到分布式

近些年国产化数据库如雨后春笋般冒出并遍地开花。据某技术平台不完全统计,国产化数据库(见图 )已达 200余个,对于这些数据库的名字,即使作为多年数据库从业者的我,也有很多是第一次听说。在这竞争激烈的数据库行业里,要想长久占据一席之地,顺应市场发展并打磨好自己的产品才是硬道理。图1 国产化数据库部分截图。

专注数据库、大数据领域干货分享,用严谨的数据技术广交天下朋友。 2906

【OceanBase 的多租户架构是怎样的?有什么优势?】

作为“DBA面试君”,在聊 OceanBase (OB) 的时候,“多租户(Multi-tenancy)” 是你必须拿捏住的核心卖点。在传统数据库(如 MySQL/Oracle)中,多租户通常是通过多个实例或逻辑 Schema 实现的,资源隔离很差。而 OceanBase 在内核层面实现了一套类似“云操作系统”的资源管理机制。

weixin_63349582的博客 603

技术分享 | OceanBase 资源及租户管理

作者:何文超爱可生南区交付服务部 DBA 团队成员,主要负责MySQL故障处理,MySQL高可用架构改造,OceanBase相关技术支持。爱好足球,羽毛球。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

ActionTech的博客 2277

数据库管理-第263期 VLDB:OceanBase Paetica(20241118)

本期通过OceanBase在VLDB中论文的部分内容进行解读,简单介绍了OB 4.0的一些创新性特性。

yhw1809的博客 945
上一篇: MySQL 如何避免 RC 隔离级别下的 INSERT 死锁?
下一篇: MySQL 8.0 新密码策略的细节补充
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值