MariaDB写入数据重复计算,哪里出问题?

新手上路,请多包涵

MariaDB写入数据重复计算,找不到问题的根源。
数据库内存8G ,分配给InnoDB 6G

业务描述
游戏平台的游戏有 输、赢、平局三种状态,每天几千个会员在玩游戏。
第一个表 summary表 记录了每个会员当天的所有游戏记录,
summary表结构
uid(会员Id)
dateTime(玩游戏的时间)
settleAmount(结算额。大于0就算赢额,小于0就算输额)

第二个表 report 记录了每个会员每天输赢汇总
report表结构
uniqueKey(主键)
winAmount(当天赢总额)
lostAmount(当天输总额)

uniqueKey=md5(uid+dateTime);

现在要做的是,月底要做数据汇总,把本月所有玩家的游戏日志(summary表)安装会员/每天 这样的小计形式汇总到 report表中,以便查看会员每天的输赢情况

<?

$list=(从 summary 读取数据)

foreach($list AS $item)
{
    $uniqueKey=md5($item['uid']+$item['dateTime']);
    $winAmount=($item['settleAmount']>0)?$item['settleAmount']:0;
    $lostAmount=($item['settleAmount']<0)?$item['settleAmount']:0;
    
    $sql="INSERT INTO `report` (`uniqueKey`,`winAmount`,`lostAmount`) VALUES ('{$uniqueKey}',{$winAmount},{$lostAmount}) ON DUPLICATE KEY UPDATE `winAmount`=`winAmount`+{$winAmount},`lostAmount`=`lostAmount`+{$lostAmount}";
    
    $mysql->execute($sql);
}

?>

执行完毕之后,查看report表中的数据,经常发现winAmount或者lostAmount 与实际额不符,大多数情况下是实际数据2~10倍不等

Who knows the reason, Why

阅读 1.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题