计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
本文导读

展开导读

字段设计规范

更新时间:2025-02-27 GMT+08:00
  • 【规则】字段设计应使用推荐类型。

    字段设计需使用推荐字段,如果需要使用禁用、不推荐的字段类型。有些数据类型不推荐的原因是业务使用场景较少,未大规模商用。

    表1 数据库数据类型最佳实践

    数据类型

    说明

    是否推荐

    UUID

    不同集群可能产生相同UUID

    禁止

    序列整型

    即自增列,包括SMALLSERIAL、SERIAL、BIGSERIAL

    禁止

    整数类型

    TINYINT、 SMALLINT、 INTEGER、BIGINT

    推荐

    任意精度类型

    NUMERIC/DECIMAL

    推荐

    浮点类型

    REAL/FLOAT4、DOUBLE PRECISION/FLOAT8、FLOAT

    推荐

    布尔类型

    BOOLEAN

    推荐

    定长字符

    CHAR(n)

    推荐

    变长字符

    VARCHAR(n),NVARCHAR2(n)

    推荐

    TEXT/CLOB(字符大对象)

    不推荐

    时间类型

    DATE、 TIME、 TIMESTAMP、SMALLDATETIME、INTERVAL、REALTIME

    推荐

    TIMETZ,TIMESTAMPTZ

    不推荐

    二进制类型

    BYTEA(变长二进制类型)

    推荐

    BLOB(二进制大对象)、RAW(变长十六进制)

    不推荐

    位串类型

    BIT(n)、VARBIT(n)

    推荐

    特殊字符类型

    NAME、"CHAR",通常供数据库系统内部使用

    不推荐

    JSON类型

    JSON类型目前不支持操作符

    不推荐

    自定义类型

    可用于定义枚举EMU等类型

    不推荐

    HLL数据类型

    建议直接使用HLL相关函数,减少性能影响

    不推荐

    货币类型

    MONEY存储带有固定小数精度的货币金额

    不推荐

    几何类型

    POINT、 LSEG,、BOX,、PATH、POLYGON、CIRCLE

    不推荐

    网络地址类型

    存储IPV4 MAC地址数据类型

    不推荐

  • 【规则】尽量使用高效的数值类数据类型。在满足业务精度的情况下,选择的优先级从高到低依次为整数、浮点数、NUMREIC。
  • 【规则】合理设置数值字段的数据类型,根据取值范围选择合适的数值类型,尽量少用NUMERIC/DECIMAL类型。

    NUMERIC和DECIMAL等价,NUMERIC/DECIMAL数据类型操作对CPU消耗较高。

    表2 数值类数据类型存储空间及取值范围

    类型

    存储空间

    最小值

    最大值

    TINYINT

    1

    0

    255

    SMALLINT

    2

    -32768

    32767

    INTEGER

    4

    -2,147,483,648

    2,147,483,647

    BIGINT

    8

    -9,223,372,036,854,775,808

    9,223,372,036,854,775,807

    REAL/FLOAT4

    4

    6位十进制数字精度

    DOUBLE PRECISION/FLOAT8

    8

    15位十进制数字精度

  • 【规则】合理选用字符串数据类型。如果该字段输入确定为固定字符则使用定长字符类型,或需要自动补充空格,否则请使用变长字符类型VARCHAR。

    典型的定长字段类型,例如“gender”字段,仅允许输入“f”或“m”一个字节长度的字符。这类字段建议使用定长数据类型(如CHAR(n))。

    如果不存在此特点,或者后续可能扩展需要输入更长的字符,请优先使用变长字符类型(如VARCHAR, TEXT),且不建议指定变长类型的长度。

    原因如下:

    • 定长字段会对不够长度的输入数据补充空格,然后存入数据库中,产生不必要的存储空间浪费。
    • 如果定义为定长字符类型,后续扩展长度,需要对全表进行扫描重写,性能开销大,影响在线业务。
    • 对于指定固定长度的变长字段,每次插入时会检查是否长度越界,带来性能开销。
  • 【规则】字符类型字段不应存储数字类型的数据。

    如果对存储在字符类型字段中的数据进行数值计算,或者与数值进行比较操作(如置于过滤条件中),会带来不必要的数据类型转换的开销,同时该字段上的索引可能失效,影响查询性能。

  • 【规则】字符类型字段不应存储时间或日期类数据。

    如果对存储在字符类型字段中的数据与日期类数据进行计算或比较操作(如置于过滤条件中),会带来不必要的数据类型转换的开销,同时该字段上的索引可能失效,影响查询性能。

  • 【规则】对于明确不存在NULL值的字段加上NOT NULL约束。

    对于NOT NULL字段,优化器在某些场景下会进行特殊优化,可提升查询性能。

  • 【规则】相关联字段的数据类型应保持一致。

    在进行关联操作时,如果字段类型不一致,会带来数据类型转换开销。

  • 【规则】大字段(例如varchar(1000)、varchar(4000))不超过8个。
  • 【建议】当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型。
  • 【建议】对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免超出最大长度时出现字符截断现象。除非明确知道数据类型为固定长度字符串,否则,不建议使用CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。
  • 【建议】字段定义时建议同时创建COMMENT注释信息,以便于未来维护。

    不同类型字段说明、取值范围及使用方法请参考数据类型章节。

  • 【建议】用于WHERE条件过滤和关联的字段都应设置NOT NULL约束。

    对于NOT NULL字段,优化器在某些场景下会进行特殊优化,可较大提升查询性能。

  • 【建议】不建议对表预留字段。大部分场景下可支持快速新增、删除表字段,或者修改字段的DEFAULT值。

    新增列必须符合以下要求,否则会带来全表更新开销,影响在线业务。

    • 数据类型为以下类型中的一种:BOOL、BYTEA、SMALLINT、BIGINT、SMALLINT、INTEGER、NUMERIC、FLOAT、DOUBLE PRECISION、CHAR、VARCHAR、TEXT、TIMESTAMPTZ、TIMESTAMP、DATE、TIME、TIMETZ、INTERVAL。
    • 新增列的DEFAULT值长度不超过128个字节。
    • 新增列DEFAULT值不包含volatile函数。
    • 新增列设置有DEFAULT值,且DEFAULT值不为NULL。

    如果不确定是否满足条件3,请联系GaussDB数据库技术人员进行评估。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容