|
咨询一个mysql数据并发,造成数据统计不准确的问题,特急
我用的是jsp+mysql,制作了一个网站统计,统计插入统计代码到您网站后,统计你总共的浏览IP数据,和每天的浏览IP总数,每天每小时的浏览IP总数.
但发现统计后,每小时加起来的数,对不起每天的数据,每天加起来的数据,对不上总的浏览IP数,我用的是mysql数据库,我用的是mysql MyISAM格式
我的程序代码如下:
是不是mysql同时的并发数据量大,还是什么原因,应该如何解析这数据能同步,数据各个表统计的数据加起来能够互相的符合,互相的准确一致
我更建立了三张表,一个是用户表,里面有一个总的点出量;
还有一个是日表,统计表每个用户日点出量表
还有一个是小时表,统计每个用户每小时的点出量表
//统计总的点出量
dbc.prepareStatement(
"update users set outscore=outscore+? where username=?");
dbc.setDouble(1, unitscoredouble);
dbc.setString(2, outname);
dbc.executeUpdate();
//统计每天点出量
dbc.prepareStatement(
"select username from userdayhistory where username=? and dotyearmonth=? and dotday=?");
dbc.setString(1, outname);
dbc.setInt(2, yyyyMM);
dbc.setInt(3, d);
rs = dbc.executeQuery();
if (rs.next()) {
dbc.prepareStatement(
"update userdayhistory set outscore=outscore+? where username=? and dotyearmonth=? and dotday=?");
dbc.setDouble(1, unitscoredouble);
dbc.setString(2, outname);
dbc.setInt(3, yyyyMM);
dbc.setInt(4, d);
dbc.executeUpdate();
}
else {
try {
dbc.prepareStatement("INSERT INTO userdayhistory (username,outscore,putscore,dotyearmonth,dotday) VALUES (?,?,?,?,?)");
dbc.setString(1, outname);
dbc.setDouble(2, unitscoredouble);
dbc.setInt(3, 0);
dbc.setInt(4, yyyyMM);
dbc.setInt(5, d);
dbc.executeUpdate();
}
catch (SQLException ex7) {
System.out.println("494");
}
}
//统计每小时点出量
dbc.prepareStatement(
"select username from userhourhistory where username=? and dotyearmonthday=? and dothour=?");
dbc.setString(1, outname);
dbc.setInt(2, yyyyMMdd);
dbc.setInt(3, H);
rs = dbc.executeQuery();
if (rs.next()) {
dbc.prepareStatement(
"update userhourhistory set outscore=outscore+? where username=? and dotyearmonthday=? and dothour=?");
dbc.setDouble(1, unitscoredouble);
dbc.setString(2, outname);
dbc.setInt(3, yyyyMMdd);
dbc.setInt(4, H);
dbc.executeUpdate();
}
else {
try {
dbc.prepareStatement("INSERT INTO userhourhistory (username,outscore,putscore,dotyearmonthday,dothour) VALUES (?,?,?,?,?)");
dbc.setString(1, outname);
dbc.setDouble(2, unitscoredouble);
dbc.setInt(3, 0);
dbc.setInt(4, yyyyMMdd);
dbc.setInt(5, H);
dbc.executeUpdate();
}
catch (SQLException ex11) {
System.out.println("9994");
}
} |
|