tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们
文档TDSQL-C MySQL 版产品简介使用规范建议数据库权限及库表索引规范

数据库权限及库表索引规范

PDF
聚焦模式
字号
最后更新时间: 2023-11-01 17:00:20
本文为您介绍在创建 TDSQL-C MySQL 集群后的相关使用规范建议。

数据库权限规范

所有 DDL(例如:创建表,更改表结构等)只有通过评审后,由 DBA 通过数据库管理工具(DMC)执行,在业务低峰期操作上线。
权限需要进行细粒度控制,读写权限分开,运维和开发权限要分开。
DDL 操作保留操作日志。

库表规范

InnoDB 是 MySQL 中支持事务的一种引擎,如果要在 MySQL 数据库中创建表,并且需要使用事务功能,那么必须使用 InnoDB 引擎来创建表,适配 MySQL 的其它引擎不支持事务。
小数类型需使用 decimal 类型来定义,禁止使用 float 和 double。
说明:
float 和 double 在存储的时候,存在精度损失的问题,很可能在值比较的时候得到的结果有误。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。
禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字
数据表必须有主键,可以使用业务相关,有序且具有唯一性的字段作为主键,也可以使用业务无关的自增长字段作为主键。
说明:
无主键容易导致主库执行速度慢和复制延迟问题。
创建表时需为表中的字段设置默认值,并且将字段设置为 NOT NULL,以避免在插入数据时出现空值或缺失值的情况,数字类型默认值推荐给0,varchar 等字符类型的默认值推荐空字符串,如''。
建议表包含两个字段:create_time,update_time,且均为 datetime 类型。
说明:
数据仓库拖取数据时可以利用这两个统一字段无需询问业务。 在数据库出现意外时可以判断数据进入数据库和修改的时间,在极端情况可以帮助数据恢复的判断。
控制单表字段数量,字段上限50个。
如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
字段允许适当跨表冗余,以避免关联查询,提高查询性能,但必须考虑数据一致。
说明:
冗余字段应遵循:
不是频繁修改的字段。
不是 varchar 超长字段和 text 字段。
合适的存储长度(不建议使用 LONG TEXT,BLOB 等长类型字段),不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

索引规范

避免因为字段类型不同造成的隐式转换,导致索引失效。
业务上具有唯一特性的字段,即使是多个字段的组合,建议在所有具有唯一特性字段的最小集合上建立唯一索引。 例如:一个表含有 a,b,c,d,e,f 字段,在业务上 ab 和 ef 分别是具有唯一特性的字段集合,那么最好在最小集合 ab 和 ef 上分别建立唯一索引。
说明:
即使在应用层做了完善的校验控制,只要没有唯一索引,就可能会有脏数据产生。
同时需要考虑建立的唯一索引对查询是否真正有帮助,没有帮助的索引可以考虑删除。
需要考虑多建立的索引对插入性能的影响,根据唯一性相关的数据正确性需求,以及性能需求来权衡是不是需要多建立唯一性索引。
尽量在定长的字段(如:INT)上建立索引;在 varchar 字段上建立索引时,必须指定索引长度,无需对全字段建立索引,根据实际文本区分度决定索引长度即可。
说明:
索引长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引区分度会高达90%以上,可以使用 count(distinct left(列名,索引长度))/count(*) 的区分度来确定(有区分度的放前面,没有区分度的放后面)。
页面搜索避免使用左模糊(如:SELECT * FROM users WHERE u_name LIKE ‘%hk’)或者全模糊,避免从索引扫描退化为全表扫描,如果需要请在应用层解决。
说明:
索引文件具有 B-tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。
利用覆盖索引来进行查询操作,避免回表,但是覆盖索引加的字段不能太多,要兼顾写性能。
说明:
能够建立索引的种类:主键索引、唯一索引、普通索引,而覆盖索引是一种查询的效果,利用 explain 的结果,extra 列会出现:using index。
SQL 性能优化的目标:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好。
创建组合索引的时候,区分度最高的在左边。
单张表的索引数量控制在5个以内,或不超过表字段个数的20%。
创建索引避免有如下误解:
宁滥勿缺。误认为一个查询就需要建一个索引。
宁缺勿滥。误认为索引会消耗空间、严重拖慢更新和新增速度。
不用唯一索引。误认为业务的唯一性一律需要在应用层通过“先查后插”方式能解决。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