一个关于数据库并发压力转化到tomcat并发的讨论 数据库并发设计mysql服务器 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 连接池是c3p0,测试的时候发现的确是 sql理论上执行成功了时候返回1,但是有的请求超过等待时间就返回的0了 思路是错的,越是底层的压力越是不好分担,tomcat所在的服务器离开了数据库以后连剩余资源的数量都不知道,如果响应用户的请求?可以考虑从业务上改造你的流程:可以参考小米/12306的排队策略预先构造好有权限更新的队列(小米和12306的排队),tomcat只放100个人进来,其他的人直接提示更新失败,然后在慢慢的处理这100个更新的请求,这样数据库的压力就小了 有个小想法,楼主看能参考下不 类似于 冰糕数的这种数据,能不能在服务器本地做一个缓存,然后在缓存中进行计算,这样计算的压力就在服务器侧了固定一个时间把当前的结果提交到数据库进行记录,像其他字段,比如账户余额,因为是1对1,所以可以继续在数据库中直接操作 当然既然是跟票子有关系的,自然要保证事务的一致性,不能缓存中操作了,但是数据库中没有操作另外一种可能是从数据库表结构上解决问题,不对单一字段进行修改, 可以新建一张Sales表,记录冰糕的售卖信息,冰糕的总量是固定的 这样的话对于一个在线售卖网站,不太合适吧,像淘宝的一个item 库存跟这个case 有点像,也没有说,我只能多少多少用户进来不知道你看我说的对不 单Tomcat到是比较好实现.只要把雪糕的数量管理弄到Java类中并建立相应的工厂方法即可.使用的时候通过过长请求一个雪糕,如果返回了则可以继续执行,没返回则说明没有雪糕了,这是需要提示用户已经售罄了.得到雪糕的如果执行没有错误则在执行完成后调用工厂的消耗雪糕的方法,否则调用退货方法. 这样的话对于一个在线售卖网站,不太合适吧,像淘宝的一个item 库存跟这个case 有点像,也没有说,我只能多少多少用户进来不知道你看我说的对不我提到的是一般“秒杀”业务的处理方法,是LZ问题的放大版本,LZ那个问题的关键不在于判断存量,而在于大量的更新请求会直接把数据库拖垮。一般的业务场景下,用数据库硬抗就行了,没必要考虑太多 应该避免update同一条记录,避免产生X锁。建议:每购买一个雪糕就Insert一条记录,根据count到的结果即已卖出的数量与雪糕总数进行比较,这样不会产生X锁。 你的数据库有没有多个Server并发访问?如果没有,那么程序启动的时候把数量读到从数据库读到内存,直接操作内存就好了。 js判断struts2返回值是否为空 spring拦截器,如何拦截父类的方法 java开发网站 list.get(i)=超重,甘油三脂(TG)偏高,肝囊肿 怎么去掉里面的逗号? 如何利用搜索引擎进行信息采集? jdbc连接oracle数据库的问题 菜鸟求教:如何走进j2ee? 帮我解释一下 struts 中 struts-config.xml中的几句话阿! ■■高薪诚聘J2EE程序员(5000-10000元)可兼职,限上海,北京,深圳!!! 求救struts2validate不执行 Java序列化的意义 关于hibernate模拟数据并发问题,请大神提供下思路
预先构造好有权限更新的队列(小米和12306的排队),tomcat只放100个人进来,其他的人直接提示更新失败,然后在慢慢的处理这100个更新的请求,这样数据库的压力就小了
固定一个时间把当前的结果提交到数据库进行记录,像其他字段,比如账户余额,因为是1对1,所以可以继续在数据库中直接操作 当然既然是跟票子有关系的,自然要保证事务的一致性,不能缓存中操作了,但是数据库中没有操作另外一种可能是从数据库表结构上解决问题,不对单一字段进行修改, 可以新建一张Sales表,记录冰糕的售卖信息,冰糕的总量是固定的
只要把雪糕的数量管理弄到Java类中并建立相应的工厂方法即可.
使用的时候通过过长请求一个雪糕,如果返回了则可以继续执行,没返回则说明没有雪糕了,这是需要提示用户已经售罄了.
得到雪糕的如果执行没有错误则在执行完成后调用工厂的消耗雪糕的方法,否则调用退货方法.
我提到的是一般“秒杀”业务的处理方法,是LZ问题的放大版本,LZ那个问题的关键不在于判断存量,而在于大量的更新请求会直接把数据库拖垮。一般的业务场景下,用数据库硬抗就行了,没必要考虑太多
建议:每购买一个雪糕就Insert一条记录,根据count到的结果即已卖出的数量与雪糕总数进行比较,这样不会产生X锁。
如果没有,那么程序启动的时候把数量读到从数据库读到内存,直接操作内存就好了。