Mysql(五)---高并发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl_1079167478/article/details/84101621

高并发

高并发(High Concurrency),它通常是指,通过设计保证系统能够同时并行处理很多请求。

上文讲mysql简单集群搭建,主从复制。那么为什么要主从复制,因为我们对数据库的操作
无外乎 CRUD,就是增删改查,那么 写操作(增删改)会产生事务,会有锁的概念。
简单介绍一下mysql 锁

锁简单介绍

从锁的粒度,可以分为两大类:

表锁:开销小,加锁快,不会出现死锁,锁定力度大,发生锁冲突的概率高,并发度低。

行锁:开销大,加锁慢,会出现死锁,锁定力度小,发生锁冲突的概率低,并发读高。

不同的存储引擎支持的锁力度是不一样的。

InnoDB支持表锁和行锁。

MyISAM只支持表锁。

InnoDB只有通过索引条件检索数据才使用行级锁,否则,InnoDB将使用表锁。也就是说,InnoDB的行锁是基于索引的。

表锁下又分为两种模式:

表读锁(Table Read Lock)
表写锁(Table Write Lock)
从下图可以清晰看到,在表读锁和表写锁的环境下:读读不阻塞,读写阻塞,写写阻塞!
读读不阻塞:当前用户在读数据,其他的用户也在读数据,不会加锁。
读写阻塞:当前用户在读数据,其他的用户不能修改当前用户读的数据,会加锁!
写写阻塞:当前用户在修改数据,其他的用户不能修改当前用户正在修改的数据,会加锁!

从上面的简单介绍可以知道,mysql 读操作是无锁的,可重入,那么基于读写分离的mysql主从,可以在一定程度上解决读写的锁分离,从而提升mysql的效率,从而提升吐吞量,从而提升高并发的需求
那么我们也知道,一般我们队mysql的读操作远大于写操作,那么单节点的读在高并发情况下也不能满足,所以在来扩展一下

mysql集群–读集群–高并发–负载均衡

读集群

多个mysql 从节点共同协作

高并发

针对读操作提升并发能力

负载均衡

增加读节点,对于mysql服务器来说就是增加一个机器,对于Java 代码来说,麻烦甚多,我们需要修改代码,增加数据源,那么更多的从节点,我们需要增加更多的数据库,相当麻烦,那么我们就需要一个组件来方向代理mysql读节点,大家通过之前的文章不难看出,mysql是基于tcp协议的,那么我们就需要一个tcp的方向代理的组件

Haproxy(TCP/HTTP 反向代理组件)

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

猜你喜欢

转载自blog.csdn.net/zl_1079167478/article/details/84101621
今日推荐