当前位置: 移动技术网 > IT编程>数据库>Mysql > 腾讯云TdSQL 学习笔记

腾讯云TdSQL 学习笔记

2020年07月30日  | 移动技术网IT编程  | 我要评论

项目准备上云,目前拟用腾讯云,故大多数开发规范培训都相似Mysql的相关的建议,毕竟底层实现就是为Mysql。

share 模式 与 单体 模式通用规范

  1. 只使用InnoDB存储引擎【默认】,避免使用MyISAM引擎
  2. 使用utf8或utf8mb4
  3. 不在数据库中存储图片、二进制文件等大数据
  4. 提前规划好单标规模,行数和大小
  5. 对象命名要使用富有意义的英文词汇,不要使用SQL关键字和特殊字符
  6. 字段属性尽量加上NOT NULL约束以及默认值
  7. 数据库用户权限按照最小分配原则
  8. 除核心维护人员外,其他用户不能拥有SUPEP权限账号(腾讯云权限授理通过“赤兔”上进行授权,且用户不拥有super权限)
  9. 避免使用简单密码
  10. 开发、测试和生产环境中用户权限设置保持一致
  11. 在数据库中存储密码明文
  12. 不超过80个字符
  13. 关键词大写
    在这里插入图片描述
    Mysql force index
  14. 注意字段类型,避免类型转换
  15. 尽量不要让数据库做算术运算,交给应用层来做
  16. 尽量不要直接select * ,直接列出要查询的字段
  17. WHERE 子句使用的原则:尽量使用索引,尽量简单,尽量匹配更少的行
  18. like 子句的条件中,%不要是第一个字符,尽量靠后
  19. InnoDB标尽量避免使用类似COUNT{*}的全标扫描查询

分布式版本开发

官方文档《TDSQL开发指南》

支持特性

1. 提供了灵魂的

暂不支持

在这里插入图片描述
在这里插入图片描述

特性说明

表种类

TDSQL中,建表有三种模式,分别是分表、单表和广播表
分表:水平拆分的表
单表:不存在任何特殊处理的表
广播表:每个分片{SET}都有的表 变化的概率很少,但是跟其他表常有join等操作,所以放在各个分片上。

分表

即水平拆分表[shard 表],分表默认指定一个shardkey【仅支持一个】

TSQL 特有语法create table ‘xxxx’ ()engine = InnoDB shardkey = xxx
主键和唯一索引都包含shardkey
分析原因:跨分区访问set问题导致。(性能)

面向用户的互联网应用:都是围绕用户维度来做各种操作
电商应用:围绕卖家/买家维度
游戏类:玩家
物联网:传感器/sim卡
税务/工商:纳税人/法人

DDL

  1. 支持alter table ,但不支持rename分表的表明,修改shardkey字段的名字;如有必要,需采用先加后删的方法。

DML

  1. insert/replace 字段必须包含shardkey【即使value中包含全部字段】,否则会拒绝执行该sql
  2. select 最好带上shardkey,否则就需要全表扫描
  3. delete/update 必须带上where 条件,否则拒绝执行sql命令

分布式事务

  1. 给基于两阶段提交实现
  2. 业务使用和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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网