php mysql分布式数据库如何实现当前做分布式的厂商有几家,我知道比较出名的有“华为云分布式数据库DDM”和“阿里云分布式数据库”,感兴趣可以自行搜素了解下 。
分布式数据库的几点概念可以了解一下 。
数据分库:
以表为单位,把原有数据库切分成多个数据库 。切分后不同的表存储在不同的数据库上 。
以表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片 , 表数据记录分布存储在各个分片上 。
路由分发:
在分布式数据库中 , 路由的作用即将SQL语句进行解析 , 并转发到正确的分片上 , 保证SQL执行后得到正确的结果,并且节约QPS资源 。
读写分离:
数据库中对计算和缓存资源消耗较多的往往是密集或复杂的SQL查询 。当系统资源被查询语句消耗,反过来会影响数据写入操作 , 进而导致数据库整体性能下降,响应缓慢 。因此,当数据库CPU和内存资源占用居高不下,且读写比例较高时,可以为数据库添加只读数据库 。
TDSQL TCA 分布式实例特点初探分布表和SQL透传TDSQL分布式实例通过Proxy接口提供和mysql兼容的连接方式,用户通过IP地址、端口号以及用户名、密码进行连接:
(注意:公有云TDSQL需要在实例页面申请公网连接地址)
连接示例:mysql -h172.21.32.13 (proxy地址) -P3306(proxy端口) -utest (数据库账号) -p
与普通的mysql连接方法一致,分布式实例兼容mysql的协议和语法,支持SSL加密等功能 。当然 , 您也可以使用navicat、 jdbc、 odbc、 php、 Python等来连接分布式TDSQL实例 。
1、TDSQL分布式实例支持表的类型介绍
a、分布式表:即水平拆分表,也成为“分表” , 该表从业务视角是一张完整的逻辑表,但后端根据分表键(shardkey)的HASH值将数据分布到不同的物理节点组(SET)中 。
b、普通表:又名Noshard表 , 即无需拆分的表,和传统集中式数据库中的表一致,且没有做任何特殊处理的表,目前分布式实例将该表默认存放在第一个物理节点组(set)中 。
c、广播表:又名小表广播技术,即设置为广播表后,该表的所有操作都将广播到所有物理节点组(set)中,每个set都有该表的全量数据,常用于业务系统关联查询较多,修改较少的小表或配置表等 。
表类型选用注意事项:
在分布式实例中,如果两张表分表键相等,这意味着两张表**相同的分表键对应的行**,存储在相同的物理节点组中 。这种场景通常被称为组拆分(groupshard),会极大的提升业务联合查询等语句的处理效率 。由于单表默认放置在第一个set上,如果在分布式实例中建立大的单表,则会导致第一个set的负载太大 。除非特别需要,在分布式实例中尽量使用分布式表,这也是分布式实例的特点之一 。
2、TDSQL分布式实例表的创建
接下来我们来看下分布式数据库TDSQL所支持的三种类型表的使用方法和注意事项 。
a、分布式表的使用
简述:普通的分表创建时必须在最后面**指定分表键(shardkey)的值 , 该值为表中的一个字段名字,会用于后续sql的路由选择 。连接到TDSQL分布式实例后,我们创建一个本次操作使用的数据库名为:testdb
mysql create database testdb;
mysqluse testdb;
接下来我们创建分布式表,命名以分布式拼音首字母命名
**建表语句1:**
MySQL testdb create table fbs ( a int, b int, c char(20),primary key (a),unique key u_1(a,c) ) shardkey=a;
Query OK, 0 rows affected (0.07 sec)
**建表语句2:**
推荐阅读
- 发微信视频号怎么删除,怎么删除微信视频号发的视频
- 财富精算师小程序怎么注册的简单介绍
- 如何做新媒体布局创意案例,新媒体创新案例
- 网站制作视频教程下载,网站制作视频教程下载免费
- java中文写代码 java在哪儿写代码
- 华为手机商城质量怎么杨,华为商城的商品怎么样
- js字符串substr,js字符串substring
- 象棋直播走棋教程,象棋走棋步骤
- python递归函数分解 python递归函数基例