SQL优化

我是橙子岳 发布于 2017/04/04 14:01
阅读 246
收藏 2

最近读书发现一段话,不能理解。

在双11 场景下,数据同步的瓶颈一般不在淘宝内部服务,而在外部用户的
DB 性能上。数据同步是以消息的方式保证实时性。在处理非创建消息的时候,
我们会使用直接update + modified 时间判断的更新方式,替换传统的先select
进行判断之后再进行update 的做法。这一优化降低了90%的DB 访问量。
传统写法:
SELECT * FROM jdp_tb_trade WHERE tid = #tid#;
UPDATE jdp_tb_trade SET jdp_response = #jdpResponse#, jdp_modified =
now() WHERE tid = #tid#
不一样的技术创新
132
优化写法:
UPDATE jdp_tb_trade SET jdp_response = #jdpResponse#, jdp_modified =
now() WHERE tid = #tid# AND modified < #modified#
 

 

哪里有优化?

AND modified < #modified#这里表达的是什么意思

加载中
0
一号男嘉宾
一号男嘉宾
书上讲的不一定都是正确的
0
风翔飞
风翔飞

优化的地方就是少了一步查询,modified也许是一个修改版本,每次更新会加1(我猜的),modified会带入页面,更新的时候+1更新,如果db已经被别的更新过, modified < #modified#失败,那么更新不会执行

0
玖伍陈海天
玖伍陈海天
modified是一个时间字段,,AND modified < #modified应该是写错了?应该是AND jdp_modified < #modified,,从执行时间来确定update只执行一次.....我猜的,哈哈哈
0
Java_Coder
Java_Coder

这个是不是解释?

订单数据存在明显的时间段分布不均的现象,在白天订单成交量较高,对DB的访问量增大,此时不适合做频繁的删除。采用逻辑删除的方式批量更新失效数据,在晚上零点后交易低峰的时候再批量对数据错峰删除,可以有效提升数据同步体验。

 

http://www.infoq.com/cn/articles/taobao-open-platform-overcome-technical-difficulties

返回顶部
顶部