DLA访问TableStore的性能调优Hints、支持单字段update等

简介:

一、背景

Table Store是DLA最早支持的存储引擎,基于DLA+Table Store可以很好的满足大数据写入和分析的需求,具体如何使用可以看文章:DLA如何分析Table Store的数据

Hint是数据库系统中非常常用和重要的机制,用来干预SQL在数据库中的执行,从而实现性能调优、新功能灰度测试、紧急预案、执行计划选择、特殊功能选择性开启等等。在DLA中,也有相关的hint机制,具体如何使用,请看:https://zhuanlan.zhihu.com/p/55068247

目前DLA和Table Store一直在完善中,两个云产品之间也持续、密切配合。但现实中因为进度、稳定性、性能等原因,很多时候还不尽人意、不够智能化,因此不得不保留一些人为干预的入口,支持调优的余地。所以,本文就DLA面向Table Store的调优hint做一些介绍。

二、Hints介绍

1)计算分片相关:

DLA是分布式的计算系统,内部通过对每个数据表按照一定的规则来切分片/split(分片间是一个完整的划分:相互不重合,整体又完整),计算层并行执行这些分片,从而获得很高的计算并行度。分片是DLA甚至其他分布式数据库、并行数据库的核心概念。

  • 表示单个split切分大小,ots-split-unit-mb=123;默认是10MB,值域从1到102400之间;

对于超大的表,如果分片太小,可能会导致分片太多,从而导致TableStore服务承载了极大的压力,经常会产生超时,影响正常写入链路的稳定性。如果预估当前SQL要访问TableStore的数据量很大(比如10GB以上,那当前分片值建议在256;如果在100GB以上,则建议2048以上);
对于较小的表,如果分片太大,可能会影响计算并行度,从而影响延时。在适当情况下,可以缩小单个分区的大小;

  • 自动优化分片情况,ots-split-optimize=true/false,默认是false;

有些场景下用户的SQL自动产生的分片非常非常多,导致计算时Table Store的服务压力很大,经常超时,另一个方面ots产生的分片列表大> 多是顺序的,而相邻的一批split基本上又会落到相同的机器上,在DLA执行时就有可能造成访问的局部热点问题。因此通过一系列的优化手> 段,自动打散分片、合并相邻分片、随机分发分片等优化逻辑,规避热点问题从而提高性能;

  • 相邻分片合并,控制总的分片数量,ots-split-size-ratio=0.5,治愈从0.0001到1.0000之间,默认是0.5;在ots-split-optimize=true时才生效;

在ots-split-optimize=true时生效,开启分片优化之后,会有相邻分片做合并的逻辑,但是最终应该合并成多少个分片,则取决于Table Store的压力情况,通过比例值来控制。比如原本计算出100000个分片,设置ots-split-size-ratio=0.3就会尝试合并分片,控制数量接近30000个

2)计算语义相关:

  • 是否使用update功能来替换insert的功能,ots-insert-as-update=true/false,默认是false

Table Store的SDK有两个接口来更新数据,RowPutChange/RowUpdateChange;前者是是根据主键整行覆盖和变更,但主键本身不会变> 更;而后者是根据主键来更新部分非主键列,主键本身不会变更;DLA目前不支持Update语句,因此只能通过Insert SQL+hint的方式来实> 现TableStore中数据的变更;
要小心使用!!

  • 是否允许使用宽松的cast(比如long值到double,double到long)ots-loose-cast=true/false,默认是false;

默认DLA是强类型系统,上层DLA层定义了一个varchar/string类型,而底层Table Store中该字段是一个bigint类型,那如果用户就希望这么定义表结构和执行SQL的话,DLA会报错的;通过主动开启loose cast,DLA就会自动做类型转换,比如从将字符串"123"转换成整型123,等等;

3)多元索引相关:

对于大部分SQL,DLA默认是查Table Store的主表的数据进行分析;但如果用户本身已经开通了多元索引,并且用户主动要求使用多元索引,那DLA就会尽可能的使用上多元索引。当然,多元索引与MySQL的二级索引等强一致索引相比,有一些不同:1)基于异步复制,与主表之间不是强一致;2)基于倒排索引实现而非BTree;因此,用户开启多元索引的hint后,DLA需要计算才知道是否真的可以使用上多元索引。

