Fecshop 事务

fecshop事务指的是数据库层面的事务 在执行过程中要么一起成功要么一起失败

Fecshop事务介绍

fecshop中的事务用的比较少,只有一些非常需要事务的地方才用 ,大致在3处使用了事务,加入购物车,优惠券,生成订单 ,而且只是部分使用,而不是全部,因为有一些失败了并没有太大的影响。

1.譬如生成订单的时候需要清空购物车,即使生成了订单,没有清空购物车 但这又没有太大的影响,因此事务应用的比较少,

2.譬如有一些公司对库存不敏感,没有库存了,可以去采购,因此相当于0库存 只有上下架状态,库存个数不影响销售,这种情况下生成订单 不去扣库存,同样没有太多的影响, 因此,您可以根据您们自己的业务类型进行自己勾画业务。

3.services里面没有添加任何事务,事务的使用是在controller和 block层, services层如果您一定要在里面使用,那么您二开的时候一定要 规避事务嵌套,一个事务没有结束又嵌套另外一个事务会出问题。

4.mysql事务操作中,读过的数据,会被上读锁,事务未结束前, 读的数据是不允许做更新删除操作,因此,事务操作,where条件一定 要做到索引搜索,不然innodb会进行锁表, 譬如update user set sex = 'men' where name = 'xxxx' ,如果使用innodb, user表的name字段没有索引,那么update操作会锁表, 如果name字段有索引,那么只会锁相应的行,这个了解innodb的原理就会明白

5.对于mysql的操作,一般解决 锁表的问题 和 索引的问题,基本可以解决90%的问题,基本可以解决90% 的问题,当然锁的问题除了事务类操作,也有一部分是索引导致的,可以通过 索引,将表锁搞成行锁 ,因此,在更新操作,删除操作的过程中,一定要注意,不要锁表, 而应该锁行。