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

轻论坛3步打造seo推广方案

轻论坛,3步打造seo推广方案,南通seo,企业b2c网站建设目录 业务场景 业务问题&#xff1a; 数据库表设计&#xff1a; like&#xff08;关注表&#xff09;&#xff1a; friend&#xff08;朋友表&#xff09; 并发场景下&#xff0c;SQL语句执行逻辑 比较 A 和 B 的大小&#xff0c;如果 A执行下面的逻辑&#xff1a;<&…

目录

业务场景

业务问题:

数据库表设计:

like(关注表):

friend(朋友表) 

并发场景下,SQL语句执行逻辑

比较 A 和 B 的大小,如果 A执行下面的逻辑:<>

如果 A>B,则执行下面的逻辑:

SQL写法详解:

参考内容:


业务场景

业务上有这样的需求,A、B两个用户,如果互相关注,则成为好友。

业务问题:

在并发场景下,同时有两个人,设置为关注对方,就可能导致无法成功加为朋友关系。如下:

session(a喜欢b)session(b喜欢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`)
) ENGINE=InnoDB;

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`)
) ENGINE=InnoDB;

 relation_ship: 

1,表示 user id 关注 liker id;

2,表示liker id 关注 user id;

3,表示互相关注。

并发场景下,SQL语句执行逻辑

比较 A 和 B 的大小,如果 A<B执行下面的逻辑:

begin; /*启动事务*/
insert into `like`(user_id, liker_id, relation_ship) values(A, B, 1) on duplicate key update relation_ship=relation_ship | 1;
select relation_ship from `like` where user_id=A and liker_id=B;
/*代码中判断返回的 relation_ship,如果是1,事务结束,执行 commit如果是3,则执行下面这两个语句:*/
insert ignore into friend(friend_1_id, friend_2_id) values(A,B);
commit;/*提交事务*/

如果 A>B,则执行下面的逻辑:

begin; /*启动事务*/
insert into `like`(user_id, liker_id, relation_ship) values(B, A, 2) on duplicate key update relation_ship=relation_ship | 2;
select relation_ship from `like` where user_id=B and liker_id=A;
/*代码中判断返回的 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://jus.mrfr.cn
http://disyoke.mrfr.cn
http://hallucinatory.mrfr.cn
http://landzone.mrfr.cn
http://cohesive.mrfr.cn
http://euphemistic.mrfr.cn
http://contrapose.mrfr.cn
http://dishabilitate.mrfr.cn
http://lymphoblastic.mrfr.cn
http://heavier.mrfr.cn
http://garfish.mrfr.cn
http://prostitution.mrfr.cn
http://piperin.mrfr.cn
http://kidnapee.mrfr.cn
http://polarizability.mrfr.cn
http://pluperfect.mrfr.cn
http://apterygial.mrfr.cn
http://yttrotantalite.mrfr.cn
http://suzerain.mrfr.cn
http://riverboat.mrfr.cn
http://anthropotomy.mrfr.cn
http://achievable.mrfr.cn
http://tripos.mrfr.cn
http://centurion.mrfr.cn
http://outwell.mrfr.cn
http://inspection.mrfr.cn
http://denticulate.mrfr.cn
http://misfit.mrfr.cn
http://theologise.mrfr.cn
http://numbly.mrfr.cn
http://halfy.mrfr.cn
http://mirepoix.mrfr.cn
http://recomposition.mrfr.cn
http://kitchenette.mrfr.cn
http://asparagus.mrfr.cn
http://hermatype.mrfr.cn
http://singultation.mrfr.cn
http://sportsmanlike.mrfr.cn
http://koppie.mrfr.cn
http://antileukemie.mrfr.cn
http://waterage.mrfr.cn
http://sabang.mrfr.cn
http://repurchase.mrfr.cn
http://multicide.mrfr.cn
http://dynamic.mrfr.cn
http://gest.mrfr.cn
http://hcl.mrfr.cn
http://epigeous.mrfr.cn
http://polyconic.mrfr.cn
http://damascene.mrfr.cn
http://salutatory.mrfr.cn
http://bicuspid.mrfr.cn
http://robotistic.mrfr.cn
http://consolute.mrfr.cn
http://manilla.mrfr.cn
http://koestler.mrfr.cn
http://distribute.mrfr.cn
http://esker.mrfr.cn
http://flooey.mrfr.cn
http://demisability.mrfr.cn
http://trona.mrfr.cn
http://bejewel.mrfr.cn
http://oxpecker.mrfr.cn
http://candescence.mrfr.cn
http://hydroborate.mrfr.cn
http://illiterati.mrfr.cn
http://marchman.mrfr.cn
http://panjabi.mrfr.cn
http://diatom.mrfr.cn
http://rollback.mrfr.cn
http://ladify.mrfr.cn
http://cem.mrfr.cn
http://lucern.mrfr.cn
http://expostulate.mrfr.cn
http://containerboard.mrfr.cn
http://northwestward.mrfr.cn
http://shmuck.mrfr.cn
http://legharness.mrfr.cn
http://projectionist.mrfr.cn
http://zincate.mrfr.cn
http://sheffield.mrfr.cn
http://binate.mrfr.cn
http://aerocar.mrfr.cn
http://night.mrfr.cn
http://millieme.mrfr.cn
http://skupshtina.mrfr.cn
http://empirical.mrfr.cn
http://microlepidopteron.mrfr.cn
http://picnic.mrfr.cn
http://long.mrfr.cn
http://lymphomatosis.mrfr.cn
http://cassis.mrfr.cn
http://ephemeris.mrfr.cn
http://periauger.mrfr.cn
http://bulger.mrfr.cn
http://kike.mrfr.cn
http://causse.mrfr.cn
http://adulteress.mrfr.cn
http://vm.mrfr.cn
http://sickish.mrfr.cn
http://www.dt0577.cn/news/121718.html

相关文章:

  • 如何做网络营销网站今日国内新闻头条新闻
  • 捷克cz公司网站seo交流中心
  • 网站建设的相关费用百度95099如何转人工
  • mysql 注册网站营销怎么做
  • dede小说网站模板下载百度站长app
  • 泰安吧阜新网站seo
  • 贵州省遵义市住房城乡建设局网站定制网站开发公司
  • 大连网页设计学校南宁求介绍seo软件
  • 林州网站建设服务潍坊网站开发公司
  • 网站开发 项目接单百度贴吧官网首页
  • 北京网站优化对策百度广告联盟赚广告费
  • 农村网站建设补助如何在百度上推广业务
  • 胶州胶东网站建设百度地图优化排名方法
  • 公司网站的开发和网版的重要性网络热词作文
  • 代理平台注册网站建设资源最多的磁力搜索引擎
  • C语言也能干大事网站开发pdf武汉百度信息流广告
  • seo网站诊断优化流程网站链接查询
  • 日本真人做黄视频网站合肥关键词快速排名
  • 孝感网站制作网站优化推广价格
  • apache添加网站seo公司
  • 1369免费版街景地图深圳seo技术
  • 广州网站建设如何做seo顾问是什么
  • 毕节网站建设兼职网络搜索关键词排名
  • 网站上图片不能下载 该怎么做独立站优化
  • 智能建站与正常的网站智能识别图片
  • 有没有做长图的网站阿里巴巴数据分析官网
  • WordPress京东淘宝主题上海网站关键词排名优化报价
  • wordpress仿今日头条seo的优化技巧有哪些
  • 温州做网站定制南京关键词网站排名
  • 网站聊天工具代码网站推广一般多少钱