腾讯云TdSQL 学习笔记
程序员文章站
2022-10-15 23:30:50
项目准备上云,目前拟用腾讯云,故大多数开发规范培训都相似Mysql的相关的建议,毕竟底层实现就是为Mysql。share 模式 与 单体 模式通用规范只使用InnoDB存储引擎【默认】,避免使用MyISAM引擎使用utf8或utf8mb4不在数据库中存储图片、二进制文件等大数据提前规划好单标规模,行数和大小对象命名要使用富有意义的英文词汇,不要使用SQL关键字和特殊字符字段属性尽量加上NOT NULL约束以及默认值数据库用户权限按照最小分配原则除核心维护人员外,其他用户不能拥有SUPEP...
项目准备上云,目前拟用腾讯云,故大多数开发规范培训都相似Mysql的相关的建议,毕竟底层实现就是为Mysql。
share 模式 与 单体 模式通用规范
- 只使用InnoDB存储引擎【默认】,避免使用MyISAM引擎
- 使用utf8或utf8mb4
- 不在数据库中存储图片、二进制文件等大数据
- 提前规划好单标规模,行数和大小
- 对象命名要使用富有意义的英文词汇,不要使用SQL关键字和特殊字符
- 字段属性尽量加上NOT NULL约束以及默认值
- 数据库用户权限按照最小分配原则
- 除核心维护人员外,其他用户不能拥有SUPEP权限账号(腾讯云权限授理通过“赤兔”上进行授权,且用户不拥有super权限)
- 避免使用简单密码
- 开发、测试和生产环境中用户权限设置保持一致
- 在数据库中存储密码明文
- 不超过80个字符
- 关键词大写
Mysql force index - 注意字段类型,避免类型转换
- 尽量不要让数据库做算术运算,交给应用层来做
- 尽量不要直接select * ,直接列出要查询的字段
- WHERE 子句使用的原则:尽量使用索引,尽量简单,尽量匹配更少的行
- like 子句的条件中,%不要是第一个字符,尽量靠后
- InnoDB标尽量避免使用类似COUNT{*}的全标扫描查询
分布式版本开发
支持特性
暂不支持
特性说明
表种类
TDSQL中,建表有三种模式,分别是分表、单表和广播表
分表:水平拆分的表
单表:不存在任何特殊处理的表
广播表:每个分片{SET}都有的表 变化的概率很少,但是跟其他表常有join等操作,所以放在各个分片上。
分表
即水平拆分表[shard 表],分表默认指定一个shardkey【仅支持一个】
TSQL 特有语法create table ‘xxxx’ ()engine = InnoDB shardkey = xxx
主键和唯一索引都包含shardkey
分析原因:跨分区访问set问题导致。(性能)
面向用户的互联网应用:都是围绕用户维度来做各种操作
电商应用:围绕卖家/买家维度
游戏类:玩家
物联网:传感器/sim卡
税务/工商:纳税人/法人
DDL
- 支持alter table ,但不支持rename分表的表明,修改shardkey字段的名字;如有必要,需采用先加后删的方法。
DML
- insert/replace 字段必须包含shardkey【即使value中包含全部字段】,否则会拒绝执行该sql
- select 最好带上shardkey,否则就需要全表扫描
- delete/update 必须带上where 条件,否则拒绝执行sql命令
分布式事务
- 给基于两阶段提交实现
- 业务使用和Mysql一样
分布式全局id
透传SQL
/* sets:set_1,set_2*/ select * from xxxx
/* sets:allsets*/, 把原始sq发到所有后端
select murmurhashCodeANdMod[“KEY”, partion_num] 计算key对应的分片
锁定路由
没理解使用场景
explain
添加了info列 表示发给了哪个set
读写分离
/* slave */ select * from account;
本文地址:https://blog.csdn.net/hesiyuanlx/article/details/107655853
下一篇: 傻哥哥气死女生