03-大数据SQL优化理论及实践.pptx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

分享标题分享人姓名+title大数据SQL优化理论及实践

SQL——我们的老朋友ETL即席查询后端开发MySQLSparkSQLFlinkSQL金融行业社交媒体电商数据管理数据存储数据操作

为什么是SQL?

标准化语言跨平台兼容极佳的移植性减少学习成本

声明式编程命令式编程描述“如何做”受语言、框架、版本的限制声明式编程描述“做什么”支持多种底层实现策略SELECT*

FROM?users?

WHERE?phone?LIKE155%;

class?User(val?phoneNumber:String)

//?...

def?findUsersWithPhoneNumberStartingWith(userList:?Array[User],?prefix:String):?Array[User]={

????userList.filter(user?=?user.phoneNumber.startsWith(prefix))

}

查找手机号155开头的用户

成也SQL败也SQL

表达能力有限直播间观看时长进入直播间后开始上报埋点5秒一次心跳没有退出事件,仅能依靠session加购、下单数动线为浏览商品、加购、下单有多少用户在中间步骤放弃购买操作时效24小时连续登录一周内累计登录时长超过一小时剔除时长小于10秒的用户信用卡消费最近三个月内最长连续消费的天数

易学难精在order_type有倾斜的情况下,哪种效率更高?SELECT?order_type,COUNT(1),SUM(amount)FROM`order`GROUPBY?order_type;SELECT?SPLIT(first_phase_type,_)[1]AS?second_phase_type,SUM(cnt),SUM(amt)FROM(SELECT?first_phase_type,COUNT(1)AS?cnt,SUM(amount)AS?amtFROM(SELECT?concat(CAST(RAND()*90+10ASINT),‘-’,?order_type)AS?first_phase_type,amountFROM`order`)?t1GROUPBY?first_phase_type)?t2GROUPBY?SPLIT(first_phase_type,-)[1];

为什么要调优?降本增效降低资源开销提升开发效率自我提升不能只得其形,未得其意”

降本增效一个索引,报表加载时间提升28.7倍

调优思路

理解业务,选择需求统计已经激活数字钱包用户数channel_id代表渠道flagin(1,257)表示用户属于正常激活状态SELECTCOUNT(DISTINCT?ba.uid)AS?distinct_uid_countFROM?bank_account?ba?--?银行账户表LEFTJOIN?user_register?b?ON?ba.uid?=?b.uid?--?用户注册表LEFTJOIN?user_info?a?ON?ba.uid?=?a.uid?--?用户个人信息表WHERE?ba.channel_id?!=10004--?数字钱包服务AND?ba.flag?IN(1,257);--?用户没有被封禁SELECTCOUNT(DISTINCT?ba.uid)AS?distinct_uid_countFROM?bank_account_tab?baWHERE?ba.channel_id?!=10004--?数字钱包服务AND?ba.flag?IN(1,257);--?用户没有被封禁无意义的关联

理解业务,选择需求统计非自营渠道的支付订单数筛选字段存在JSON字符串中枚举值type=4表示自营枚举值type允许为空,也代表非自营SELECT?COUNT(1)AS?cnt

FROM`order`WHEREget_json_object(info,$.type)!=4这样筛选对不对?WHEREget_json_object(info,$.type)!=4ORget_json_object(info,$.type)ISNULLORget_

文档评论(0)

优选文档 + 关注
实名认证
内容提供者

专注于发布优质文档,喜欢的可以关注一下哦~

1亿VIP精品文档

相关文档