提交订单性能优化系列之001-设计数据库表,用JDBC完成下单

001版本的github源码在这里,如果不知道怎样运行项目,请参考这里

数据库表设计

一个大的电商平台的下单是非常复杂的,不同行业的业务也可能不一样,由于这个系列只是想研究性能优化相关的问题,对业务要求不高,因此简化成了以下几张表。

Snipaste_20180907_192549png

表中的关系可以这样形容:一个“用户”购买“商品”时,选择一个“地址”用于收货,然后提交了一个“订单”,考虑到可能会同时购买多件商品,因此需要有一张“订单商品”的关联表。

这样的表结构设计就已经能满足一个基本的提交订单操作了。

项目环境

JDK版本:1.8.0_171

开发工具:Intellij Idea 2018.2.3

Jar包管理工具:Maven 3.2.1

Mysql数据库版本:5.7.20

测试工具:Junit 5.3.0

由于这一版只用到了JDBC,因此除了测试包以外,只依赖了另外一个Jar包:mysql-connector-java 8.0.11

项目结构

![Snipaste_20180908_132155png

不算复杂,直接在图上注释了一下,就不写详细的说明了。

提交订单代码说明

提交订单的方法主要做了以下七件事:

  1. 查询用户
  2. 查询商品
  3. 查询地址
  4. 检查相关的参数是否正确
  5. 保存订单到数据库中,并返回订单ID
  6. 保存订单商品到数据库中
  7. 更新商品的库存与销量

Version001.java 类的 submitOrder 方法。

测试代码说明

测试代码做了以下几件事情:

  1. 初始化数据库
  2. 执行100次提交订单的操作
  3. 统计耗时情况

执行完打印的消息如下:

正在初始化数据库:shop_order_test_version001
初始化数据库完成:shop_order_test_version001
提交每个订单平均耗时的毫秒数:131
每秒钟可以提交的订单数:7
提交订单之前的库存:100
提交订单之前的销量:0
提交订单之后的库存:0
提交订单之后的销量:100

总结

这一版使用JDBC完成了提交订单操作。用惯了各种框架,回去写JDBC还真是很不习惯。幸好几年前写过一个JdbcUtil.java类,这次复用了一些代码。

这个版本是001版,没有对性能做任何优化,在我的电脑上,每秒只能提交7个订单,可以说是相当低了。不过没关系,后续会慢慢改进的。

如果不知道怎样运行项目,请参考这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值