数据库高并发解决方案整理

4 篇文章 0 订阅
3 篇文章 0 订阅

一、项目的架构设计方面:
1、分库分表,分库,按照业务模块分离,分表,可以按照日期,甚至按照业务字段拆分表都算作是分表,横向与纵向而已;具体的分表的方式方法也有很多,比如mycat当然mycat已经过期,dble是其升级版不过是针对mysql但是更强更方便;这种对业务没有侵入性;还有比较流行的shardingjdbc,完全可以封装一个工具包,项目中引用开发,只需定义好分片规则,缺点是对代码有一些侵入性。
2、分离活跃数据,比如任务,有进行中有已完成,如果对未完成的操作比较频繁,又或者按日期分离,只保留本周的,具体看应用场景
二、代码开发方面:
1、缓存,但是得注意数据库跟缓存的一致性问题,具体可以参考:https://blog.csdn.net/yrsg666/article/details/115636643
2、使用存储过程,将一次请求多次访问数据库操作的业务放在存储过程中,这样可以一次访问多次操作
3、队列批量处理,比如使用ArrayBlockingQueue可以实现队列的批量操作,逻辑:每次数据来了放入队列,启动一个消费线程,从队列中一次性拉取所有,使用batch操作,同样可以减少对数据库的并发。
4、索引,这个基本就不用细说了,具体很多细节
三、数据库本身方面:
1、数据库集群,比如读写分离,很常见
四、数据库具体设计
1、对查询优化,尽量避免全表扫描,考虑在常用字段上建索引where以及order by
2、避免where字句中使用null判断而引起的放弃索引,比如不设置null而设置0或者“”
3、不是所有索引一定生效,当命中太多也许会失效
4、索引不是越多越好,影响插入更新效率,一般不要超过6个
5、避免更新索引字段,导致索引更新,效率降低很多
6、使用varchar替换char
五、sql语句方面
1、避免where子句中使用!= <> 等索引失效
2、in 与 not in慎用,效率很低,几十个还可以,不要过大,能用between 别用in
3、避免子句中使用or连接条件,导致索引失效比如 select id from t where num= 0 or num = 1 可以select id from t where num= 0 union  select id from t where num = 1
4、like %abc% 会不走索引,abc%没事
后续的参考 :https://www.cnblogs.com/peke/p/8036172.html
 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库高并发指的是数据库在处理大量并发请求时的性能。在处理高并发请求时,数据库的性能可能会受到影响。为了提高数据库的性能,可以使用内存缓存技术。 内存缓存技术是指将常用数据存储在内存中,以便快速访问。这样,当有请求需要访问这些数据时,就可以从内存中获取,而不必从数据库中获取。这样可以大大提高数据库的性能,特别是在处理高并发请求时。 一个常见的内存缓存技术是使用缓存服务器,如 Memcached 或 Redis。缓存服务器可以与数据库集成,并在数据库中存储数据时同时将数据存储到缓存服务器中。这样,当有请求需要访问数据时,就可以从缓存服务器中获取数据,而不必从数据库中获取。 实例是指一个具体的例子或应用程序。在数据库领域,实例指的是一个数据库服务器上的数据库。例如,如果有一台服务器上安装了 MySQL 数据库,并在该数据库中创建了多个数据库,那么这些数据库就是 MySQL 数 ### 回答2: 数据库高并发是指在同一时间段内,有大量的并发请求访问数据库,对数据库服务器造成较大的压力。为了解决这个问题,可以使用内存缓存技术来提高数据库的访问效率和并发处理能力。 内存缓存技术是指将数据存储在内存中,从而避免了频繁的磁盘访问,大大提高了数据的读取和写入速度。通过将最常用的数据和热点数据存储在内存中,有效减少了对数据库的访问次数,提高了系统的响应速度和并发处理能力。 以电商网站为例,当用户进行商品搜索时,如果直接从数据库中查询并返回结果,会消耗大量的系统资源和时间。但如果在内存中缓存了热门的商品信息,当用户进行搜索时,可以直接从内存中读取数据,大大提高了查询效率和用户体验。 另外,当用户进行商品下单操作时,如果每次都直接写入数据库,可能会导致数据库写入速度过慢,影响其他用户的并发操作。而采用内存缓存技术,可以先将用户的下单请求存储在内存中,再定期批量写入数据库,避免了频繁的磁盘写入,提高了系统的稳定性和并发处理能力。 总之,数据库高并发问题可以通过内存缓存技术来优化系统的性能和并发处理能力。通过合理地使用内存缓存,可以减少对数据库的访问次数,提高系统的响应速度,提升用户体验。 ### 回答3: 数据库高并发指的是系统同时接受到大量并发请求,要求数据库能够高效地处理并发操作。为了提高数据库的性能和响应速度,可以使用内存缓存技术。 内存缓存技术是将数据库中的热门数据或经常被访问的数据加载到服务器的内存中进行缓存,从而减少了对硬盘的读取次数,提高了数据的访问速度和响应时间。 一种常见的实例是使用Redis作为内存缓存数据库。Redis是一个开源的内存数据库,支持高并发操作和快速读写功能。通过将热门数据存放在Redis的内存中,可以大大减少对关系型数据库的访问次数,提高系统的并发能力和响应速度。 以电商网站为例,用户通过搜索或访问商品详情等操作时,会频繁访问商品信息、库存数量等数据。为了提高系统的性能,可以将这些热门数据加载到Redis缓存中。当用户请求这些数据时,首先会从Redis中获取,如果存在则直接返回给用户,避免了对数据库的访问;如果Redis中不存在,则再去关系型数据库中查询,并将查询结果存入Redis缓存中,以便下次访问时可以直接使用缓存数据。 通过使用内存缓存技术,可以有效提高系统的并发能力和响应速度,减少对数据库的访问压力,实现高效的数据库高并发处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值