上周有幸邀请了Tableau原厂专家Kevin老师来给我们的做了非常专业的分享,其中印象最深刻的是性能优化(PERFORMANCE TURING)部分,从这个部分真正见识到了高手是怎么理解和优化Tableau报表乃至整个数据架构的。现对自己听到的关键词进行框架梳理:
性能优化需要考虑的层面
- 硬件层
CPU
内存
固态硬盘 - OS层
资源占用大户
防毒软件 - 数据层
数据库类型
列式数据库(自带索引)
数据字段类型 - 模型层
宽表
星型 - 查询层
索引
公式 (尽量不要在字段上直接加计算,否则每次都要全跑)
数据源位置 (用一张空白的工作表独立发布数据源)
带宽
一般步骤
- 先确定性能基准
先确保desktop上速度是OK的,再考虑server
用将拓展名修改为zip方式观察twbx文件内的数据文件与大小
通过任务管理器观察IO数量,错误数量,判断影响速度的进程
可结合情况考虑关闭自动保存来提升速度
可通过“立即运算计算”来建立一个中间层,提升效率 - 拷贝工作表单独观察
- 启动性能记录
- 强制刷新数据
- 观察耗时多的工作表和环节
- 通过TLV观察日志文件内的SQL语句
Protocol query begin/end
Batch summary
qp-batch-summary
并发的查询会产生新的日志文件
高性能报表的四种可参考解决方案
- 大宽表带索引,需使用数据库的功能压缩索引以保证大小合适
- 使用列式存储的数据库
- 使用星型模型数据结构,保证数据质量
- 使用hyper数据源(适用范围10万—10亿)
三个关键认知
-
性能不是调出来的是,而是结合使用场景设计出来的
许多人会觉得性能调试调出来的,其实不是,性能是从硬件到软件各层面综合呈现出的一个结果,自行车再怎么调也变不成汽车,高铁上装个飞机引擎也没那个必要,最关键的是结合使用场景的需要,做到够用就行。 -
先明确性能的基准,再谈性能优化
所谓性能基准,就是找到性能的上下限和目标在哪里,具体来说就是现在是啥样(下限),现有的配置可达到的最好效果是啥样(上限),客户的需求是啥样(目标)。明确了这三点,性能优化才能有的放矢。 -
逐步找到报表变慢的原因
也就是把问题“分解”成一个个小的环节和变量去观察和调整,这是我在Kevin老师的分享中感受很深的一点。要做到这点,关键其实是要对整个数据流的软硬件环节有深入的理解,这种理解越深入底层,分解的颗粒度就越细,能进行优化的空间也就越大。
网友评论