mysql 1万并发_mysql写并发1万+的处理方案

首先设置mysql必要的2个参数:

写入数据较大的时候需要加大参数max_allowed_packet=100M的值

提高插入数据的速度需要配置参数bulk_insert_buffer_size=200M,具体多少合适,需要看你的批量插入数据的大小是多少。

需求一:单机版本部署,对响应时间要求8s以内

代码片段如下:

思路:拼接插入或者更新sql语句

PreparedStatement pst = conn.prepareStatement("");

StringBuffer sqlInsert = new StringBuffer();

for(){

sqlInsert.append()。。。这里拼接插入insert语句,把所有要插入的记录拼接起来。如果是更新,同理。

}

pst.addBatch(sqlInsert.toString());

pst.executeBatch();

pst.clearBatch();

pst.close();

其他方法:思路是拼接预编译

PreparedStatement pst = conn.prepareStatement("");

for(){

ps.setInt(1, obj.getTrainTestId());这里的思路是拼接预编译

ps.setInt(2, obj.getStuId());

ps.addBatch();

}

ps.executeBatch();

ps.clearBatch();

ps.close();

至于哪种思路更适合你的需求,需要看实际测试结果。

需求二:应用程序和mysql数据库分离部署,对响应时间要求3s以内。

这里面不贴代码了。思路:主要是需要引入redis二级缓存。因为普通的数据库都是基于硬盘的,读写速度依赖硬件的性能。

高并发写数据库,即使数据库集群可能也没有多少效果。首先把数据写入redis缓存,然后通过任务计划访问redis把记录同步到数据库。

需要注意的是同步数据的时候需要及时删除已同步的记录释放redis内存。当然安装redis的机器内存也要尽量大一些,至少需要8G,redis的最

大内存配置需要修改以适应你的需求。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值