上课点名批量操作的优化问题

发布于 2022-09-11 18:39:53 字数 395 浏览 29 评论 0

大家好,想问个批量操作优化的问题

场景:

上课老师点名系统,点名会批量插入点名记录,就是一个学员会有个单独的记录,然后还要更新学员的已上课次数请假次数等,次数是在另外一张表里面。

表说明:

  • 学生关联班级表,里面有学生在该班级的上课次数请假次数等。
  • 学生上课记录表, 点名需要批量往这里面插入记录,一个班有四十个人就插入四十条。该表等于核心日志表,记录请假上课等行为。

问题描述和疑难点

因为班级人数多,会导致插入数据变多,接口就会慢很多,因为担心误操作重复操作等,觉得这样的插入不太好,目前都是同步操作的。
想问下有没有什么建议,在数据库或者接口上。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

仙气飘飘 2022-09-18 18:39:53

在Java代码中循环肯定是会慢的,因为每插入一条都会连接一次数据库。
架建议在持久层进行循环插入减少连接次数
比如使用jdbc:

    Connection conn = getConnection();
    PreparedStatement ps = null;
    for (int i=0;i < 40;i++){
        String sql = "insert into xxx values ('x','xx')";
        ps = conn.prepareStatement(sql);
        ps.execute();
        ps.close();
    }

或者Mybatis的foreach标签等等

单调的奢华 2022-09-18 18:39:53

1、数据库层面,如果担心插入数据较多,可以考虑分表。分别给每个班都维护一个上课记录表,如果数据量还是比较大,可以考虑按日期继续切分记录表。核心思想就是将大表切分成小表;
2、接口层面,针对点名的场景,个人理解对实时性要求不高,并且可以容忍一定程度的数据丢失。可以使用异步的方式存储数据。如果担心异步导致数据丢失,可以在接口上记录调用日志,在数据丢失时便于数据恢复。

最近可好 2022-09-18 18:39:53

可以加个mq跑异步,但你这人数应该不会很多,不应该会卡的吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文