
1 b821025551b 2017-11-01 16:02:19 +08:00 并发问题,要加锁。 |
2 zjsxwc 2017-11-01 16:08:56 +08:00 via Android 用队列处理更方便 |
3 frozenway OP @b821025551b 数据库是 MyISAM,加不了锁 |
5 b821025551b 2017-11-01 16:14:15 +08:00 两个解决方案: 1:上队列; 2:做个定时任务,比如今天凌晨 3 点把明天的数据顺序的 add 一遍,保证明天的数据在明天只有 update 操作。 |
6 sagaxu 2017-11-01 16:24:28 +08:00 加唯一索引(aid, xdate),然后用 upsert(insert-on-duplicate) 顺便问一句,楼主你是来黑 PHP 的吗? |
7 vescape920 2017-11-01 16:24:33 +08:00 不知道我理解的对不对 就是每个用户每天第一次访问时 insert 记录 之后是 update 该条记录 你可以把 user_id 和 date 建一个 unique 索引 在写 sql 的时候使用 ON DUPLICATE KEY UPDATE |
8 akira 2017-11-01 16:28:35 +08:00 aid 和 xdate 做个复合主键 ,代码什么的完全不用动了。 缺点是会丢部分数据 |
9 frozenway OP |
10 fcten 2017-11-01 17:01:28 +08:00 mysql 是 php 不可分割的一部分!(滑稽.jpg |
11 fcten 2017-11-01 17:04:23 +08:00 顺便,这样统计访问量性能非常差,建议做合理缓存 |
12 yxn1910 2017-11-01 17:16:10 +08:00 访问次数这样的非敏感数据建议先缓存,定时入库,在这里使用事务性价比太低。 |
13 linpf 2017-11-01 17:29:26 +08:00 并发量太大,在第一次请求时,数据库判断没有记录,然后再插入新纪录的时候,第二次请求也通过了有无记录的判断,导致重复插入。 最好的办法是加锁。但是加锁也不必依赖数据库。使用 TP 框架的缓存做一个简单的锁也可以。不妨试一下。 |