爆款云主机低至25.83元/年
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 云聚517 · 好价翼起拼 NEW 爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
Token服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      EasyCoding敏捷开发平台_相关内容
      • 重命名表(RENAME TABLE)
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍重命名表的RENAME TABLE语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 语法 目前单条语句仅支持对单个表进行重命名,支持的语法如下: plaintext RENAME TABLE oldtable TO newtable; 参数说明 oldtable:需要重命名的表名,必填 newtable: 重命名后的表名,必填
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        重命名表(RENAME TABLE)
      • 查询命令
        本页介绍了文档数据库服务的主要查询命令。 文档数据库服务主要查询命令有: find():最基本的查询命令,基础语法是:db.collection.find(query, projection)。 query:选择条件,类似于 WHERE 子句。 projection:可选,使用来projection展示查询的字段,类似于SQL的SELECT。通过{ field: 1 }这样的语法可以指定要返回的字段,其中1表示要返回该字段,0表示不返回该字段 。 示例: //查询age20的数据 db.students.find({age: 20}) //查询age20的数据,查询的结果只返回name,不返回id db.students.find({age: 20}, {name: 1, id: 0}) findOne():查找一条数据,会返回第一条匹配到的数据。语法: db.collection.findOne(query, projection) 示例: db.students.findOne({age: 20}) limit() 和 skip():分页查询,limit() 指定数据条数,skip()跳过前几条: db.students.find().limit(5) db.students.find().limit(5).skip(10) // 跳过前10条,返回5条数据 sort():排序。按照一个字段排序,orderly 参数指定排序方式,1为降序,1为升序,默认升序: db.students.find().sort({age:1}) db.students.find().sort({age: 1}) //降序 count(): 统计结果数量: db.collection.find(query).count() 也就是说, 文档数据库服务查询主要通过 find() 和查询条件的组合来实现,在find()中使用limit()、skip()、sort()、count()等方法进行查询控制。 还有一点需要留意,查询的结果,返回的是一个Cursor。Cursor使用完毕后要及时关闭,否则会产生内存堆积。
        来自:
        帮助文档
        文档数据库服务
        开发指南
        文档数据库服务使用规范
        文档数据库服务基础命令规范
        查询命令
      • 动态加载元数据
        DRDS支持使用reload命令来动态重新加载元数据,避免数据丢失的同时,无需重启数据库进程或整个集群,可有效降低对在线服务的影响。 注意 仅V5.1.9.6020.2533及以后版本的实例,支持该功能。 背景信息 DBProxy通过ZooKeeper广播机制同步库表、参数、关联MySQL元数据信息,在网络异常或节点高负载、异地容灾场景下,DBProxy内存可能未完全加载元数据。此时,可通过动态加载元数据能力来为DBProxy重新读取并应用其参数配置或元数据,无需重启DBProxy进程,动态更新集群配置或元数据信息,最大限度地减少对在线服务的影响,避免因重启操作导致服务中断。 使用说明 支持动态加载的DRDS 元数据和对应的命令如下: 加载metadata 支持加载schema(库)、table(表)、sequence(序列)、index(切片索引)元数据 命令如下: plaintext reload metadata [where schema? [and table ?] where table in ('schema1'.'table1',...)] 参数 说明 schema 加载指定schema中所有表或指定表的元数据信息,其中zk function tablerule元数据全量加载,不区分库表。 table 表名。 使用示例: 加载更新序列(sequence) 注意 为保证序列全局唯一递增,reload后的新序列会增加一段余量,余量 2 max(1000, increment) ,即新序列起始值 集群节点序列最大值 + 余量。 命令如下: plaintext reload sequence [where schema? [and sequence?] where sequence in ('schema1'.'sequence',...)] 参数 说明 schema 库名。 sequence 序列名。 使用示例:
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        动态加载元数据
      • 其他
        本文为您介绍DRDS支持的其他管理命令。 UDAL KILL CONNECTION 'connectionids' ... 语法说明 终止连接 示例 plaintext mysql> UDAL KILL CONNECTION 1; Query OK, 0 rows affected (0.00 sec) UDAL STOP HEARTBEAT 'datanodes' ... FOR 'period' 语法说明 对指定数据库停止心跳,检测一段事件,命令中的参数说明如下: 参数 描述 datanodes 数据节点名称列表 period 停止时间 (Seconds),该参数为可选参数 示例 plaintext mysqI> UDAL STOP HEARTBEAT 'dn1' for '12' Query OK,0 rows affected (0.00 sec) UDAL SWITCH DATASOURCE 'datanodes' ... [ TO 'index' ] 语法说明 切换数据源,命令参数说明如下: 参数 描述 datanodes 数据节点名称列表 index 数据源索引 示例 plaintext mysql> UDAL SWITCH DATASOURCE 'dn1' 'dn2' [ TO '3' ] ; Query OK, 0 rows affected (0.00 sec) UDAL VALIDATE SEQUENCE WHERE SCHEMA 'schema' AND SEQUENCE 'sequence' 语法说明 校验序列是否正常,其中: 命令参数说明如下: 参数 描述 schema 序列所属schema sequence 序列名称 回显参数说明如下: 参数 描述 Status 序列状态,可能值: NORMAL:正常 ERROR:异常 示例 plaintext mysql> UDAL VALIDATE SEQUENCE WHERE SCHEMA 'udaladmin' AND SEQUENCE 'sequdaladminid'; + Status + NORMAL + 1 row in set (0.00 sec)
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        管理命令
        其他
      • 实用SQL语句
        参数 描述 Schema schema名称 Table table名称 Datanode 所属数据库节点 Table Type table的分片类型 Database 所属节点上的schema
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        实用SQL语句
      • RECYCLE_BIN
        本文为您介绍DRDS管理命令中的管理回收站(RECYCLEBIN)的命令。 UDAL RECYCLEBIN SHOW CONFIG 语法说明 查询recyclebin配置信息 示例 plaintext mysql> UDAL RECYCLEBIN SHOW CONFIG; Empty set (0.02 sec) UDAL RECYCLEBIN SET CONFIG [RETAINNUMBER?][,RETAINTYPE?][,DELETETABLE?][,DELETETIME?] 语法说明 设置recyclebin配置 示例 plaintext mysql> UDAL RECYCLEBIN SET CONFIG RETAINNUMBER10; Query OK, 1 row affected (0.03 sec) UDAL RECYCLEBIN RESTORE TABLE WHERE ID ? 语法说明 通过recyclebin恢复表 UDAL RECYCLEBIN PURGE TABLE WHERE ID ? [WITH PHYSICAL DELETE] 语法说明 清除recyclebin中的表,其中,ID ? [物理删除] 示例 plaintext mysql> UDAL RECYCLEBIN PURGE TABLE WHERE ID 4; Query OK, 1 row affected (0.02 sec) UDAL RECYCLEBIN SHOW TABLE 语法说明 查看recyclebin中的表信息 支持的完整语法如下: plaintext UDAL RECYCLEBIN SHOW TABLE [WHERE [ID ?] [[AND] SCHEMAID ?] [[AND] {DELETESTATUS ? DELETESTATUS ! ?} ] [[AND] SCHEMANAME LIKE ?] [[AND] {OBJNAME LIKE ? OBJNAME ?}] [[AND] GMTCREATE > ?] [[AND] GMTCREATE UDAL RECYCLEBIN SHOW TABLE; ++++++++++++++++ Id Clusterid Tenantid Prodinstid Objtype Schemaname Objname Tablescripts Expiretime Deletestatus Gmtcreate Gmtmodify Recycleid Schemaid Deletetime Deletetable ++++++++++++++++ 2 /dbproxycluster/dbproxycluster0000014 6749 5e14029f7 0 ggzdb t1 CREATE TABLE IF NOT EXISTS t1 ( id int(10) NOT NULL, k int(10) NOT NULL DEFAULT '0', c char(120) COLLATE utf8mb4bin NOT NULL DEFAULT '', pad char(60) COLLATE utf8mb4bin DEFAULT NULL, KEY xid (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4bin; 20250522 10:06:48 0 20250507 10:06:48 20250507 10:06:48 /dbproxycluster/dbproxycluster0000013714/schemas/schema0000017/recyclebin/table0000014161 /dbproxycluster/dbproxycluster0000014/schemas/schema0000017 0 1 3 /dbproxycluster/dbproxycluster0000014 6749 5e140229f7 0 ggzdb t2 CREATE TABLE IF NOT EXISTS t2 ( id int(10) NOT NULL, k int(10) NOT NULL DEFAULT '0', c char(120) COLLATE utf8mb4bin NOT NULL DEFAULT '', pad char(60) COLLATE utf8mb4bin NOT NULL DEFAULT '', KEY xid (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4bin; 20250517 10:16:39 0 20250507 10:16:38 20250507 10:16:38 /dbproxycluster/dbproxycluster0000014/schemas/schema0000017/recyclebin/table0000013 /dbproxycluster/dbproxycluster0000014/schemas/schema0000017 0 1 ++++++++++++++++ 2 rows in set (0.02 sec)
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        管理命令
        RECYCLE_BIN
      • CREATE
        本文为您介绍DRDS管理命令中管理用户和角色的命令。 UDAL CREATE USER 'user' IDENTIFIED BY 'identified by' SET MANAGECOMMAND managecommand 语法说明 创建、修改或删除DBProxy用户 示例 plaintext mysql> UDAL CREATE USER 'udaladmin02' IDENTIFIED BY xxxxxxx'; Query OK, 0 rows affected (0.33 sec) UDAL CREATE ROLE 'role' COMMENTS 'comments'; 语法说明 创建、修改或删除DBProxy角色 示例 plaintext mysql> UDAL CREATE ROLE 'role'; Query OK, 0 rows affected (0.23 sec)
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        管理命令
        CREATE
      • BR
        DBProxy支持通过命令行方式来备份ZooKeeper元数据,本文为您介绍相关的ZooKeeper元数据备份命令。 注意 仅V5.1.20.0.13及以后版本的实例,支持执行本文命令。 UDAL BR SHOW CONFIG 语法说明 查看ZooKeeper元数据备份功能相关的参数配置情况。 返回信息说明如下: 参数 描述 enableddlbackupzkmetadata 是否启用执行完DDL语句后自动备份ZooKeeper元数据到实例基础库。 可能值: true:启用,即每次成功执行完DDL语句后,自动触发一次异步备份ZooKeeper元数据到实例基础库。 false:不启用。 默认值:false。 backupzkmetadatalimit 备份ZooKeeper元数据记录的最大值。 可能值:2(不包括1)≤ 该值 ≤ 2147483647之间的正整数。 默认值:50,即默认最多保留50个ZooKeeper元数据备份记录。 注意 当ZooKeeper元数据备份记录超出该参数值时,会在备份前自动清理最旧的备份记录,以节省数据空间。 示例 plaintext mysql> udal br show config; ++ Enableddlbackupzkmetadata Backupzkmetadatalimit ++ false 50 ++ 1 row in set (0.00 sec) UDAL BR SET CONFIG [ENABLEDDLBACKUPZKMETADATA?] [, BACKUPZKMETADATALIMIT?] 语法说明 配置ZooKeeper元数据备份功能相关的配置参数,包括: 参数 描述 ENABLEDDLBACKUPZKMETADATA 是否启用执行完DDL语句后自动备份ZooKeeper元数据到实例基础库。 取值范围: true:启用,即每次成功执行完DDL语句后,自动触发一次异步备份ZooKeeper元数据到实例基础库。 false:不启用。 默认值:false。 BACKUPZKMETADATALIMIT 备份ZooKeeper元数据记录的最大值。 取值范围:2(不包括)≤ 该值 ≤ 2147483647之间的正整数。 默认值:50,即默认最多保留50个ZooKeeper元数据备份记录。 注意 当ZooKeeper元数据备份记录超出该参数值时,会在备份前自动清理最旧的备份记录,以节省数据空间。 示例 plaintext mysql> udal br set config enableddlbackupzkmetadata ON, backupzkmetadatalimit 2; Query OK, 1 row affected (0.06 sec)
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        管理命令
        BR
      • 字段规范
        本文为您介绍字段规范。 1. 字段类型越短越好(可以用int的则不能用bigint,能用tinyint的不能用int) 满足需求的情况下,字段类型越短,会占用更少的存储空间,更少的磁盘IO和网络IO,更少的MySQL计算空间和APP计算空间。常见的字段类型介绍如下: 2. 尽量不要使用default null,所有的字段尽可能都设定为not null并为其定义默认值: 索引不会包括NULL值。影响索引的统计信息,影响优化器的判断。 复合索引中只要有一列含有NULL值,则该列对于此复合索引将是无效的。 3. 需要多表 join的字段或直接比较的字段,数据类型保持绝对一致。 杜绝隐形转换,比如int同char进行比较,造成效率低下。 4. 当字段的类型为枚举型或布尔型时,建议使用tinyint类型。 5. 一般情况下不允许使用TEXT、BLOG,确实需要则拆分。 本质上说,不是MySQL不适合存储text,而是在太多的情况下我们期望MySQL能够更加高效的提供小数据查询/事务处理。 6. 同理,当varchar字段超过一定长度(256)时,建议拆分。 7. 内容明确,不做变更的类型代码可用枚举类型 8. 关于存储IP地址时字段类型的选择 如果是IPV4地址,存放使用int类型,而不是char(15)。Int只占4个字节,字符型占用16个字节,符合越短越好的原则。另外索引长度降低,检索效率更高。 如果是IPV6地址,请找DBA商量决定如何存储。 9. 关于存储时间字段类型的选择 对时间范围没有要求时,强烈建议采用TIMESTAMP取代DATETIME,因为TIMESTAMP更短(4个字节),而DATETIME占用8个字节 两者区别如下: 时间范围: datetime 以'YYYYMMDD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'10000101 00:00:00'到'99991231 23:59:59' TIMESTAMP值不能早于1970或晚于2037 存储方式: TIMESTAMP1.4个字节储存 2.值以UTC格式保存 3.时区转化,存储时对当前的时区进行转换,检索时再转换回当前的时区。datetime 1.8个字节储存 2.实际格式储存 3.与时区无关
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        SQL调优指南
        SQL基础规范
        字段规范
      • 数据表规范
        本文为您介绍数据表规范。 1. 首先明确规定所有逻辑业务上实现,禁用存储过程,函数,触发器,视图。 2. 统一使用InnoDB存储引擎,系统已指定默认存储引擎为innodb,所以创建表时无需再指定存储引擎。InnoDB存储引擎是事务型的存储引擎,支持行锁、MVCC、崩溃恢复、具有更高效的IO,更先进的缓引和写策略。 3. 创建表时要明确定义主键,推荐为int/bigint类型的字段作为主键,如果是自增ID则更为完美。 MySQL INNODB为索引组织表,如果没有显式定义主键,InnoDB会使用表上的唯一索引作为主键,如果这个索引特别长,性能会特别差;如果表上没有唯一索引,MySQL会创建一个6个字节的整型作为隐含的主键,存在被写完而不被察觉的风险,而且性能也不佳。 如果没有显式设置主键,则很多工具无法使用(如online ddl),会让日常的维护工作变得复杂。 自增ID可以用来做分页优化。 自增ID可以减少复制延时。 4. 数据表设计时必须包含日期字段,createitme 和lastupdatetime。 每个表的update语句,必须包含对UpdateTime的更新。 5. 每个数据表中字段数量尽可能少。当表的字段数较多时,建议将表分成两张表,一张作为条件查询表,一张作为详细内容表。 6. 数据表记录数尽可能少,线上单表数据建议不超过2000万行,可以通过分库、分表方式实现。 7. 创建表时,所有表名、字段名都需要添加注释,示例如下: plaintext 创建名为 exampletable 的表 CREATE TABLE exampletable ( id INT AUTOINCREMENT PRIMARY KEY, 主键ID,自增 username VARCHAR(50) NOT NULL, 用户名,不能为空 email VARCHAR(100) UNIQUE, 邮箱,唯一约束 age INT, 年龄,可以为空 createdat TIMESTAMP DEFAULT CURRENTTIMESTAMP 创建时间,默认当前时间 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; 8. 表字符集统一使用utf8mb4,核对规则为utf8mb4bin,不允许其它字符编码。也不允许在字段里边自己定义字符集,以下为违规示例: plaintext 错误示例:使用 utf8 字符集 CREATE TABLE exampletablewrong ( id INT AUTOINCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; 错误示例:在字段级别定义字符集 CREATE TABLE exampletablewrong ( id INT AUTOINCREMENT PRIMARY KEY, username VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4bin NOT NULL );
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        SQL调优指南
        SQL基础规范
        数据表规范
      • 时间函数
        函数表达式 函数描述 ADDDATE() Add time values (intervals) to a date value ADDTIME() Add time CURDATE() Return the current date CURRENTDATE() CURRENTDATE Synonyms for CURDATE() CURRENTTIME() CURRENTTIME Synonyms for CURTIME() CURRENTTIMESTAMP() CURRENTTIMESTAMP Synonyms for NOW() CURTIME() Return the current time DATEADD() Add time values (intervals) to a date value DATEFORMAT() Format date as specified DATESUB() Subtract a time value (interval) from a date DATE() Extract the date part of a date or datetime expression DATEDIFF() Subtract two dates DAY() Synonym for DAYOFMONTH() DAYNAME() Return the name of the weekday DAYOFMONTH() Return the day of the month (031) DAYOFWEEK() Return the weekday index of the argument DAYOFYEAR() Return the day of the year (1366) EXTRACT() Extract part of a date FROMDAYS() Convert a day number to a date FROMUNIXTIME() Format UNIX timestamp as a date GETFORMAT() Return a date format string HOUR() Extract the hour LASTDAY() Return the last day of the month for the argument LOCALTIME() LOCALTIME Synonym for NOW() LOCALTIMESTAMP, LOCALTIMESTAMP() Synonym for NOW() MAKEDATE() Create a date from the year and day of year MAKETIME() Create time from hour, minute, second MICROSECOND() Return the microseconds from argument MINUTE() Return the minute from the argument MONTH() Return the month from the date passed MONTHNAME() Return the name of the month NOW() Return the current date and time PERIODADD() Add a period to a yearmonth PERIODDIFF() Return the number of months between periods QUARTER() Return the quarter from a date argument SECTOTIME() Converts seconds to ‘HH:MM:SS’ format SECOND() Return the second (059) STRTODATE() Convert a string to a date SUBDATE() Synonym for DATESUB() when invoked with three arguments SUBTIME() Subtract times SYSDATE() Return the time at which the function executes TIME() Extract the time portion of the expression passed TIMEFORMAT() Format as time TIMETOSEC() Return the argument converted to seconds TIMEDIFF() Subtract time TIMESTAMP( With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments TIMESTAMPADD() Add an interval to a datetime expression TIMESTAMPDIFF() Subtract an interval from a datetime expression UNIXTIMESTAMP() Return a UNIX timestamp UTCDATE() Return the current UTC date UTCTIME() Return the current UTC time UTCTIMESTAMP() Return the current UTC date and time WEEKDAY() Return the weekday index WEEKOFYEAR() Return the calendar week of the date (153) YEAR() Return the year
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        时间函数
      • 授权和回收权限的GRANT/REVOKE语句
        REVOKE语句 支持的语法: plaintext 从角色或者用户回收库表权限 [UDAL] REVOKE { 权限列表 ALL } ON { SCHEMA TABLE } '对象名称' FROM { USER ROLE } '授权对象'; 从用户回收授权的角色权限 [UDAL] REVOKE ROLE '角色列表' FROM USER 'username'; 语法说明: 权限列表:填写ALL代表回收所拥有的ALL权限,以及可选回收权限:SELECTDELETEUPDATEINSERTTRUNCATEDECRYPT,当需要同时设置多个权限,用逗号进行隔开,必填 对象名称:当回收库权限时填写库名,当需要回收表权限时填写表名格式为 schemaname.tablename,目前仅支持对单个表或者库进行权限回收,必填 授权对象:填写用户名或者表名,必填 角色列表:回收的角色,可以是多个角色,如果是同时回收多个角色,需要用逗号分开并用单引号或双引号包括起来,必填 username:需要回收权限的用户名,必填 使用示例: plaintext 回收用户test的库权限 UDAL REVOKE ALL ON SCHEMA 'bugtest' FROM USER 'test'; 回收用户test的表权限 UDAL REVOKE SELECT,INSERT ON TABLE 'bugtest.sharding1' FROM USER 'test'; 回收用户test的角色权限 UDAL REVOKE ROLE 'role1, role2' FROM USER 'test'; 回收角色role1的库权限 UDAL REVOKE all on schema 'bugtest' FROM role 'role1'; 回收角色role1的表权限 UDAL REVOKE delete on table 'bugtest.sharding1' FROM role 'role1';
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        授权和回收权限的GRANT/REVOKE语句
      • AUTO_INCREMENT
        DRDS支持通过隐式序列功能(创建表时添加AUTOINCREMENT关键字,启用隐式序列功能)为列设置自增属性,能够自动为列填充全局唯一值。 背景信息 什么是隐式序列 在传统的单库环境中,AUTOINCREMENT是用于生成主键自增值的常用机制,能够保证主键在单实例数据库中的唯一性。然而,在分布式数据库DRDS中,数据被分片存储在多个存储节点中,原有的自增机制将无法保证全局唯一性,因此DRDS引入了基于全局序列的隐式序列机制,用于替代传统的AUTOINCREMENT功能。 隐式序列与AUTOINCREMENT的关系 在DRDS中,虽然通过添加AUTOINCREMENT关键字实现自增,但实际不是调用数据库原生的自增逻辑,而是通过隐式的全局序列实现唯一值生成。 注意 隐式序列由系统自动维护,无需用户手动干预。 隐式序列的生命周期 隐式序列由系统在建表时自动创建,并在DROP表时自动删除。 注意 不推荐用户手动创建或删除隐式序列,可能会造成ID冲突或数据一致性问题。 HINT路由下的行为差异 当使用HINT路由 + INSERT语句时,DBProxy无法改写SQL,因此不会自动填充自增ID: 注意 不推荐在需要使用AUTOINCREMENT功能的表中使用HINT路由。 以/+TDDL:node('group1')/ INSERT INTO test(value) VALUES(1); 为例,该命令将直接透传到物理库。若该表中的自增列未显式给值,数据库可能会使用默认值(例如0),若该值不唯一,则会报错(例如Duplicate entry)。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        AUTO_INCREMENT
      • 全局序列和全局索引的DDL语句
        本文为您介绍DBProxy全局序列和全局索引的DDL语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 seqop 执行seqop的DDL语句的用户需要有对应的schema的ALL权限,支持执行的语句有三种,以下为执行示例,可以按需修改。 如果忘记seqop DDL语句的语法,可以通过控制台上的序列管理页面查看。 seqop参数的解释: name:序列名称,必要参数 value:对应控制台页面的序列当前值,addseq与alterseq中该项为必要参数 increment:序列步长 max:序列最大值 min:对应控制台页面的序列初始值 isCycle:是否是循环序列 注意 seqop DDL语句的参数顺序必须按照示例的顺序填写。 1. 序列创建语句 plaintext //创建非循环序列 seqop @@addseq name'test1' and value'11321' and increment'10' and max'100000' and isCycle'false'; //创建循环序列 seqop @@addseq name'test2' and value'1001' and increment'1000' and min'1' and max'999999' and isCycle'true'; 用DDL语句创建序列可以设置更丰富的参数,在控制台页面创建序列时仅可填写序列名称、最大值、初始值,且初始值加默认步长必须小于等于最大值。 2. 序列更新语句 plaintext //更新非循环序列 seqop @@alterseq name'test1' set value'11321' and increment'10' and max'100000' and isCycle'false'; //更新循环序列 seqop @@alterseq name'test2' set value'1001' and increment'1000' and min'1' and max'999999' and isCycle'true'; 3. 序列删除语句 plaintext seqop @@deleteseq name‘name’;
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        全局序列和全局索引的DDL语句
      • 设置分片规则的DDL语句
        分片算法 设置分片规则时需要使用到分片算法,总共有7种分片算法,如下表所示: 分片算法名称 分片算法ID 算法参数及示例 是否可用于库内分表 取模分片 PartitionByMod 是 字符串hashCode取模分片 PartitionByStringMod 是 枚举分片 PartitionByFileMap mapfile'{"1":"0","2":"1"}' 表示分片键值为1的数据落到第一个分片上,分片键值为2的数据落到第二个分片上 defaultnode'0' 表示分片键值为其它值的数据落到默认第一个分片上 否 时间范围分片 PartitionByDateRange startdate'20180710' 表示开始日期 timeunitlen'1' 表示日期周期 timeunittype'year' 表示时间单位,可选值为[day,week,month,year]之一 库内分片参数:innerstartdate、 innertimeunitlen、innertimeunittype,参数含义与startdate、timeunitlen和timeunittype相同 是 枚举分组取模分片 PartitionByEnumAndMod shardingarea'name'表示分组键字段 mapfile'{"1":"0,1","2":"2,3"}' 表示分组键值为1的数据落到第1和第2个分片,分组键值为2的数据落到第3和第4个分片 defaultnode'0' 表示分组键值为其它的数据落到默认第1个分片 否 枚举分组字符串hashCode取模分片 PartitionByEnumAndStringMod shardingarea'employeeid' 表示分组键字段 mapfile'{"BJ":"0","SH":"1"}' 表示分组键值为BJ的数据落到第1分片,分组键值为SH的数据落到第2个分片 defaultnode'2' 表示分组键值为其它的数据落到默认第3个分片 否 数值类型Range分片 PartitionByIntRange rangevalues'1,10,MAXVALUE' :表示分为3个分片,第一个分片包含小于1的行,第二个分片包含大于等于1小于10的行,第三个分片包含大于等于10的行。 dn'shard1,shard2,shard3' :表示上述三个分片分别位于shard1、shard2和shard3上。 注意 rangevalues必须与dn的元素个数相同 。 dn可省略,表示包含所有shard。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        设置分片规则的DDL语句
      • 全局序列设置规则
        本章节介绍DRDS全局序列的设置规则。 序列步长不宜过小,过小则访问序列存储数据组件(Zookeeper)频繁,取1000个序列,步长设置为1,则与Zookeeper交互1000次,设置为1000,则只需交互一次 (步长默认1000)。 序列步长不宜过大,过大则DRDS重启时丢失的序列段就越大,且多DRDS访问时会加大序列的无序性。 序列的值的属性是long型,理论上最大值的设置不能超过9223372036854775807。 序列名称不区分大小写。 序列分为循环序列和非循环序列,循环序列到达最大值后再从最小值开始循环获取。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        全局序列使用
        全局序列设置规则
      • 全局序列概述
        本章节介绍DRDS全局序列的概述。 全局序列使用背景 数据分布式存放后,原来数据库的自增序列无法满足全局唯一的要求,DRDS提供针对分布式的全局序列。简单说就是为应用提供全局唯一的序列号,主要用于替换单机数据库的自增序列,因为在分布式数据库环境下,使用单机数据库的自增序列无法保障数据库主键全局唯一。 全局序列特性 高性能:DRDS会按步长在本地内存中缓存一段序列,序列段用完后再去获取,大大提升了序列访问性能,但带来的问题就是多个DRDS并发访问时无法保证序列严格顺序递增,所以不能作为数据生成时间排序的依据。 高可用:DRDS及Zookeeper集群的高可用性保障了全局序列的高可用性。 隔离性:通过schema进行隔离,无schema权限禁止访问。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        全局序列使用
        全局序列概述
      • 创建表(CREATE TABLE)
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍创建数据表的DDL语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 语法 plaintext CREATE TABLE [IF NOT EXISTS] tablename (createdefinition, ...) [tableoption] { [partitionoption] [shardinghint] } createdefinition: columnname columndefinition {INDEX KEY} [indexname] [indextype] (keypart, ...) ... tableoption: { [ENGINE [] enginename] [CHARACTER SET [] charsetname] [COLLATE [] collationname] } partitionoption: { GLOBAL SINGLE [DN [] ‘dnname’] UDALPARTITION BY { HASH(columnname) [udalpartitionoption] HASHSTRING(columnname) [udalpartitionoption] RANGE(columnname) RANGEVALUES ‘value1[,value2...]’ } [DN [] ‘dnname[,dnname...]’] udalpartitionoption: { PARTITIONS [] number BUCKETS [] number } shardinghint: / sharding @@table name’tablename’ set type ’shardingtype’ [and { dn’dnname[,dnname...]’ shardingalgo’shardingalgo’ shardingid’columnname1’ shardingarea’columnname2’ buckets’number’ rangevalues’value1,value2...’ mapfile’enumvalue1:index1,enumvalue2:index2,...’ defaultnode’node’ startdate’startdate’ timeunittype’timeunittype’ timeunitlen’timeunitlen’ innershardingid’columnname’ innershardingalgo’shardingalgo’ innertotal’number’ innermapfile’enumvalue1:index1,enumvalue2:index2,...’ innerdefaultnode’node’ innerstartdate’startdate’ innertimeunittype’timeunittype’ innertimeunitlen’timeunitlen’ }] / shardingalgo: { mod stringmod filemap daterange enummod enumstringmod PartitionByIntRange } shardingtype: { global single inner sharding }
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        创建表(CREATE TABLE)
      • 修改表(ALTER TABLE)
        语法示例 示例1:添加新列 plaintext 在users表末尾添加age列 ALTER TABLE users ADD COLUMN age INT NOT NULL DEFAULT 0; 在name列后添加email列 ALTER TABLE users ADD COLUMN email VARCHAR(100) AFTER name; 一次性添加多个列 ALTER TABLE users ADD COLUMN (phone VARCHAR(20), address TEXT); 示例2:修改列定义 plaintext 修改username列定义(不重命名) ALTER TABLE users MODIFY COLUMN username VARCHAR(50) NOT NULL UNIQUE; 重命名并修改列 ALTER TABLE users CHANGE COLUMN oldname newname VARCHAR(100) NOT NULL FIRST; 示例3:添加或删除索引 plaintext 添加普通索引 ALTER TABLE users ADD INDEX idxemail (email); 添加唯一索引 ALTER TABLE users ADD UNIQUE KEY ukusername (username); 添加复合索引 ALTER TABLE users ADD INDEX idxnamestatus (lastname, status DESC); 删除索引 ALTER TABLE users DROP INDEX idxemail; 示例4:添加或删除主键 plaintext 添加主键 ALTER TABLE users ADD PRIMARY KEY (id); 删除主键 ALTER TABLE users DROP PRIMARY KEY; 示例5:删除列 plaintext 删除单个列 ALTER TABLE users DROP COLUMN temporaryfield; 删除多个列 ALTER TABLE users DROP COLUMN oldfield1, DROP COLUMN oldfield2; 示例6:修改表属性 plaintext 修改表注释和存储引擎 ALTER TABLE users COMMENT '用户信息表', ENGINE InnoDB; 设置自增起始值 ALTER TABLE users AUTOINCREMENT 1000;
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        修改表(ALTER TABLE)
      • 类型转换函数
        函数表达式 函数描述 BINARY Cast a string to a binary string CONVERT() Cast a value as a certain type CAST() Cast a value as a certain type
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        类型转换函数
      • DDL管理查询类语句
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍dbproxy查询表、DDL任务信息的语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 udal show table UDAL SHOW TABLE语句用于查询表的详细信息。以下是对该语句的详细说明: plaintext UDAL SHOW TABLE [ WHERE [deletestatus 0] [AND zkschemacode ?] [AND zktablecode ?] [AND tabletype IN (?, ...)] [AND tabletype NOT IN (?, ...)] [AND schemaname ?] [[AND (tablename LIKE ? OR tablename LIKE ? OR ...)] [AND tablename ? ] [AND tablename IN (?, ...)]] ORDER BY tableid ] 参数说明: deletestatus:删除标志,取值范围为: 0:表示未删除。 1:表示已删除。 zkschemacode:逻辑库的ZK节点的序列值。 zktablecode:表的ZK节点的序列值。 tabletype:表的分片类型,取值范围为: 1:全局表。 2:分片表(包含5和7)。 3:单片表(包含6) 。 4:未设置分片规则。 5:分片表+库内分表。 6:单片表+库内分表。 7:分片表+库内分桶。 schemaname:逻辑库名。 tablename:表名,支持精确匹配和模糊匹配。 udal show ddljob UDAL SHOW DDLJOB语句用于查询DDL任务的详细信息。 语法: plaintext UDAL SHOW DDLJOB [ WHERE [JOBID?] [TASKID?] [schemaid? [AND result?][AND script like '%?%'][AND createtime>?][AND createtime
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        DDL管理查询类语句
      • 管理用户和角色的DDL语句
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍dbproxy创建、修改、删除用户,以及创建、修改、删除角色的DDL语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 用户、角色、权限相关的语句都对应前端页面的选项, 语句中的值XXXX顺序可以随意调换,不强制顺序与例句一致。 创建用户 支持的语法: plaintext [UDAL] CREATE USER [IF NOT EXISTS] 'username' IDENTIFIED BY '' SET manageCommand 'true' 'false' AND profile 'profilename' AND whitelist 'true' 'false' AND freeFrontConnection 'true' 'false' AND groups '{ "setAll": "true" "false", "groupList": "..." }' AND canhint 'true' 'false' AND role 'rolename [, rolename2, ...]'; 其中,用户名和密码必填,其余参数为非必填。 语法说明: username:需要创建的用户名称。 IDENTIFIED BY:指定用户密码。 manageCommand:是否有管理命令权限(true/false)。 profile:密码策略,设定用户的安全策略或权限等级(如 复杂度高长期有效)。可以填写中文或者英文,所填的值大小写敏感: 中文 英文 复杂度低临时有效 Low complexity temporary effective 复杂度中短期有效 Medium complexity short term effective 复杂度高长期有效 High complexity long term effective 复杂度高永久有效 High complexity permanent whitelist:是否有过载保护白名单权限(true/false)。 freeFrontConnection:是否前端连接不受限(true/false)。 canhint:是否具有Hint权限(true/false)。 role:赋予用户的角色,可以是多个角色,如果是同时赋予多个角色,需要用逗号分开并用单引号或双引号包括起来。 groups:指定用户所拥有权限的分组信息以及对应分组的连接数限制信息,JSON格式,包含setAll和groupList。 setAll表示是否拥有所有分组权限,groupList表示拥有哪些分组权限以及对应的分组的连接数限制。当设置groups参数时必须包含这两个值,否则报错。 其中,groups指定用户所拥有的分组权限时,根据是否前端连接不受限有以下组合: 不设置分组权限,则不需要设置groups参数。 当前端连接不受限,即freeFrontConnectiontrue时,并拥有所有的分组权限,则设置groups'{ "setAll": "true", "groupList": "" }'。 当前端连接不受限,即freeFrontConnectiontrue时,并拥有部分分组权限,则设置groups'{ "setAll": "false", "groupList": "group1,group2" }'。 当前端连接受限,即freeFrontConnectionfalse时,需要设置分组权限时,如果对某分组不设置连接数限制则直接填写分组名称,如果对某分组设置连接数限制则填写 分组名:连接数。 例如,groups '{ "setAll": "false", "groupList":"r1,r2:100,r3" }' 意为拥有部分分组的权限,具体为r1,r2,r3这三个分组的权限,其中r1,r3的前端连接数不受限制, r2的前端连接数限制为100。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理用户和角色的DDL语句
      • 优化表(OPTIMIZE TABLE)
        DRDS支持直接连接DBProxy执行DDL语句,其中,OPTIMIZE TABLE用于优化表性能和空间利用,提升查询性能、更新统计信息等,本文为您介绍OPTIMIZE TABLE语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 OPTIMIZE TABLE语句会根据分片规则的设置在标准库和对应的分片库上执行。 支持的语法如下: plaintext OPTIMIZE TABLE mytable; 注意 只支持单个表。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        优化表(OPTIMIZE TABLE)
      • 字符串函数
        本文介绍DRDS支持的字符串函数。 函数表达式 函数描述 ASCII() Return numeric value of leftmost character BIN() Return a string containing binary representation of a number BITLENGTH() Return length of argument in bits CHARLENGTH() Return number of characters in argument CHAR() Return the character for each integer passed CHARACTERLENGTH() Synonym for CHARLENGTH() CONCATWS() Return concatenate with separator CONCAT() Return concatenated string ELT() Return string at index number EXPORTSET() Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string FIELD() Return the index (position) of the first argument in the subsequent arguments FINDINSET() Return the index position of the first argument within the second argument FORMAT() Return a number formatted to specified number of decimal places HEX() Return a hexadecimal representation of a decimal or string value INSERT() Insert a substring at the specified position up to the specified number of characters INSTR() Return the index of the first occurrence of substring LCASE() Synonym for LOWER() LEFT() Return the leftmost number of characters as specifified QUOTE() Escape the argument for use in an SQL statement NOT REGEXP Negation of REGEXP NOT LIKE Negation of simple pattern matching LTRIM() Remove leading spaces REPEAT() Repeat a string the specifified number of times REPLACE() Replace occurrences of a specifified string MAKESET() Return a set of commaseparated strings that have the corresponding bit in bits set OCT() Return a string containing octal representation of a number MID() Return a substring starting from the specifified position ORD() Return character code for leftmost character of the argument LOWER() Return the argument in lowercase LENGTH() Return the length of a string in bytes LOCATE() Return the position of the fifirst occurrence of substring LPAD() Return the string argument, leftpadded with the specifified string REVERSE() Reverse the characters in a string LIKE Simple pattern matching OCTETLENGTH() Synonym for LENGTH() POSITION() Synonym for LOCATE() RIGHT() Return the specifified rightmost number of characters RPAD() Append string the specifified number of times STRCMP() Compare two strings UPPER() Convert to uppercase TRIM() Remove leading and trailing spaces RTRIM() Remove trailing spaces UNHEX() Return a string containing hex representation of a number SPACE() Return a string of the specifified number of spaces SUBSTRINGINDEX() Return a substring from a string before the specifified number of occurrences of the delimiter SUBSTR() Return the substring as specifified SUBSTRING() Return the substring as specifified UCASE() Synonym for UPPER()
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        字符串函数
      • 数字函数
        本文介绍DRDS支持的数字函数。 函数表达式 函数描述 CRC32() Compute a cyclic redundancy check value DEGREES() Convert radians to degrees DIV Intger division EXP() Raise to the power of FLOOR() Return the largest integer value not greater than the argument LN() Return the natural logarithm of the argument LOG10() Return the base10 logarithm of the argument LOG2() Return the base2 logarithm of the argument LOG() Return the natural logarithm of the first argument MOD() Return the natural logarithm of the first argument %, MOD Modulo operator PI() Modulo operator POW() Return the argument raised to the specified power POWER() Return the argument raised to the specified power RADIANS() Return argument converted to radians RAND() Return a random floatingpoint value ROUND() Round the argument SIGN() Return the sign of the argument SIN() Return the sine of the argument SQRT() Return the square root of the argument TAN() Return the tangent of the argument TRUNCATE( Truncate to specified number of decimal places ABS() Return the absolute value ACOS() Return the arc cosine ASIN() Return the arc sine ATAN() Return the arc tangent ATAN2(),ATAN() Return the arc tangent of the two arguments CEIL() Return the smallest integer value not less than the argument CEILING() Return the smallest integer value not less than the argument CONV() Convert numbers between difffferent number bases COS() Return the cosine COT() Return the cotangent
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        数字函数
      • 流程函数
        本文介绍DRDS支持的流程函数。 函数表达式 函数描述 CASE Case operator IF() If/else construct IFNULL() Null if/else construct NULLIF() Return NULL if expr1 expr2
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        流程函数
      • Python
        环境安装 1. 安装Python。(Python版本为2.7或3.X。) 2. 安装依赖库。(使用公网连接需要安装confluentkafka 1.9.2及以下版本的依赖库) pip install confluentkafka1.9.2 3. 下载Demo包kafkaconfluentpythondemo.zip。 配置修改 1. 如果是ssl连接,需要在控制台下载证书。并且解压压缩包得到ssl.client.truststore.jks,执行以下命令生成caRoot.pem文件。 keytool importkeystore srckeystore ssl.client.truststore.jks destkeystore caRoot.p12 deststoretype pkcs12 openssl pkcs12 in caRoot.p12 out caRoot.pem 2. 修改setting.py文件。(calocation仅在ssl连接时需要配置) kafkasetting { 'bootstrapservers': 'XXX', 'topicname': 'XXX', 'groupname': 'XXX' } 生产消息 发送以下命令发送消息。 python kafkaproducer.py 生产消息示例代码如下: from confluentkafka import Producer import setting conf setting.kafkasetting """初始化一个 Producer 对象""" p Producer({'bootstrap.servers': conf['bootstrapservers']}) def deliveryreport(err, msg): """ Called once for each message produced to indicate delivery result. Triggered by poll() or flush(). """ if err is not None: print('Message delivery failed: {}'.format(err)) else: print('Message delivered to {} [{}]'.format(msg.topic(), msg.partition())) """异步发送消息""" p.produce(conf['topicname'], "Hello".encode('utf8'), callbackdeliveryreport) p.poll(0) """在程序结束时,调用flush""" p.flush() 消费消息 发送以下命令消费消息。 python kafkaconsumer.py 消费消息示例代码如下: from confluentkafka import Consumer, KafkaError import setting conf setting.kafkasetting c Consumer({ 'bootstrap.servers': conf['bootstrapservers'], 'group.id': conf['groupname'], 'auto.offset.reset': 'latest' }) c.subscribe([conf['topicname']]) while True: msg c.poll(1.0) if msg is None: continue if msg.error(): if msg.error().code() KafkaError.PARTITIONEOF: continue else: print("Consumer error: {}".format(msg.error())) continue print('Received message: {}'.format(msg.value().decode('utf8'))) c.close()
        来自:
        帮助文档
        分布式消息服务Kafka
        开发指南
        Python
      • Java
        SSL消费消息 import com.rabbitmq.client.; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.; import java.security.cert.CertificateException; import java.util.concurrent.TimeoutException; public class RabbitmqConsumerSsl { //队列名称 private final static String QUEUENAME "helloMQ"; public static void main(String[] args) throws IOException, TimeoutException { //创建连接工厂 ConnectionFactory factory new ConnectionFactory(); //设置主机ip factory.setHost("127.0.0.1"); // 设置amqp的ssl端口号 factory.setPort(5671); String ksFile "/sslpath/ssl/clientrabbitmqkey.p12"; String tksFile "/sslpath/ssl/truststore"; SSLContext c null; try { char[] keyPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore ks KeyStore.getInstance("PKCS12"); ks.load(new FileInputStream(ksFile), keyPassphrase); KeyManagerFactory kmf KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, keyPassphrase); char[] trustPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore tks KeyStore.getInstance("JKS"); tks.load(new FileInputStream(tksFile), trustPassphrase); TrustManagerFactory tmf TrustManagerFactory.getInstance("SunX509"); tmf.init(tks); c SSLContext.getInstance("tlsv1.2"); c.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); } catch (KeyStoreException e) { throw new RuntimeException(e); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } catch (CertificateException e) { throw new RuntimeException(e); } catch (UnrecoverableKeyException e) { throw new RuntimeException(e); } catch (KeyManagementException e) { throw new RuntimeException(e); } factory.setSaslConfig(DefaultSaslConfig.EXTERNAL); factory.useSslProtocol(c); //设置Vhost,需要在控制台先创建 factory.setVirtualHost("vhost"); //基于网络环境合理设置超时时间 factory.setConnectionTimeout(30 1000); factory.setHandshakeTimeout(30 1000); factory.setShutdownTimeout(0); Connection connection factory.newConnection(); Channel channel connection.createChannel(); //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。 channel.queueDeclare(QUEUENAME, false, false, false, null); System.out.println(" [] Waiting for messages. To exit press CTRL+C"); Consumer consumer new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message new String(body, StandardCharsets.UTF8); System.out.println("Received message: '" + message + "'"); } }; channel.basicConsume(QUEUENAME, true, consumer); } }
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        开发指南
        Java
      • 概述
        编程语言 SDK Java rabbitmqjavaclient Spring Framework SpringAMQP .Net rabbitmqdotnetclient Python pika PHP phpamqplib C rabbitmqc Go amqp091go
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        开发指南
        概述
      • Go
        消费消息 发送以下命令消费消息。 go run modvendor consumer/consumer.go 消费消息示例代码如下: package main import ( "encoding/json" "fmt" "github.com/confluentinc/confluentkafkago/kafka" "os" "path/filepath" ) type KafkaConfig struct { Topic string json:"topic" Topic2 string json:"topic2" GroupId string json:"group.id" BootstrapServers string json:"bootstrap.servers" SecurityProtocol string json:"security.protocol" } // config should be a pointer to structure, if not, panic func loadJsonConfig() KafkaConfig { workPath, err : os.Getwd() if err ! nil { panic(err) } configPath : filepath.Join(workPath, "conf") fullPath : filepath.Join(configPath, "kafka.json") file, err : os.Open(fullPath); if (err ! nil) { msg : fmt.Sprintf("Can not load config at %s. Error: %v", fullPath, err) panic(msg) } defer file.Close() decoder : json.NewDecoder(file) var config &KafkaConfig{} err decoder.Decode(config); if (err ! nil) { msg : fmt.Sprintf("Decode json fail for config file at %s. Error: %v", fullPath, err) panic(msg) } json.Marshal(config) return config } func doInitConsumer(cfg KafkaConfig) kafka.Consumer { fmt.Print("init kafka consumer, it may take a few seconds to init the connectionn") //common arguments var kafkaconf &kafka.ConfigMap{ "api.version.request": "true", "auto.offset.reset": "latest", "heartbeat.interval.ms": 3000, "session.timeout.ms": 30000, "max.poll.interval.ms": 120000, "fetch.max.bytes": 1024000, "max.partition.fetch.bytes": 256000} kafkaconf.SetKey("bootstrap.servers", cfg.BootstrapServers); kafkaconf.SetKey("group.id", cfg.GroupId) switch cfg.SecurityProtocol { case "PLAINTEXT" : kafkaconf.SetKey("security.protocol", "plaintext"); case "SSL": kafkaconf.SetKey("security.protocol", "ssl"); kafkaconf.SetKey("ssl.ca.location", "/XXX/caRoot.pem") case "SASLSSL": kafkaconf.SetKey("security.protocol", "saslssl"); kafkaconf.SetKey("ssl.ca.location", "/XXX/caRoot.pem"); kafkaconf.SetKey("sasl.username", cfg.SaslUsername); kafkaconf.SetKey("sasl.password", cfg.SaslPassword); kafkaconf.SetKey("sasl.mechanism", cfg.SaslMechanism) case "SASLPLAINTEXT": kafkaconf.SetKey("security.protocol", "saslplaintext"); kafkaconf.SetKey("sasl.username", cfg.SaslUsername); kafkaconf.SetKey("sasl.password", cfg.SaslPassword); kafkaconf.SetKey("sasl.mechanism", cfg.SaslMechanism) default: panic(kafka.NewError(kafka.ErrUnknownProtocol, "unknown protocol", true)) } consumer, err : kafka.NewConsumer(kafkaconf) if err ! nil { panic(err) } fmt.Print("init kafka consumer successn") return consumer; } func main() { // Choose the correct protocol cfg : loadJsonConfig(); consumer : doInitConsumer(cfg) consumer.SubscribeTopics([]string{cfg.Topic, cfg.Topic2}, nil) for { msg, err : consumer.ReadMessage(1) if err nil { fmt.Printf("Message on %s: %sn", msg.TopicPartition, string(msg.Value)) } else { // The client will //automatically try to recover from all errors. fmt.Printf("Consumer error: %v (%v)n", err, msg) } } consumer.Close() }
        来自:
        帮助文档
        分布式消息服务Kafka
        开发指南
        Go
      • 高级SQL语句编写
        select from (select rownumber() over(partition by begincity order by amount desc), from bills) where rownumber<3; rownumber id goodsdesc beginunit begincity pubtime amount ++++++ 1 8 旋挖附件35吨 河南省 三门峡市 20151005 10:48:38 9885.95 2 7 旋挖附件38吨 河南省 三门峡市 20151005 10:48:38 9376.8 1 2 建筑设备 福建省 三明市 20151005 07:21:22 8195.98 2 4 普货 福建省 三明市 20151005 15:19:17 7626.41 1 1 衣服 海南省 三亚市 20151005 09:32:01 3714.15 1 10 设备 上海市 上海市 20151005 07:59:35 1784.63 2 11 普货40吨需13米半挂一辆 上海市 上海市 20151005 08:13:59 1425.64 (7 rows)
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        进阶开发
        高级SQL语句编写
      • 其他控制语句
        本页介绍天翼云TeleDB数据库PL/pgsql控制结构中的其他控制语句。 动态执行 plaintext teledb CREATE OR REPLACE FUNCTION f27(aid INTEGER) RETURNS text AS teledb $$ teledb$ DECLARE teledb$ vsql TEXT; teledb$ vmc TEXT; teledb$ BEGIN teledb$ vsql : 'SELECT mc FROM t WHERE id'aid::TEXT; teledb$ EXECUTE vsql INTO vmc; teledb$ RETURN vmc; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(1); f27 teledbpg (1 row) 动态执行就是拼SQL语句,然后使用EXECUTE命令执行。 执行一个没有结果的命令 plaintext teledb CREATE OR REPLACE FUNCTION f27() RETURNS void AS teledb $$ teledb$ BEGIN teledb$ perform f27(1); teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(); f27 (1 row) teledb 获取执行结果 plaintext teledb DROP FUNCTION f27(INTEGER); DROP FUNCTION teledb CREATE OR REPLACE FUNCTION f27(aid INTEGER) RETURNS VOID AS teledb $$ teledb$ DECLARE teledb$ vmc TEXT; teledb$ BEGIN teledb$ SELECT mc INTO vmc FROM t WHERE idaid; teledb$ IF FOUND THEN teledb$ RAISE NOTICE '查询到记录,值为%',vmc; teledb$ ELSE teledb$ RAISE NOTICE '查不到记录' ; teledb$ END IF; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        控制结构
        其他控制语句
      • 1
      • ...
      • 124
      • 125
      • 126
      • 127
      • 128
      • ...
      • 170
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      云聚517 · 好价翼起拼

      爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      聚力AI赋能 天翼云大模型专项

      大模型特惠专区·Token Plan 轻享包低至9.9元起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      企业出海解决方案

      助力您的业务扬帆出海,通达全球!

      天翼云信创专区

      “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      产品推荐

      弹性云主机 ECS

      物理机 DPS

      多活容灾服务 MDR

      轻量型云主机

      训推服务

      智算一体机

      人脸实名认证

      人脸比对

      车牌识别

      推荐文档

      常见问题

      云课堂 第十九课:RDS数据库服务基于SSL的安全访问

      性能类问题

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 息壤智算平台
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号