当前位置: 首页 > news >正文

花店网站建设实训总结成都设计公司装修

花店网站建设实训总结,成都设计公司装修,安徽网站建设认准-晨飞网络,建网站中企动力目录 业务场景 业务问题#xff1a; 数据库表设计#xff1a; like#xff08;关注表#xff09;#xff1a; friend#xff08;朋友表#xff09; 并发场景下#xff0c;SQL语句执行逻辑 比较 A 和 B 的大小#xff0c;如果 A执行下面的逻辑#xff1a; 数据库表设计 like关注表 friend朋友表  并发场景下SQL语句执行逻辑 比较 A 和 B 的大小如果 A执行下面的逻辑 如果 AB,则执行下面的逻辑 SQL写法详解 参考内容 业务场景 业务上有这样的需求A、B两个用户如果互相关注则成为好友。 业务问题 在并发场景下同时有两个人设置为关注对方就可能导致无法成功加为朋友关系。如下 sessiona喜欢bsessionb喜欢a begin; select * from friend_like where user_id B andliker_id A;(返回空) begin; select * from  friend_like where user_id B andliker_id A;(返回空) insert into  friend_like  (user_id, liker_id) values(B,A);insert into  friend_like  (user_id, liker_id) values(A,B);commit;commit; 数据库表设计 like关注表 CREATE TABLE friend_like (id int(11) NOT NULL AUTO_INCREMENT,user_id int(11) NOT NULL,liker_id int(11) NOT NULL,relation_ship int(11) NOT NULL,PRIMARY KEY (id),UNIQUE KEY uk_user_id_liker_id (user_id,liker_id) ) ENGINEInnoDB; friend朋友表  CREATE TABLE friend (id int(11) NOT NULL AUTO_INCREMENT,friend_1_id int(11) NOT NULL,friend_2_id int(11) NOT NULL,UNIQUE KEY uk_friend (friend_1_id,friend_2_id),PRIMARY KEY (id) ) ENGINEInnoDB; relation_ship:  1表示 user id 关注 liker id; 2表示liker id 关注 user id; 3表示互相关注。 并发场景下SQL语句执行逻辑 比较 A 和 B 的大小如果 AB执行下面的逻辑 begin; /*启动事务*/ insert into like(user_id, liker_id, relation_ship) values(A, B, 1) on duplicate key update relation_shiprelation_ship | 1; select relation_ship from like where user_idA and liker_idB; /*代码中判断返回的 relation_ship如果是1事务结束执行 commit如果是3则执行下面这两个语句*/ insert ignore into friend(friend_1_id, friend_2_id) values(A,B); commit;/*提交事务*/ 如果 AB,则执行下面的逻辑 begin; /*启动事务*/ insert into like(user_id, liker_id, relation_ship) values(B, A, 2) on duplicate key update relation_shiprelation_ship | 2; select relation_ship from like where user_idB and liker_idA; /*代码中判断返回的 relation_ship如果是2事务结束执行 commit如果是3则执行下面这两个语句 */ insert ignore into friend(friend_1_id, friend_2_id) values(B,A); commit; SQL写法详解 这个设计里让“friend_like”表里的数据保证 user id liker id这样不论是A关注B还是B关注A在操作“like”表的时候如果反向的关系已经存在就会出现行锁冲突 然后insert...on duplicate 语句确保了在事务内部执行了这个 SQL语句后就强行占住了这个行锁之后的 select 判断 relation ship 这个逻辑时就确保了是在行锁保护下的读操作。 操作符“|” 是按位或连同最后一句 insert 语句里的 ignore是为了保证重复调用时的幂等性 这样即使在双方“同时”执行关注操作最终数据库里的结果也是 like 表里面有一条关于 A和B的记录而且 relation ship 的值是3并且 friend 表里面也有了A和B的这条记录。 参考内容 15 | 答疑文章一日志和索引相关问题 (geekbang.org)
http://www.pierceye.com/news/273110/

相关文章:

  • 小企业网站建设哪找网站制作软件dw
  • 百度收录提交网站后多久收录重庆个人房源网
  • 深圳网站建设制作公司排名网站设计怎么收费
  • 免费培训学校网站源码成免费crm破解版
  • w网站建设湖北建设厅举报网站
  • 营销型网站分为哪几种乐山网站建设公司
  • 淘宝网站建设类别好看的网站后台界面
  • 海口网站建设工作中企动力全球邮企业邮箱
  • 青岛网站制作排名绵阳做网站优化
  • 扬州市建设工程造价管理站网站开发建设网站
  • 广州网站设计公司济南兴田德润o评价潍坊响应式网站建设要多久
  • 网站模板如何优化平阳县建设局网站
  • 厦门外贸网站找谁可以做app的网站
  • 本地电脑静态网站建设游戏代理平台免费
  • 网站建设公司的成本有哪些内容wordpress admin空白
  • 高端网站建设如何收费济南行业网站建设
  • 昆明网站制作专业麦当劳订餐网站 是谁做的
  • 网站代备案公司名称网页游戏怎么搭建
  • 教师在哪些网站可以做兼职做平面的公司网站
  • php网站后台程序做游戏ppt下载网站有哪些
  • 柳州正规网站制作公司佛山企业名录黄页
  • 企业网站做备案网站换域名 百度收录
  • 平面网站模版网站建设需要的费用
  • 营销型网站案例展示如何做网赌网站
  • 商融交通建设工程有限公司网站wordpress的伪静太文件
  • 网站rar文件做sorry动图的网站
  • 有合作社做网站得不备案期间关网站吗
  • 南京城乡住房建设厅网站wordpress文章模板下载
  • 有一个做搞笑英语视频网站外贸建站优化
  • 苏州公司建设网站深圳品牌蛋糕店有哪些品牌排行