并发数,小程序开发怎么提高并发数?

2022-02-05 00:19:24 百科大全 投稿:一盘搜百科
摘要有朋友和我说并发数,他的程序遇到了瓶颈,程序中带有算法,但是没有事务,仅是查询情况下,应该如何提高并发数量呢??首先,我要说的是,先纠正绝大多数人的思维。并发与并行不是一回事!!!并行,指同一时间多个

有朋友和我说并发数,他的程序遇到了瓶颈,程序中带有算法,但是没有事务,仅是查询情况下,应该如何提高并发数量呢??

并发数,小程序开发怎么提高并发数?插图

首先,我要说的是,先纠正绝大多数人的思维。并发与并行不是一回事!!!并行,指同一时间多个事件同时发生。并发,是指在某个时间间隔中,有多个事件发生,不一定同时发生。

并发数,小程序开发怎么提高并发数?插图1

于是我仔细思考了一下,因为当时并没有思绪,需要思考的时间!!!

应该先从瓶颈的地方开始,需要测试工具,来测试瓶颈的具体原因。到底是查询慢问题,还是代码的问题。因为数据库也有自身的优化策略。Java也有优化策略。

先说说,我们常规处理并发的解决方案:

1.动态页面静态化。

2.制作数据库散列表,即分库分表。

3.增加缓存。

4.增加镜像。

5.部署集群。

6.负载均衡。

7.异步读取,异步编程。

8.创建线程池和自定义连接池,将数据持久化。

9.把一件事,拆成若干件小事,启用线程,为每个线程分配一定的事做,多个线程同时进行把该事件搞定再合并。

以上是我个人工作中常用的处理方案。这些都是不花钱的。条件允许,请选择CDN,这是收费的,你要找服务商来商讨。还有,可以采用GCDN的加速方式,网上有讲解,但是这两点都是要消费的。

如果以上觉得不可行,因为数据库最优,代码最优,那么怎么办????没关系,还有一个至关重要的事情,就是你的Web容器!!!你是tomcat也好Jboss也罢,weblogic也没关系。他们都有自己的调优方式。

接下来我要举实例说明了。

你应该用过淘宝吧??也应该看过它里面有个功能是定时抢宝贝的,有个倒计时,时间一到,大家疯抢。这种功能必然会涉及高并发处理。

我在重复一遍,并发与并行是两回事。它俩的区别请自行百度。回到问题中来,多个人同时抢一个东西,意味着只有一个人能拿到。有没有一种可能,大家一起上前哄抢,然后把它撕碎了,一人分一点???肯定不行,事务的ACID原则不许与你那么做。所以当某个人抢到的时候,就必然要加锁。锁,无非是两种,一个是程序的锁,Java中锁有很多种,例如synchronized,ReenTrantLock等;另一种是数据库中的锁。

mysql行锁最大并发数?

mysql行锁最大并发数为8个。

定义:触发行锁时,会锁住一些行而不是整个表;

在InnoDB存储引擎中创建表&初始化表数据:

1 2 3 4 5 6 7 8

# 建表 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; # 插入数据 INSERT INTO `user` (`id`) VALUES (‘1’),(‘2’),(‘3’),(‘4’);

模拟行锁场景:

1 2 3 4 5 6 7 8 9

# 用一个客户端,更新数据并休眠 UPDATE user set id = sleep(60) where id = 1 # 另一个客户端 SELECT * FROM user; SELECT * FROM user where id = 1; update user set id = 111 where id = 1;

声明:一盘搜百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 88888@qq.com