嵌入式工程师如何高效阅读与利用飞思卡尔归档技术文档
2026/6/12 0:58:03
OceanBase 是由蚂蚁集团自主研发的分布式关系型数据库,兼容 MySQL 和 Oracle 模式,具备高可用、强一致性、水平扩展、HTAP(混合事务/分析处理)等能力。以下是其核心基础概念与常用语法介绍。
| 组件 | 说明 |
|---|---|
| OBServer | 数据库服务进程,负责 SQL 执行、存储引擎、事务处理 |
| RootService | 集群管理服务(自动选主),负责负载均衡、副本调度、DDL 管理 |
| OCP(OceanBase Cloud Platform) | 运维管理平台(Web UI),用于监控、备份、告警等 |
| ODP(OceanBase Database Proxy) | 代理层,客户端连接 ODP,由其路由到具体 OBServer |
mysql_tenant,oracle_tenant)。OceanBase 支持两种 SQL 模式:
| 特性 | MySQL 模式 | Oracle 模式 |
|---|---|---|
| 默认端口 | 2881 | 2881 |
| 标识符大小写 | 不敏感(默认转小写) | 敏感(双引号保留大小写) |
| 字符串引号 | 单引号' | 单引号' |
| 分页语法 | LIMIT offset, size | ROWNUM或FETCH FIRST |
| 自增列 | AUTO_INCREMENT | SEQUENCE + TRIGGER |
| 日期函数 | NOW(),CURDATE() | SYSDATE,CURRENT_DATE |
💡 创建租户时指定模式:
CREATETENANT mysql_tenant RESOURCE_POOL_LIST=('pool1'),PRIMARY_ZONE='zone1',LOCALITY='F@zone1,F@zone2,F@zone3',COMMENT'MySQL mode tenant';
-- 普通表(自动分区)CREATETABLEusers(idBIGINTPRIMARYKEY,nameVARCHAR(50),create_timeDATETIME);-- 显式 HASH 分区(按 id 分 8 个分区)CREATETABLEorders(order_idBIGINT,user_idBIGINT,amountDECIMAL(10,2))PARTITIONBYHASH(user_id)PARTITIONS8;-- RANGE 分区CREATETABLElogs(log_idBIGINT,log_dateDATE)PARTITIONBYRANGECOLUMNS(log_date)(PARTITIONp2023VALUESLESS THAN('2024-01-01'),PARTITIONp2024VALUESLESS THAN('2025-01-01'));-- 插入数据INSERTINTOusers(id,name,create_time)VALUES(1,'Alice',NOW());-- 查询(支持 MySQL 语法)SELECT*FROMusersWHEREid=1LIMIT1;-- 分布式 JOIN(自动优化)SELECTu.name,o.amountFROMusers uJOINorders oONu.id=o.user_id;-- 显式事务(强一致性)BEGIN;UPDATEaccountsSETbalance=balance-100WHEREuser_id=1;UPDATEaccountsSETbalance=balance+100WHEREuser_id=2;COMMIT;-- 查看当前租户分区信息SELECT*FROMoceanbase.DBA_OB_TABLE_LOCATIONS;-- 查看会话SHOWPROCESSLIST;-- 查看资源使用SELECT*FROMGV$OB_SERVERS;-- 所有节点状态-- 在非分区键上创建全局索引CREATEINDEXidx_order_amountONorders(amount)GLOBAL;-- 查询 5 分钟前的数据(依赖 clog 保留时间)SELECT*FROMusersASOFTIMESTAMP(NOW()-INTERVAL5MINUTE)WHEREid=1;-- JSON 类型(MySQL 模式)CREATETABLEproducts(idBIGINT,info JSON);INSERTINTOproductsVALUES(1,'{"color": "red", "size": "M"}');SELECTinfo->'$.color'FROMproducts;| 场景 | 命令 |
|---|---|
| 查看集群状态 | SHOW DATABASES;→oceanbase库中有集群元数据 |
| 切换租户 | USE your_tenant_name; |
| 查看执行计划 | EXPLAIN SELECT ...; |
| 查看变量 | SHOW VARIABLES LIKE '%timeout%'; |
| 设置会话参数 | SET ob_query_timeout = 10000000;(单位微秒) |
| 功能 | OceanBase(MySQL 模式) | MySQL |
|---|---|---|
| 自增列 | 支持,但性能较差(建议用序列) | 原生高效支持 |
| 外键 | ❌ 不支持 | ✅ 支持 |
| 存储过程 | ✅ 支持(MySQL 模式) | ✅ 支持 |
| 触发器 | ✅ 支持 | ✅ 支持 |
| 全文索引 | ❌ 不支持 | ✅ 支持 |
| 临时表 | ❌ 不支持 | ✅ 支持 |
| 分区类型 | HASH/RANGE/LIST/KEY | 更丰富(如 COLUMNS) |
📌最佳实践:
- 避免大事务(默认超时 10s)
- 主键设计尽量单调递增(避免热点)
- OLAP 查询走只读副本或独立分析型租户
部署:使用 OceanBase Docker 镜像 快速启动。
连接:
mysql -h127.0.0.1 -P2881 -uroot@sys -p -c -A创建租户 & 数据库:
CREATETENANT test_tenant resource_pool_list=('test_pool');CREATEDATABASEtest_db;USEtest_db;| 关键点 | 说明 |
|---|---|
| 定位 | 分布式 HTAP 数据库,替代 MySQL/Oracle |
| 核心优势 | 强一致性、水平扩展、金融级高可用 |
| 使用门槛 | 兼容 MySQL/Oracle,但需注意限制(如无外键) |
| 适用场景 | 高并发交易系统、海量数据存储、混合负载 |
官方文档:https://www.oceanbase.com/docs
开源版本:OceanBase CE(社区版)免费可用。
掌握以上概念和语法,即可开始在 OceanBase 上开发和部署应用!