4)其他全局场景:

  • 控制单节点的并发数:task-concurrency=<1 ~ 32的整数>,默认是32;

目前DLA集群规模比较大,默认都是高并发的去拉取Table Store的数据。但如果遇到大量的Table Store的超时、重试问题时,就表示DLA目前的请求吞吐太高,会直接影响到客户线上集群的稳定性。安全起见,用户在遇到Table Store超时报错导致SQL执行失败时,需要酌情控制并发度,比如task-concurrency=2;

本身这个并发度控制不太应该暴露给用户来使用;但迫于目前DLA反压机制不够健全、与Table Store在压力互通上做得不够的问题,因此暂时由客户来控制;未来要去掉这个hint;

三、未来方向考虑

目前,基于hint调优也许可以完成一些场景的优化,但用户的使用代价比较大,不太方便。

未来,DLA需要实现预先采集更多的统计信息,免去用户主动添加hint的麻烦,自动化的选择和路由,做到真正的数据库体验。针对分区的信息,也要打通Table Store内部的消息流,自动去采集相关的信息,免去各种运行时才去做的工作,提高查询性能。

未来,DLA还需要下推更多的计算到Table Store上,实现更好的”近存储计算“,比如聚合能力下推、函数下推、支持全文索引等等,让用户使用DLA+Table Store获得更好的体验。

四、相关文档

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
缓存 运维 NoSQL
使用 Blink 访问表格存储 Tablestore
本文介绍如何使用实时计算 Blink 服务访问表格存储服务(Tablestore),并进行开发。背景Blink 产品介绍阿里云实时计算Flink版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统,由Apache Flink创始团队官方
548 0
使用 Blink 访问表格存储 Tablestore
|
存储 SQL 运维
使用 Flink SQL 访问 Tablestore 源表
    本文将介绍如何使用使用 Flink SQL 通过流处理的方式访问 Tablestore 源表。 在流计算场景下,用户可以基于[通道服务](https://help.aliyun.com/document_detail/102489.html),利用CDC(数据变更捕获)技术,通过 Flink 完成流式消费和计算。 Flink on Tablesto
1176 0
使用 Flink SQL 访问 Tablestore 源表
|
SQL NoSQL 关系型数据库
DLA一键发现Tablestore元数据,轻松开启数据湖SQL分析之旅
为了使用DLA标准SQL分析Tablestore数据,往往需要很多步骤才能在DLA中创建相应元数据映射,进而使用SQL去分析Tablestore数据。 现在,数据湖分析DLA发布了一个免费的新功能可以一键快速发现Tablestore元数据,自动创建DLA库表映射到Tablestore的实例和表上,仅倒一杯水的时间即可开启SQL分析Tablestore数据之旅。
DLA一键发现Tablestore元数据,轻松开启数据湖SQL分析之旅
|
索引 NoSQL SQL
只需一步,DLA开启TableStore多元索引查询加速!
Data Lake Analytics(简称DLA)在构建第一天就是支持直接关联分析Table Store(简称OTS)里的数据,实现存储计算分离架构,满足用户基于SQL接口分析Table Store数据需求。
1843 0
|
SQL 存储 并行计算
只需一步,DLA开启TableStore多元索引查询加速!
一、背景介绍 Data Lake Analytics(简称DLA)在构建第一天就是支持直接关联分析Table Store(简称OTS)里的数据,实现存储计算分离架构,满足用户基于SQL接口分析Table Store数据需求。
424 0
|
SQL Web App开发 NoSQL
使用MaxCompute访问TableStore(OTS) 简明手册
大数据计算服务 MaxCompute 能够提供强大的分析能力,而分布式 NoSQL 数据库表格存储在行级别上的实时更新和可覆盖性写入等特性,相对于 MaxCompute 内置表 append-only 批量操作,提供了一个很好的补充。
9949 0
|
SQL 存储 NoSQL
TableStore实战:DLA+SQL实时分析TableStore
一、实战背景 什么是DLA(DataLake Analytics数据湖)?他是无服务器化(Serverless)的云上交互式查询分析服务。
3271 0
|
存储 索引
表格存储根据多元索引查询条件直接更新数据
表格存储是否可以根据多元索引查询条件直接更新数据?
108 3
|
3月前
|
DataWorks NoSQL 关系型数据库
DataWorks产品使用合集之如何从Tablestore同步数据到MySQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。