本文共 797 字,大约阅读时间需要 2 分钟。
73、是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?
数据库表结构如何设计,有哪些表,分别有什么作用?答案:三个表,分别是:用户信息表,有字段:id(用户编号),name(用户名),point(现有积分),box_num(拥有魔盒个数)魔盒信息表,有字段:all_num(所有魔盒个数),remain_num(剩余魔盒个数)订单表,有字段:id(订单编号),user_id(用户 id),order_time(下单时间)下单过程中哪些地方可能成为瓶颈?如何解决或改善?答案:所有的用户下单的时候需要对魔盒信息表进行写入,需要对其进行加锁,这是瓶颈。改善方法:可以把魔盒信息表划分为多个表(如 10 个),每个表的魔盒个数平分(如每个表 5 万个),然后访问表的时候进行负载均衡,如用用户的 IP 计算出一个数,然后进行 mod10 运算,决定分配到哪个表中。但是这种情况下,如果一个表中的魔盒分配完了,就需要记录其为不可用,下次负载均衡的时候,就需要对其进行考虑。是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?答案:会用到数据库事务,用户下单的时候,需要对用户现有积分,拥有魔盒个数,剩余魔盒个数这些字段进行修改,另外,还要在订单表中添加一条新的记录,所有这些都包含在一个事务中。
转载地址:http://xgnab.baihongyu.com/