功能描述如下:1000个用户向本服务器提交共1000个数据(有可能他们是同时提交数据),我想将这1000个数据存到数据库的一张表里,但是我想通过时间先后的顺序将这1000问题排序,但是有可能有很多数据拥有相同的时间标签,那服务器会怎么排序插入数据库??
第二问题:假设这一千个数据全部排序成功,又有1000个用户要来获取这1000个数据,他们的请求又有可能是同一时间点发出的请求,但是我们必须要安排第一个请求的人得到第一个数据,也是按时间先后分配,那服务器要怎样处理这些同时发来的请求?也就遇到很多并列第一的请求??
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
第一个比较好解决,业务部分不考虑并发和排序,在表中有2个字段,id(对于mysql用自增,对于oracle用sequence),另一个timestamp记录时间,但是要是原子性事务保证。排序的时候用 order by timestamp,id 就可以了。
第二个,php不提供线程、并发控制和锁、CAS原子量,mysql没有实现sequence等等,所以你这个方案暂时看很难实现。
另外,“同时”“并列”这些概念是不对的,只要时间片足够小,先后顺序是一定存在的。
即使并发很大,竞争很激烈,但只有一个能够获得锁,所以看起来“同时”的东西,会变成锁机制下的硬性排序。