请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
搜索

Mysql大数据优化方法

随着业务规模的不断扩展,需求选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。

关于数据库的扩展次要包括:业务拆分、主从复制,数据库分库与分表。



(1)业务拆分

假设:Mysql一个数据库中有三张表,shop表,goods表,history表。

随着业务逐渐复杂,数据逐渐增多。数据库的执行效率越来越低。

此时可以将三张表放到三个不同主机上人不同数据库中,这样对一个数据库人压力就分成了三份,系统的吞吐量就会大大提高。



(2)主从复制

MySQL的Replication是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高功能、更高牢靠性要求的场合。

MySQL Replication 就是从服务器拉取主服务器上的 二进制日志文件,然后再将日志文件解析成相应的SQL语句在从服务器上重新执行一遍主服务器的操作,经过这种方式来保证数据的分歧性。

特点:

主从间的数据库不是实时同步,就算网络衔接正常,也存在瞬间主从数据不分歧的状况。

假如主从的网络断开,则从库会在网络恢复正常后,批量停止同步。

假如对从库停止修正数据,那么假如此时从库正在在执行主库的bin-log时,则会出现错误而中止同步,所以普通状况下,我们要非常小心的修正从库上的数据。

一个衍生的配置是双主、互为主从配置,只需单方的修正不冲突,则可以工作良好。

假如需求多主库的话,可以用环形配置,这样恣意一个节点的修正都可以同步到一切节点。



(3)数据库分表、分区、分库

分库完成策略:对数据库停止拆分,从而提高数据库的写入才能。

分表完成策略:分表就是将一个表分成多个表,比如有一个用户表,由于用户有限制地增长严重影响功能。假设有1000万条数据,可以每10万条数据建一个表,根据ID判别属于哪个表。

分区完成策略:分区是把存放数据的文件分成许多小块,分区后人表还是一张表,可以打破磁盘的读写才能。

分区的适用场景:

1.一张表的查询速度很慢

2.表中的数据可以分段

3.每次只是操作数据人一小部分,而不是全部

CREATE TABLE order (
id INT AUTO_INCREMENT,
amount DOUBLE NOT NULL,
order_day DATETIME NOT NULL,
PRIMARY KEY(id, order_day)
) ENGINE=Innodb
PARTITION BY RANGE(YEAR(order_day)) (
PARTITION p_2010 VALUES LESS THAN (2010),
PARTITION p_2011 VALUES LESS THAN (2011),
PARTITION p_2012 VALUES LESS THAN (2012),
PARTITION p_catchall VALUES LESS THAN MAXVALUE);\

简单的分库就是把表分别存储在不同人数据库中
回复

使用道具 举报

大神点评3

da陳_儱 2021-6-9 19:14:54 来自手机 显示全部楼层
写的不错,配图再多点就好啦
回复

使用道具 举报

ZHL_GS1980 2021-6-10 22:29:53 显示全部楼层
楼主呀,,,您太有才了。。。
回复

使用道具 举报

绿色de阳光 2021-6-11 17:51:59 显示全部楼层
路过的帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册