博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样加快master数据库的写操作?分表原则!将表水平划分!或者添加写数据库的集群...
阅读量:5940 次
发布时间:2019-06-19

本文共 1189 字,大约阅读时间需要 3 分钟。

1.怎样加快master数据库的写操作?分表原则!将表水平划分!减少表的锁定时间!!!

或者或者添加写数据库的集群!!!或者添加写数据库的集群!!!

2.既然分表了,就一定要注意分表的规则!要在代码层,代码层知道将数据insert/select到哪张表上。

3.要在代码层知道将数据操作到哪张表上!分表规则,

所以分表规则要用代码设计出来,与数据库中的分表规则对应!!!一样!!!一样的分表规则!!

 4.那么按什么规则分表呢?有不同的策略,常见的有按照01234556789,账号尾数0对应0表,1对应1表。

还可以按照区域划分,比如用户表,按照省份划分,湖南省用户表,北京市用户表等。

分表意思就是:将一张表划分为许多个小表,每个小表组合起来就是完整的User表。

所以,还可以按照用户省份划表。

还可以根据业务来分表。如按照用户或者商品。

具体分表规则,这叫维度。按照什么维度来分表。

假如用户购买了商品,需要将交易记录保存取来,如果按照用户的纬度分表,则每个用户的交易记录都保存在同一表中,所以很快很方便的查找到某用户的购买情况,但是某商品被购买的情况则很有可能分布在多张表中,查找起来比较麻烦。反之,按照商品维度分表,可以很方便的查找到此商品的购买情况,但要查找到买人的交易记录比较麻烦。 

5.单表进行分表之后,又要注意分开的表存储位置问题。因为只有同一个数据库中才能进行联合查询。(一个数据库服务器可以多个数据库,多个数据库)

所以尽量将分开的表保存在一个数据库中,以方便联合查询!!!!

2.   联合查询的问题 

联合查询基本不可能,因为关联的表有可能不在同一数据库中。 

6.跨数据库分表还容易带来跨数据库事务操作,跨数据库事务操作效率很低。

所以单表水平划分多表时,要注意将拆分的表保持在同一个数据库中。

以避免不能联合查询,或者跨数据库事务这两个问题!!!!

 

7.Mysql提供了读写分离的机制,所有的写操作都必须对应到Master,读操作可以在Master和Slave机器上进行,Slave与Master的结构完全一样,一个Master可以有多个Slave,

所以基本在master写的数据库上进行拆分好表,然后slave数据库与主相同结构

 

8.所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。 

此外,可以看出Master是集群的瓶颈,当写操作过多,会严重影响到Master的稳定性,如果Master挂掉,整个集群都将不能正常工作。 
所以,1. 当读压力很大的时候,可以考虑添加Slave机器的分式解决,但是当Slave机器达到一定的数量就得考虑分库了。

2. 当写压力很大的时候,就必须得进行分库操作。 

转载地址:http://psmtx.baihongyu.com/

你可能感兴趣的文章
linux笔记第一章--基本命令记载
查看>>
虚拟局域网VLAN
查看>>
Linux基础命令---dumpe2fs
查看>>
计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
查看>>
Linux网络配置命令
查看>>
软件安全加解密,程序授权管理控件CrypKey SDK
查看>>
2012年度IT博客大赛50强报道:高俊峰
查看>>
记mysqldump导出导入数据库的一个小问题~
查看>>
Win32窗口以及C++日志
查看>>
c易错
查看>>
python—函数实例一
查看>>
苏宁、国美-OPM战略
查看>>
socket编程
查看>>
1.9-kvm克隆
查看>>
oracle导入sql文件
查看>>
Linux: grep命令
查看>>
D语言与C语言的互相调用
查看>>
call( )、apply( )
查看>>
【linux+C】神器 vim + 指针相关客串
查看>>
Linux内核TCP/IP参数分析与调优
查看>>