Lindorm 支持直连 OLAP 资源组和通过宽表引擎智能路由两种服务访问方式,分别适用于纯数据分析和业务查询兼顾分析的场景。根据业务需求选择合适的访问方式,即可连接 OLAP 资源组执行分析查询。
选择访问方式
根据业务场景选择合适的访问方式。
|
访问方式 |
适用场景 |
连接对象 |
是否需要 Hint |
|
直连 OLAP 资源组 |
纯粹的数据分析场景,例如对接 BI 报表工具、探索性查询 |
OLAP 资源组 |
否 |
|
通过宽表引擎智能路由 |
日常业务查询(高并发点查)兼顾复杂分析查询 |
宽表引擎 |
方式一(SQL Hint)需要;方式二(连接串参数)不需要 |
前提条件
-
已完成服务的开通与授权,并已创建 OLAP 资源组。如未完成,参考开通与管理。
-
已将客户端 IP 地址添加至 Lindorm 白名单。
直连 OLAP 资源组服务
适用场景:纯粹的数据分析场景,例如对接 BI 报表工具、数据分析师进行探索性查询等。
工作原理:直接使用 OLAP 资源组的独立地址进行连接。
操作步骤
-
登录 Lindorm 管理控制台。
-
在页面左上角,选择实例所属的地域。
-
在实例列表页,单击目标实例 ID 或者目标实例所在行操作列的管理。
-
在左侧导航栏,选择配置与管理 > 数据库连接。
-
在顶部选择计算引擎页签,在 OLAP连接方式区域找到目标资源组,获取其专有网络连接地址。获取的连接地址格式为
主机名:端口号,例如ld-bp1dv4****-proxy-ldps.lindorm.aliyuncs.com:9030。 -
通过 MySQL 协议连接 OLAP 资源组。将步骤 5 获取的连接地址拆分为主机名和端口号,分别通过
-h和-P参数指定,使用 Lindorm 宽表引擎的用户名和密码登录。mysql -hld-bp1dv4****-proxy-ldps.lindorm.aliyuncs.com -P9030 -uroot -p -
验证连接是否成功。执行以上命令后,如果显示 MySQL 命令行提示符,表示已成功连接到 OLAP 资源组,即可输入需要执行的 SQL 语句。
通过宽表引擎智能路由查询
适用场景:在日常业务查询(高并发点查)的同时,偶尔需要执行复杂的分析查询。
工作原理:连接宽表引擎,通过为 SQL 添加特定注释(Hint)或指定连接串参数,将复杂查询路由到 OLAP 资源组执行。连接宽表引擎的方式参见通过 Lindorm-cli 连接和通过 MySQL 协议连接。
可以通过以下两种方式将查询路由到 OLAP 资源组:
-
方式一(SQL Hint):为每条查询语句添加 Hint,灵活控制单条 SQL 是否转发以及转发到哪个资源组。
-
方式二(连接串参数):在建立连接时指定参数,连接建立后所有查询自动路由到指定的 OLAP 资源组。
方式一:通过 SQL Hint 转发查询
通过 MySQL 客户端或 Lindorm-cli 连接到 Lindorm 宽表引擎后,可以使用 _use_ldps_ Hint 将特定 SQL 转发至 OLAP 资源组执行。
语法格式
/*+ _use_ldps_($olap_cg_name) */
此 Hint 必须紧跟在 SELECT 关键字之后。
代码示例
-- 使用数据库
USE db01;
-- 将查询转发到默认 OLAP 资源组
SELECT /*+ _use_ldps_ */ * FROM tb01 LIMIT 5;
-- 将查询转发到指定 OLAP 资源组
SELECT /*+ _use_ldps_(olap_cg0) */ * FROM tb01 LIMIT 5;
参数说明
|
变量 |
类型 |
默认值 |
说明 |
|
olap_cg_name |
String |
默认 OLAP 资源组 |
指定查询要转发到的 OLAP 资源组名称。如果未指定,查询会被转发到默认资源组。 |
设置默认 OLAP 资源组的方式参考开通与管理。
在转发时动态设置会话变量
将查询转发到 OLAP 资源组时,还可以通过 SET_VAR Hint 控制 OLAP 引擎执行该查询时的行为,例如调整并发度、开启优化选项等。
语法格式
/*+ SET_VAR(key1 = value1, key2 = value2) */
SET_VAR Hint 必须紧跟在 _use_ldps_ Hint 之后,且不能与转发 Hint 共用一个注释块。
代码示例
-- 指定多个查询的会话变量
SELECT /*+ _use_ldps_ */ /*+ SET_VAR(query_timeout = 60, enable_profile = true) */ * FROM tb01 LIMIT 5;
参数说明
|
变量 |
类型 |
默认值 |
说明 |
适用场景建议 |
|
query_timeout |
INT |
- |
设置查询超时时间,单位为秒。 |
需要限制长时间查询的执行时长时使用。 |
|
enable_profile |
BOOL |
FALSE |
开启查询 Profile 功能,用于分析查询执行过程。 |
排查查询性能问题时使用。 |
方式二:通过连接串指定 OLAP 资源组
连接宽表引擎时,通过连接串指定 _use_ldps_=true 和 compute-group=<资源组名称> 参数,可将该连接的所有查询自动路由到指定的 OLAP 资源组,无需逐条 SQL 添加 Hint。
通过 Lindorm-cli 连接
通过 Lindorm-cli 连接宽表引擎时,在 JDBC URL 后添加 ?_use_ldps_=true&compute-group=<OLAP 资源组名称> 参数,并在 URL 参数前后添加半角双引号。示例如下:
./lindorm-cli -url "jdbc:lindorm:table:url=http://ld-bp12pt80qr38p****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060?_use_ldps_=true&compute-group=olapcg1" -username <用户名> -password <密码>
连接成功后,执行查询语句即可自动使用指定的 OLAP 资源组,具体查询操作可参考数据访问说明。查询语法格式如下:
SELECT * FROM <Catalog名称>.<目标数据库名>.<目标表名>;
其中 <Catalog名称> 为数据目录名称,通常为 lindorm_columnar。如果使用默认数据库 default,查询时需要为数据库名添加反引号。示例如下:
SELECT * FROM lindorm_columnar.`default`.test_table;
通过 JDBC 连接
通过 MySQL 协议连接宽表引擎时,通过 JDBC URL 的 connectionAttributes 参数指定 _use_ldps_:true 和 compute-group:<资源组名称>。假设 OLAP 资源组名称为 olapcg1,连接串示例如下:
jdbc:mysql://ld-bp17j28j2y7pm****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/?connectionAttributes=_use_ldps_:true,compute-group:olapcg1
关于 JDBC 应用开发的详细信息,参见通过 MySQL 协议连接和使用 MySQL 协议(推荐)。