MYSQL数据库并发查询求教 MYSQL数据库下,当用户想添加记录到A表时,想先从A表查询当前最大的字段如ID,等等,+1后存入新记录,问题是多用户同时的时候,会出现同时读取当时最大ID为5,+1后都为6。如何解决这种问题,是锁表还是怎么样,不要自增不要自增,因为不是ID,只是某一列, 求大佬教下,新手不太懂。希望大佬能说的详细点~最好能贴个代码之类的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以使用redis事务的WATCH监听,如果事务监听的同时其他人也在修改此记录则被打断当你更新的时候把此条记录放到redis去更新,配合事务监听 脏读啊?可以redis队列解决,也可以使用乐关锁解决,具体操作为:查询到ID字段当前的最大值之后保存到变量$ver,插入新记录的时候如果 'update A set ID = ' . $ver +1 . ', ID = ' . $ver + 1 . 'where ID = ' . $ver;这个条件如果为真则插入成功,否则提示系统繁忙这么一个思路 也可以,看平时并发量,我自己觉得锁表会从查询到更新才释放锁,是会有点影响效率,如果并发量很大的话可以尝试用redis监听,都可以去改谁先修改谁正确,事务打断重新修改,如果并发量很大可能要考虑阻塞的情况,如果你们业务量不大我觉得锁表就够了 怎么把一个php类文件里面的代码全部读出来? 一个端口,一个网站,怎么配置? PHP常用代码 获取网址正则怎么搞? mcyrpt模块的问题 高手进~~~一个关于PHP网站目录文件夹的问题 chop()ltrim()rtrim()函数的问题 菜鸟问题:为什么取不出来值! 有一个3万条记录的表,在显示记录时,出现错误了 求助!一个关于拼英伪静态的问题。 有对应索引的情况下还是报错 Notice: Undefined index: qrcode php 数据库数组数据提取
当你更新的时候把此条记录放到redis去更新,配合事务监听
也可以,看平时并发量,我自己觉得锁表会从查询到更新才释放锁,是会有点影响效率,如果并发量很大的话可以尝试用redis监听,都可以去改谁先修改谁正确,事务打断重新修改,如果并发量很大可能要考虑阻塞的情况,如果你们业务量不大我觉得锁表就够了