项目日志:关于倒计时结束删除订单的操作的优化
2016-04-03 00:00
295 查看
摘要: 项目日志:原来是用goodsid来删除订单,优化后是用busId和account来检索出目标订单来删除
优化前:
在订单页面,会加载一个函数,先生成一条订单,在插入新订单成功后,我去数据库交互,获取当前goods表的最大id,作为当前插入订单的id。
这样做的缺点:
虽然在大部分情况下,maxId和真实的新订单Id是相同的,但是一旦并发量足够大,就会出现:最大id与当前用户的生成的订单的id不相同,从而导致,在倒计时结束时,删除错订单。
再去获取maxId增加了数据库的操作,一定程度上加大了出错率。
优化的做法:
使用account和buyTime作为检索条件,
buyTime是1970年来目前的秒数,有一定程度上唯一性,再加上用户的手机号,已经是完全唯一性。
因为(在我的项目中)同一个用户是不可能在同一秒内进行两次操作。
而且,很好地解决了上面的两个缺点。
优化前:
在订单页面,会加载一个函数,先生成一条订单,在插入新订单成功后,我去数据库交互,获取当前goods表的最大id,作为当前插入订单的id。
这样做的缺点:
虽然在大部分情况下,maxId和真实的新订单Id是相同的,但是一旦并发量足够大,就会出现:最大id与当前用户的生成的订单的id不相同,从而导致,在倒计时结束时,删除错订单。
再去获取maxId增加了数据库的操作,一定程度上加大了出错率。
优化的做法:
使用account和buyTime作为检索条件,
buyTime是1970年来目前的秒数,有一定程度上唯一性,再加上用户的手机号,已经是完全唯一性。
因为(在我的项目中)同一个用户是不可能在同一秒内进行两次操作。
而且,很好地解决了上面的两个缺点。
相关文章推荐
- MySQL:批量更新的两种方法
- MAC下安装多版本JDK和切换几种方式
- OC高效率52之多用块枚举,少用for循环
- selenium系列->Actions命令实例整理->setSpeed(Value)
- selenium+testng+reprotng+ant配置
- Selenium 的 Web 应用性能测试
- selenium+phpunit
- Selenium如何支持测试windows弹窗
- selenium 英文面试题
- JavaScript权威指南1-Unicode转义序列
- JavaScript权威指南2-可选的分号
- JavaScript权威指南3-二进制浮点数和四舍五入的错误
- Mac Yosemite 10.10 下利用 Launchctl 自启动 mysql
- ios app 推送功能 JPush极光推送的使用
- 《重构-改善既有代码的设计》读书笔记
- 打印回型矩阵
- 多线程简单样例
- php文件上传与下载
- 整理bookstore遇到的问题及解决办法
- Jackson转换Json