MaxCompute 费用暴涨之存储压缩率降低导致SQL输入量变大
现象:同样的SQL,每天处理的数据行数差不多,但是费用突然暴涨甚至会翻数倍。
分析:
我们先明确MaxCompute SQL后付费的计费公式:一条SQL执行的费用=扫描输入量 ️ SQL复杂度 ️ 0.3(¥/GB)。
变量主要是输入量和复杂度,如果SQL没有变更的情况下复杂度度也没有变化,那么费用上涨主要原因就是输入量增加,因此我们侧重从输入量去排查是什么环节导致来了输入量的增加。
排查:
挑两个job的Logview查看输入量,推荐用MaxCompute Studio的作业对比功能查看,作业对比功能使用方式可以参考《MaxCompute Studio使用心得系列7——作业对比》。输入量如下:

如上图,数据行数差别没有翻倍,但是大小(bytes)翻倍,基本可以排除是因为数据量暴增导致。那么数据行数增量不大,但是数据大小翻倍,无疑翻倍的这些数据肯定是有了变化,比如某些列的值长度变大那么size就变大,这个可以从这些数据的上游链路去查是否有可能某些列的值长度变的很大,如果这个也能排除,那么就可以考虑存储压缩率了。
存储在MaxCompute里的数据是经过压缩后存放的,而MaxCompute的存储计费和SQL计费涉及到的数据量都是按这些数据存在MaxCompute里压缩后的量统计。
MaxCompute数据存储压缩没有固定比例,跟表数据有关,如平均字段长度、唯一值个数、数据相似度等,一般说来,每个表中都有存在1个或几个对存储空间影响比较的字段,这些字段就是影响压缩效果的关键(可以参考相关的存储介绍文章)。知道这个知识点,我们再去排查费用变化的这一天,输入的这些数据产出的方式变化情况。
数据产出方式变化我们遇到的两个例子:
- 数据中的时间字段计算方式变化。原来存储时会处理成" yyyy-mm-dd 00:00:00"格式,此时针对这个字段yyyy-mm-dd这段重复度高,对压缩算法比较友好,最终数据的压缩率高。之后对这个字段就不进行任何处理直接是按实际时间"yyyy-mm-dd hh:mi:ss",重复率底,存储压缩率就降低,从而数据的size就更大,最终SQL扫描这部分数据时输入量也就变大所以费用就上涨。
- 数据中的敏感字段计算方式变化。原来存储时不经过任何处理,这个字段的数据相对比较有序,压缩率也比较高。之后这个字段经过自定义函数进行加密,加密后的数据变成随机无序,压缩率就底,数据的size也就更大,最终SQL扫描这部分数据时输入量也随之更大费用就上涨。
可能还有其他的情况目前还没遇到,大家如果出现这类问题,不妨自己做一下分析。
本文作者:海清
本文为云栖社区原创内容,未经允许不得转载。
MaxCompute 费用暴涨之存储压缩率降低导致SQL输入量变大的更多相关文章
- MaxCompute 费用暴涨之新增SQL分区裁剪失败
现象:因业务需求新增了SQL任务,这SQL扫描的表为分区表,且SQL条件里表只指定了一个分区,按指定的分区来看数据量并不大,但是SQL的费用非常高.费用比预想的结果相差几倍甚至10倍以上. 若只知道总 ...
- 利用InformationSchema与阿里云交易和账单管理API实现MaxCompute费用对账分摊统计
利用MaxCompute InformationSchema与阿里云交易和账单管理API 实现MaxCompute费用对账分摊统计 一.需求场景分析 很多的企业用户选择MaxCompute按量付费模式 ...
- 【转】导致SQL执行慢的原因
索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引. 索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左 ...
- 导致SQL执行慢的原因
索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引. 索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左 ...
- 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题
需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...
- Response.Write()方法响应导致页面字体变大的解决办法
关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法 最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...
- 最新版SEMCMS_PHP_3.5 过滤不严导致sql注入
一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...
- 服务器重启可能会导致SQL Server中部分数据库变为single user mode
今天检查公司生产服务器的SQL Server数据库,惊讶的发现有三个生产数据库变为了single user mode.奇怪的是没有任何人和程序执行过SQL语句将这三个数据库设置为single user ...
- Drupal V7.3.1 框架处理不当导致SQL注入
这个漏洞本是2014年时候被人发现的,本着学习的目的,我来做个详细的分析.漏洞虽然很早了,新版的Drupal甚至已经改变了框架的组织方式.但是丝毫不影响对于漏洞的分析.这是一个经典的使用PDO,但是处 ...
随机推荐
- mac上python3.x安装 图文详解
mac安装brew报错及解决办法 https://blog.csdn.net/zdp072/article/details/82563320 更改脚本中的资源链接,替换成中国科学技术大学的镜像 htt ...
- Leetcode221. Maximal Square最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 方法一 ...
- Django项目:CRM(客户关系管理系统)--51--42PerfectCRM实现AJAX全局账号注册
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- TZ_13_Hystix的服务降级_线程隔离
1.微服务中,服务之间的调用关系复杂. 一个请求有可能需要多个微服务接口才能实现.如果一次请求出现问题就会直接堵塞,占用一次tomcat链接.如果访问这个出现问题的请求就会造成tomcat请求链接都被 ...
- meet-in-the-middle 基础算法(优化dfs)
$meet-in-the-middle$(又称折半搜索.双向搜索)对于$n<=40$的搜索类型题目,一般都可以采用该算法进行优化,很稳很暴力. $meet-in-the-middle$算法的主要 ...
- 20190819 [ B ]-沫
这次考试很懵,于是我记录了考试过程. 这是B场,比较简单,A场比赛题解请去 下面直接展开=.= 考试过程: 先看三道题, T1,我一下就想到了内个等比数列.于是慌了,我当时是水果的. T2,没思路 T ...
- poj 1654 Area(求多边形面积 && 处理误差)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16894 Accepted: 4698 Description ...
- WebForm与MVC模式优缺点(转)
Asp.net Web开发方式,分为两种: 1. WebForm开发 2. Asp.Net MVC开发 MVC是微软对外公布的第一个开源的表示层框架,MVC目的不是取代WebForm开发,只是web开 ...
- Jboss 默认加载项目访问
修改JBOSS的server.xml路径为: D:\Program Files\jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer\serv ...
- (转载) poj1236 - Network of Schools
看到一篇挺好的代码,适合初学者,转载自 博主 wangjian8006 原地址:http://blog.csdn.net/wangjian8006/article/details/7888558 题目 ...