无聊的的随笔记录
来源:互联网 发布:mac的qq怎么看群相册 编辑:程序博客网 时间:2024/05/24 05:02
啰哩啰唆,只是自己mark下。看到的请绕道:)
相关的5个表:
1)订单表order 100W量 主键order_id
2)订单明细order_deatil(所购买的商品明细) 500W量 主键order_deatil_id 存订单表order_id
3)商品表goods
4)订单log记录order_detail_log表 每次对商品订单的操作都记录。3000W量 ,(没有在此表记录申请退款的时间)
字段:
order_id 订单id
order_deatil_id 订单明细id
status 状态 status为操作后的订单的状态
create_time 时间
opt 操作人
desstr 描述信息。
每个order_deatil_id作为记录单位
下单、支付成功 、申请退款等每个对订单明细的操作都记录 。
5)退款表order_refund (退款在单条的order_deatil上申请,不在order上申请) 10W
业务流程:
1.下单成order order_datail
order_detail_log做记录,动作为下单成功,状态为下单成功INIT
2.支付成功:
修改order order_datail状态为成功
order_detail_log做记录,动作为支付成功,状态为支付成功SUCCESS
3.用户申请退款(针对单条的order_datail申请,不是针对整个order)
修改order_datail 状态为退款审核中
order_detail_log做记录,动作为退款申请,状态为退款审核中
4.运营审核(针对单条的order_datail):
审核不通过 将order_datail修改为支付成功状态。
order_detail_log做记录,动作为退款拒绝,状态为退款拒绝
5。用户可继续申请第3 步骤。
这样order_detail_log每次都会记录用户申请退款的动作。
6.退款申请通过时,插入order_refund表
order_detail_log做记录,动作为退款通过,状态为退款成功
退款成功了就不能再次申请了~
需求:要查询申请退款时间在某个时间段内的订单明细数据,
需要用到order_datail order_detail_log 2个表
order_detail_log的status为退款审核中的order_datail_id
order_detail_log数据量3000W。增长很快。查询越来越慢。
解决方案:
1、在order_detail_log增加索引。status,会快很多。一段时间内,没问题,但是查询时间段大的时候可能会慢。
项目分成2次查询先查order_detail_log 符合时间的order_detail_id
再用sql: order_datail.order_datail_id in( '在order_detail_log中查出的order_detail_id集合') in当中条数多的时候会很慢。
前人开发时没敢直接把这2个表做join可能怕查死了。。。
2. 修改业务逻辑:
退款申请时直接插入order_refund表(退款审核中),不在审核通过时插入,
退款拒绝时将order_refund表状态改为退款拒绝
对可能驳回后,又申请的:order_refund表无数据,可申请,有数据状态为退款拒绝也可申请,再申请时将该条数据改为退款申请中,时间操作人等也修改。
这样查询申请退款时间 关联order_detail 和order_refund(状态不为驳回的)两个表。不再去超大的log表查询
3.在order_detail表加上申请退款时间的字段,加索引。
1.不用改现在的代码。可以运行一段没问题。
2.改动了现在的业务逻辑。代码改动稍微大一些
3.改动业务逻辑。表清晰了。不用关联别的表了。但是order_detail表已经有好多索引了。。(哪个项目这样的明细表不都得弄个 3 4个索引了~)
个人倾向:加完log的索引之后,按2修改。。
- 无聊的的随笔记录
- 随笔:090826无聊,写在一个人的七夕
- 无聊的学习记录---C# 起步
- 无聊随笔
- GPU方面的随笔记录
- 【个人随笔】读书的记录
- 无聊的
- 无聊写的无聊东西
- swagger-2.6.0 记录一个下午的无聊举动
- 无聊的圣诞节 无聊的周末 无聊的僵尸III
- 随笔记录一些重要的网站
- 随笔记录:URL和URI的区别
- 关于网上商城开发的随笔记录1
- 关于网上商城开发的随笔记录2
- 关于网上商城开发的随笔记录4
- 无聊的人做着无聊的事,说着无聊的话
- 无聊的工作,无聊的人
- 无聊的企业开发,无聊的业务。。。
- 如何在数据库中使用索引 【数据库高效编程 - 学习笔记 第七章】
- IO流(一)之字符流与字节流详解
- Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法
- linux5.4安装eclipse
- 【转】linux loop device介绍
- 无聊的的随笔记录
- php Collection类的设计
- 一次跳槽的经历带来的一些感悟。
- java工厂模式
- 二维数组作为形参的参数传递问题
- 2011_08_19_Random Fern
- Android 磁盘管理 (1)
- 嵌入式系统开发:C语言中的位结构体
- iOS-Universal-Framework