程序笔记   发布时间:2022-07-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了高性能MySQL(一) 如何做到高扩展性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

吞吐量: 单位时间内处理的请求数

TPS: 每秒处理的事务数

QPS: 每秒处理的查询次数

高性能MySQL(一) 如何做到高扩展性

三个方法论

1.Shared Everthing

针对单个系统࿰c;完全共享CPU,Memory࿰c;磁盘系统࿰c;这样并行处理能力最差࿰c;如sqlserver

2.Shared Nothing

不存在共享资源࿰c;并行和扩展能力更好࿰c;比如hadoop

3.Shared Disk

各个处理单元࿰c;使用私有的CPU࿰c;R_532_11845@emory࿰c;但是使用共公有的disk

纵向扩展:

扩展一个点的能力支撑更多的请求࿰c;类似于螳臂当车:

两种方式:

1. 提升硬件性能 

比如CPU,内存大小࿰c;更好性能的网卡

2. 提升单机架构性能

读多写少࿰c;用cache;读少写多࿰c;使用消息队列࿰c;异步更新࿰c;比如kafka࿰c;RMQ

使用无锁算法࿰c;比如CAS

高性能MySQL(一) 如何做到高扩展性

分区就是PARTITION, RANGE分区࿰c;就是比如把表的数据按时间分成࿰c;70年代࿰c;80年代࿰c;90年代的数据࿰c;HASH分区࿰c;就是把表的数据根据HASH值的不同分成不同的区

横向扩展

用更多的节点支撑更大的请求࿰c;类似于蚂蚁搬家࿰c;主要有4种方式:

1.主从复制

主库用来读写࿰c;从库用来读࿰c;提升读性能

2.分库分表 (数据分片 sharding)

分库、分表、达到线性扩展的目的

3.数据库中间件

如rmq࿰c;kafka࿰c;来达到读写分离的目的

4.集群

使用集群来弥补单机性能的不足(这里忽然想到分布式和集群的区别࿰c;分布式就是不同机器上面部署着不同的服务࿰c;而集群就是不同机器上面部署着相同的服务)

主从复制

是最常用的技术࿰c;可以扩展出很多的从库c;从而减轻主库负担࿰c;能够实现读写分离

缺点:如果写过多࿰c;主库成为性能瓶颈࿰c;从库数据容易不一致

为了解决这个缺点࿰c;就得想办法做sharding

数据分片

高性能MySQL(一) 如何做到高扩展性

1.垂直分片

其实就是按column列分片࿰c;某几列属于同一片࿰c;另外几列属于另一片࿰c;比如把一个表的12列(12个字段)分成3个小片࿰c;每片4列

 

高性能MySQL(一) 如何做到高扩展性

2. 水平分片

就是不修改表结构c;比如按时间来进行拆分࿰c;比如2021年1月1日之前的数据存在A库࿰c;之后的存在B库

高性能MySQL(一) 如何做到高扩展性

高性能MySQL(一) 如何做到高扩展性

然sharding很好用࿰c;但是这样会加大业务代码的复杂性࿰c;而且单个shard失效可能会导致整个系统不可用(这种情况࿰c;就得虑主从复制࿰c;对每个shard都备份一个或者多个从库)

分区是库内的࿰c;分片是库外的 

数据库中间件

高性能MySQL(一) 如何做到高扩展性

需要多注意࿰c;主从复制的各种小分类

高性能MySQL(一) 如何做到高扩展性

不同主从复制的开启方法

高性能MySQL(一) 如何做到高扩展性

高性能MySQL(一) 如何做到高扩展性

高性能MySQL(一) 如何做到高扩展性

 

高性能MySQL(一) 如何做到高扩展性

高性能MySQL(一) 如何做到高扩展性

 集群架构࿰c; 这个我真看不懂。。。。

高性能MySQL(一) 如何做到高扩展性

高性能MySQL(一) 如何做到高扩展性

 

高性能MySQL(一) 如何做到高扩展性

大佬总结

以上是大佬教程为你收集整理的高性能MySQL(一) 如何做到高扩展性全部内容,希望文章能够帮你解决高性能MySQL(一) 如何做到高扩展性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。