mysql 怎样进行olap_MySQL与OLAP:分析型SQL查询最佳实践探索

搞点多维分析,糙快猛的解决方案就是使用ROLAP(关系型OLAP)了。数据经维度建模后存储在MySQL,ROLAP引擎(比如开源的Mondrian)负责将OLAP请求转化为SQL语句提交给数据库。OLAP计算分析功能导致MySQL需要进行较多复杂SQL查询,性能调优必不可少,本文总结了一些实用原则。

OLAP特点

OLAP的典型应用包括复杂动态报表,需要支持钻取(上卷和下钻)、切片、切块和旋转操作。下表总结了OLAP和OLTP系统的主要区别。OLAP的特点决定了SQL的查询场景和优化方案,下文将从索引、聚合、子查询、表连接和Pivoting等几个方面分别介绍。

OLAP

OLTP

用户量

分析人员用户量相对小

高并发

数据库设计

维度模型:星型、雪花型号

规范化

数据量

大,动辄千万级别

小,一般不超过百万级别

SQL读写场景

定期导入,一般无更新,复杂查询每次检索大量数据

以事务为单位每次读写少量数据

老生常谈之索引

在权衡数据容错恢复和性能之后,存储引擎选择的是Innodb。Innodb索引的特性是主键聚集索引和B+Tree数据结构。利用这两个特性,能够提升数据导入和多维度组合切片的性能。

1)       数据导入速度

下图为Innodb表主键索引示意图,聚集索引使表中所有数据必须按照主键顺序存储在主键索引叶子节点上。如果不按照主键顺序导入数据,会导致额外的分页、数据查找、移动IO操作,这样,Innodb表的插入速度严重依赖于插入顺序。解决方法比较简单:主键使用Auto_Increment列。

0818b9ca8b590ca3270a3433284dd417.png

2)       多维度切片

多维度组合查询、分组和汇总操作非常常见,那么在多个维度字段上添加复合索引是必不可少的,而复合索引的字段选择和顺序尤为重要。

谁排NO.1?一般遵循以下原则:<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值