为什么80%的码农都做不了架构师?>>>
首先设置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的最
大内存配置需要修改以适应你的需求。