华为云用户手册

  • 刷新连接数据 在“对象浏览器”窗格中,右键单击连接名称并选择“刷新”,或按”F5“刷新数据库,刷新整个连接。在刷新的过程中,整个连接将更新为服务器上的最新内容。 状态栏显示已完成操作的状态。 完成刷新数据库所需时间完全取决于数据库中存在的对象数量。因此,建议在大规模数据库中尽量在空闲时间段执行此操作。 如果刷新整个数据库或连接,search_path中模式下的所有子对象和用户已展开的模式会重新加载。 如果重新连接数据库,仅会加载search_path中保存的模式对象。先前展开的对象不会加载。 不能同时刷新数据库及其下的多个对象。
  • 图形化查看执行计划和开销 Visual Explain计划从扩展JSON格式中获取信息,以图形化方式显示SQL查询。该功能有助于优化查询以增强查询和服务器性能及分析数据库所用的查询路径,并找出最拥挤,开销最高和运行最慢的节点。 图形化执行计划展示了SQL语句所引用的表是如何被扫描的(普通顺序扫描和索引扫描)。 SQL语句的执行开销取决于其运行时长(可使用任意开销单位度量,但是通常以磁盘中每页的抓取数计算。) Costliest:“Self Cost”最高的计划节点。 Heaviest: 输出行数最大的计划节点被认为是最拥挤的计划节点。 Slowest:所需执行时间最长的计划节点。 按照以下步骤以图表形式查看所需SQL查询的计划和成本: 在“SQL终端”页签输入查询或使用现有查询,然后单击工具栏中的 。 显示“可视化计划分析”窗口。 如果在获取执行计划和开销的过程中丢失连接,请参见查看执行计划和开销获取关于重新连接选项的具体信息。 1 - “一般信息”:显示查询详情。 2 - “可视化解释计划”:以图形化方式显示所有节点,如开销最高、最拥挤的和最慢的计划节点。单击每个计划节点可查看节点详情。 3 - “属性 - 一般”:以毫秒为单位提供查询的执行时间。 4 - “属性 - 所有节点”:提供所有节点信息。 字段名 说明 Node Name 显示节点名称。 Analysis 显示各节点的分析信息。 RowsOutput 显示计划节点输出的行数。 RowsOutput Deviation (%) 显示预估的输出行数和计划节点实际的输出行数之间的偏差百分比。 Execution Time (ms) 显示查询在计划节点上的执行时间。 Contribution (%) 显示查询在计划节点上的执行时间占整个查询执行时间的百分比。 Self Cost 显示在计划节点上执行查询的“Total Cost”,即为所有子节点的总开销。 Total Cost 显示在计划节点上执行查询所消耗的总成本。 5 - “属性 - 执行计划”:显示所有节点上的执行信息。 列名 说明 节点名称 节点名称 实体名称 对象名称 开销 计划节点执行时间 行 计划节点输出行数 循环 每个节点执行的循环数 宽度 计划节点输出行的平均宽度估算值(以字节为单位) 实际行数 计划节点输出行数的估算值 实际时间 计划节点的实际执行时间 6 - “计划节点 - 一般”:显示各节点信息。 行名 描述 Output 显示计划节点返回的字段信息。 Analysis 显示开销最大、最慢和最拥挤的计划节点分析信息。 RowsOutput Deviation (%) 显示预估的输出行数和计划节点的实际输出行之间的偏差百分比。 Row Width (bytes) 显示预估的计划节点输出行的平均宽度(单位:字节)。 Plan Output Rows 显示计划节点输出的行数。 Actual Output Rows 显示预估的计划节点输出行数。 Actual Startup Time 计划节点生成第一条记录所耗费的执行时间。 Actual Total Time 显示计划节点的实际执行时间。 Actual Loops 显示该节点执行的迭代数。 Startup Cost 显示计划节点输出第一条记录所耗费的时间。 Total Cost 显示查询在计划节点上的执行时间。 Is Column Store 表示表的存储方式(列或行存储)。 Shared Hit Blocks 显示缓存命中的共享块数量。 Shared Read Blocks 显示从缓存读取的共享块数量。 Shared Dirtied Blocks 显示缓存中弄脏的共享块数量。 Shared Written Blocks 显示缓存写入的共享块数量。 Local Hit Blocks 显示缓存命中的局部块数量。 Local Read Blocks 显示从缓存读取的局部块数量。 Local Dirtied Blocks 显示缓存中弄脏的局部块数量。 Local Written Blocks 显示缓存写入的局部块数量。 Temp Read Blocks 显示从缓存读取的临时块数量。 Temp Written Blocks 显示缓存写入的临时块数量。 I/O Read Time (ms) 显示该节点执行任意I/O读操作的耗时。 I/O Write Time (ms) 显示该节点执行任意I/O写操作的耗时。 Node Type 显示计划节点的类型。 Parent Relationship 显示与父节点的关系。 Inner Node Name 子节点名称 Node/s 无需输入,将从属性中移除。 根据计划节点类型可以显示其他信息。举例如下: 计划节点 其他 Partitioned CS tore Scan 表名、表别名和模式名 Vector Sort 排序键 Vector Hash Aggregate 分组键 Vector Has Join Join类型和Hash条件 Vector Streaming 分布键和Spawn On 7 - “计划节点 - DN详情”:为每个节点提供详细的DN信息。只有在从DN收集数据时,“DN详情”才可用。 有关复制和搜索工具栏选项的说明,请参阅查看数据。 父主题: SQL终端管理
  • 导出所有查询结果 在执行导出操作过程中,以下操作无法启动: 在“SQL终端”页签,执行SQL查询。 执行 PL/SQL语句。 调试 PL/SQL语句。 导出所有查询结果。 选择“结果”页签。 单击 ,显示“导出结果集数据”窗口。 请参见导出表数据完成导出操作。 可在状态栏查看结果的导出状态。 Data Studio显示“数据导出成功”对话框。 单击“确定”。“消息”页签显示已完成操作的状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。请清理磁盘,重新建立连接并导出结果数据。 “消息”页签显示“执行时间”、“导出的总行数”和CSV文件的保存路径。
  • 导出当前页的查询结果 如要导出查询结果,建议导出所有查询结果,而非当前页的查询结果。“导出当前页到CSV”功能已弃用。 执行以下步骤导出当前页查询结果。 选择“结果”页签。 单击图标,导出当前页的查询结果。 显示“Data Studio安全免责声明”对话框。 选择“确定”。 选择保存当前页的路径。 可在状态栏查询导出页的状态。 单击“保存”。显示“数据导出成功”对话框。 单击“确定”。Data Studio在“消息”选项卡显示操作状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。清理磁盘,重新建立连接并导出结果数据。
  • SQL历史记录 历史执行SQL脚本未加密。 “历史执行SQL”列表不显示包含如下关键字的敏感查询: Alter Role Alter User Create Role Create User Identified by Password 部分查询语法示例列举如下: ALTER USER name [ WITH ] option [ ... ]] CREATE USER name [ [ WITH ] option [ ... ] ] CREATE ROLE name [ [ WITH ] option [ ... ] ] ALTER ROLE name [ [ WITH ] option [ ... ] ]
  • 管理SQL终端连接 在Data Studio中,用户查看执行计划和成本、可视化计划解释以及在结果集中进行操作时,可重用SQL终端中的现有连接或新建连接。默认情况下,SQL终端会重用现有连接。当有多个查询在现有连接中排队等待执行时,请使用新连接,因为查询会按顺序执行且可能存在延迟。在处理临时表时请重用现有连接。有关编辑临时表的详情,请参阅编辑临时表。 要更改该设置,请执行以下步骤: 单击启用或禁用SQL终端中的连接重用功能。 有关重用连接和新建连接时的查询执行行为,请参阅FAQs。 用户仅能在已有连接中编辑临时表。 父主题: SQL终端管理
  • 添加约束 右键单击表下的“约束”,选择“添加约束”。 弹出“添加新约束”对话框,提示在新约束中输入信息。 约束类型有CHECK、PRIMARY KEY、UNIQUE三个选项,详细说明请参考定义表约束。 输入“约束名”和“选定的列”,单击“添加”。完成操作后,该约束添加到表中。 Data Studio在状态栏显示操作状态信息。 如果“约束名”字段中已经提供了约束名称,则状态栏将显示该约束名称,否则将不显示该约束名。
  • 显示执行进度条 查询在“SQL终端”窗口执行时,窗口会呈现进度条动态显示运行时间。 查询执行完成后,时间条消失。 时间条旁显示完成查询所用总时间。 如果您想取消查询,可在时间条旁单击“取消”。 如下图所示: “取消”按钮已从工具栏中删除。 在PL/SQL编辑器中编译/调试对象时也会显示执行进度条。 进度条中显示的时间格式如下:w时x分y秒z毫秒 在SQL终端中执行批处理时,进度条会显示查询消耗的总时间。
  • 编辑临时表 用户可在Data Studio中编辑临时表。如果用户在建表时创建了连接,则断开该连接时,临时表会被自动删除。 在SQL终端编辑临时表时,请确保启用了连接重用功能。有关如何启用该功能,请参阅管理SQL终端连接。 执行以下步骤编辑临时表: 在临时表上执行查询。 “结果”页签会显示SQL查询的结果以及执行的查询语句。 “结果”页签中编辑临时表。可单击“添加”、“删除”、“保存修改”、“取消修改”编辑临时表。 父主题: 表管理
  • 导出视图DDL 可通过右键单击“导出DDL”导出该视图的定义。 在“对象浏览器”窗格中,右键单击所选视图,选择“导出DDL”。 用户需自定义导出路径。如果需要将数据压缩,勾选“.zip”选项。 “Data Studio安全免责声明”必须勾选“我同意”才可以单击“确定”。用户可关闭安全免责声明,关闭后导出DDL时将不会再出现,详情请参见表1。 单击“确定”,右下角的状态栏会显示操作进度。 “导出完成”对话框和状态栏显示已完成操作的状态。 要终止导出操作,双击状态栏,打开“进度视图”页签,单击。 如果视图名称包含Windows不支持的字符,则导出的文件名称将与视图名称不同。 数据库编码 文件编码 支持导出DDL UTF-8 UTF-8 是 GBK 是 LATIN1 是 GBK GBK 是 UTF-8 是 LATIN1 否 LATIN1 LATIN1 是 GBK 否 UTF-8 是
  • 查看执行计划和开销 执行计划显示如何对指代SQL语句的表格进行扫描,分为次序扫描和索引扫描。 SQL语句执行成本为预估的查询时间(查询的语句成本单位是随机的,通常情况下检查对象为磁盘页)。 查看SQL查询的计划和成本,可通过以下方式: 在“SQL终端”中输入查询或使用已有查询,单击工具栏的来查看解释计划。 若要查看使用了Analyze的解释计划,单击查询按钮,选择“包含ANALYZE结果”。然后再次单击查询。 “执行计划”默认在底部的新页签以树形图样式显示。显示支持树形样式和文本样式。 树形执行计划和Visual Explain中显示的数据可能会有所不同,因为二者执行的参数不同。 下表展示了使用和未使用Analyze解释计划时所选择的参数和显示的列: 表1 解释计划选项 解释计划类型 参数 列 未选择“包含ANALYZE结果”(默认值) Verbose、Costs Node type、startup cost、total cost、rows、width、additional Info 选择“包含ANALYZE结果” Analyze、Verbose、Costs、Buffers、Timing Node type、startup cost、total cost、rows、width、Actual startup time、Actual total time、Actual Rows、Actual loops、Additional Info Additional Info列包括谓词信息(过滤谓词和hash条件)、分布键、输出信息以及节点类型信息。 树形样式将节点划分为16个类型。在树形样式中,每个节点都将以相应类型的图标开头。下表列举了节点类别及相应图标。 表2 节点类别和图标 节点类别 图标 Aggregate Group Aggregate Function Hash Hash Join Nested Loop Nested Loop Join Modify Table Partition Iterator Row Adapter Seq Scan on Set Operator Sort Stream Union Unknown 将鼠标悬停在突出显示的单元格上,可以识别负载最重、开销最大、速度最慢的节点。只有树形样式支持单元格突出显示。 若选择了多个查询,则仅针对最后一个查询显示使用/未使用Analyze的解释计划。 每次执行一个执行计划,该计划都会在新页签中打开。 如果丢失连接但对象浏览器中依然保持数据库的连接,会弹出“连接错误”对话框,显示以下内容: “是”:重建连接,获取查询计划及开销。 “否”:断开对象浏览器中的数据库连接。 “执行计划”窗口中的工具栏菜单选项如下: 工具栏菜单 图标 描述 树形样式 此图标用于以树形样式查看解释计划。 文本样式 此图标用于以文本样式查看解释计划。 复制 此图标用于将所选内容从结果窗口复制到剪贴板,支持快捷键Ctrl+C。 保存 此图标用于以文本样式保存解释计划。 有关刷新、SQL预览和搜索栏的具体信息,请参见执行SQL查询。 刷新之后会重新执行Explain/Analyze查询并刷新当前页签显示的计划内容。 结果显示在“消息”页签中。 父主题: SQL终端管理
  • 定义分区 下表列出了各分区类型表支持的字段/选项: 表3 支持的字段/选项 字段/选项名 行分区 列分区 ORC分区 分区类型 按范围 按范围 按值 分区名 √ √ x 分区值 √ √ x 在“一般”页签中,如果“表存储方式”选择为“ROW”或“COLUMN”,则“分区类型”区域会显示“By Range”。如果“表存储方式”选择为“ORC”,则“分区类型”区域会显示“By Values”。 从“可用列”区域选择用于定义分区的列,单击“右向箭头”按钮,该列会移动到“分区列”区域。 如果“表存储方式”选择为“ROW”或“COLUMN”,则仅能选择一列用于分区。 如果“表存储方式”选择为“ORC”,则最多可选择四列用于分区。 最多可选择4列用于定义分区。 在“分区名称”中输入分区的名称。 单击“分区值”旁的“单击输入分区值”按钮,在“值”列中输入要对表进行分区的值,单击“确定”。 输入分区的所有信息后,单击“添加”。 支持对分区进行添加、删除、编辑、调整顺序等操作。 根据表中的要求更改分区顺序。要更改顺序,请选择所需的分区,然后单击“向上”或“向下”。 定义所有分区后,单击“下一步”。
  • 在“SQL终端”页签中加载多条SQL查询 单击“加载至SQL终端并关闭”按钮,可在“SQL终端”页签中加载所选查询,并关闭“历史执行SQL”对话框。 执行如下步骤在“SQL终端”页签中加载多条所选SQL查询: 选择多条所需查询。 单击。 这些查询会添加到“SQL终端”页签中光标所在位置。 如果作业出错时仍继续执行,则终端中的每条语句将作为定时任务依次运行。系统会在控制台上更新执行状态,在进度条中显示作业。当作业执行、进度条更新和控制台更新之间的时间差变得非常细微,则用户无法打开进度条去停止作业执行。此时,必须关闭SQL终端才能停止执行。
  • 创建用户/角色 多个用户可以使用同一数据库,为了方便管理,需要将用户进行分组。一个数据库角色代表一个或一组数据库用户。 在数据库中,用户和角色的概念类似。实际应用中,建议使用角色来进行权限管理而不是直接访问数据库。 用户:数据库用户的集合。这些用户与操作系统用户不同,可以为其他用户分配权限以访问数据库对象。 角色:根据用途的不同,可以将角色分为用户或用户组。角色是集群级别的定义,适用于集群中的所有数据库。
  • 锁定SQL查询 如果不希望Data Studio从“历史执行SQL”列表中自动删除某些查询,可锁定这些查询。最多可锁定50条查询。锁定的查询会显示在列表顶部。在“SQL历史记录数”中设置的值不会影响锁定的查询。有关SQL历史记录数的更多信息,请参见表1。 “历史执行SQL”窗口关闭后重新打开时,锁定的查询会出现在列表顶部。 执行如下步骤锁定SQL查询: 选择所需SQL查询,单击。 “锁定状态”列显示查询的锁定状态。
  • 不同日志级别类型 Data Studio.log文件中所显示的不同类型的日志级别如下: TRACE:相比DEBUG级别,TRACE级别提供更为详细的信息。 DEBUG:DEBUG级别指粒状信息事件,对调试应用程序最为有用。 INFO:INFO级别指着重显示应用进程的消息。 WARN:WARN级别指潜在的有害情况。 ERROR:ERROR级别指错误事件。 FATAL:FATAL级别指事件造成应用终止。 ALL:ALL级别指启用所有日志级别。 OFF:OFF级别指禁用所有日志级别和ALL级别相反。 如果用户输入无效的日志级别值,日志级别会设置为WARN。 如果用户未指定日志级别,日志级别会设置为WARN。
  • 日志消息描述 日志消息描述如下图所示: Data Studio.log文件大小达到最大值10000 KB时,系统会自动创建一个文件并另存为Data Studio.log.1。Data Studio.log中的日志将存储在Data Studio.log.1文件中。当Data Studio.log文件再次达到最大值,系统继续自动创建一个文件并另存为Data Studio.log.2。最新日志持续写入Data Studio.log文件。以此类推,此过程将一直持续,直到Data Studio.log.5文件达到最大值,该循环重新开始。Data Studio将删除最早的日志文件,即Data Studio.log.1。例如,Data Studio.log.5重命名为Data Studio.log.4,Data Studio.log.4重命名为Data Studio.log.3,以此类推。 如需启用服务器日志文件的性能日志记录功能,需启用配置参数log_min_messages,且设置为data/postgresql.conf配置文件中的debug1,即log_min_messages = debug1。
  • 支持序列DDL Data Studio支持用户进行显示序列DDL和导出序列DDL操作,包括“显示DDL”,“导出DDL”,“导出DDL和数据”。 在“对象浏览器”窗格中,右键单击序列名,显示菜单选项。 选择“显示DDL”选项查看DDL语句。 选择“导出DDL”选项导出DDL语句。 选择“导出DDL和数据”选项导出DDL和select语句。 如下图所示: 只有序列所有者或系统管理员,或具有序列的select权限的用户,才能进行上述操作。
  • 数据校验流程 DataCheck流程如下: 下载DataCheck的工具包到Linux或Windows服务器并解压。 执行加密命令对源端/目标端数据库登录密码进行加密。 配置dbinfo.properties文件,包含源数据库和目标数据库的相关连接信息以及函数开关信息。 编辑check_input.xlsx文件,输入schema、源数据库表名和dws表名以及校验级别等参数。 执行DataCheck启动命令进行数据校验,校验结果保存在check_input_result.xlsx中。 图1 DataCheck流程图
  • 操作步骤 以gds_user用户登录安装GDS的数据服务器。 请根据启动GDS的方式,选择停止GDS的方式。 若用户使用“gds”命令启动GDS,请使用以下方式停止GDS。 执行如下命令,查询GDS进程号。 ps -ef|grep gds 示例:其中GDS进程号为128954。 ps -ef|grep gdsgds_user 128954 1 0 15:03 ? 00:00:00 gds -d /input_data/ -p 192.168.0.90:5000 -l /log/gds_log.txt -Dgds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds 使用“kill”命令,停止GDS。其中128954为上一步骤中查询出的GDS进程号。 kill -9 128954
  • 创建序列 在“对象浏览器”窗格,右键单击“序列”,然后选择“创建序列”。Data Studio弹出“创建序列”对话框。 设置相关参数以创建序列。 在“序列名称”字段输入序列名称。 勾选“区分大小写”,“序列名称”字段文本将区分大小写。例如,输入的序列名称为“Employee”,则序列名称将创建为“Employee”。 在“最小值”字段输入最小值。 在“增量”字段输入要递增的值。 在“最大值”字段输入最大值。 最大和最小值的取值范围应在-9223372036854775808到9223372036854775807之间。 在“初始值”字段输入序列的起始值。 在“缓存数值”字段输入缓存信息。缓存值表示存储在内存中用于快速访问的数字序列。 勾选“循环”,可在序列数达到最大或最小值时进行循环。 该模式名称自动填充到“模式”字段。 在“表”中选择对应表。 在“列”中选择对应列。 单击“完成”。 状态栏显示已完成操作的状态。 可在“SQL预览”页签自动查看输入数据的SQL查询。
  • 安装DataCheck工具 DataCheck是一款运行在Linux或Windows操作系统上的命令行工具,可免安装使用,下载软件包后,用户解压软件包即可使用。 Windows: 解压DataCheck-*.zip包。 得到DataCheck-*文件夹。 解压DataCheck-*时,可根据需要选择任意文件夹进行解压。 进入DataCheck-*目录。 找到并查看DataCheck目录中的文件。 解压出来的文件夹和文件说明如表1所示。 Linux操作系统: 从DataCheck-*.zip包中提取文件。 unzip DataCheck-*.zip 进入DataCheck目录。 cd DataCheck-* 查看DataCheck目录中的文件。 ls conf lib bin check_input.xlsx 表1 DataCheck目录 文件或文件夹 说明 DataCheck bin 存放校验工具启动脚本。 Windows版本:datacheck.bat Linux版本:datacheck.sh conf 配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。 lib 保存校验工具运行所需的相关jar包。 check_input.xlsx 1、待校验的表信息,包括Schema名、表名、列名等 2、记录用户的校验级别信息和校验规则。已支持3种级别校验,包括high、middle、low,默认为low。 logs 压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。 check_input_result.xlsx 压缩包中不包含该文件,校验工具执行后会在check_input.xlsx相同路径下生成校验结果文件。
  • 示例 该示例是从 GaussDB (DWS)数据源中读取数据,并写入到Print结果表中,其具体步骤参考如下: 在GaussDB(DWS)中创建相应的表,表名为dws_order,SQL语句参考如下: 1 2 3 4 5 6 7 8 910 create table public.dws_order(order_id VARCHAR,order_channel VARCHAR,order_time VARCHAR,pay_amount FLOAT8,real_pay FLOAT8,pay_time VARCHAR,user_id VARCHAR,user_name VARCHAR,area_id VARCHAR); 在GaussDB(DWS)中执行以下SQL语句,向dws_order表中插入数据: 1 2 3 4 5 6 7 8 9101112 insert into public.dws_order (order_id, order_channel, order_time, pay_amount, real_pay, pay_time, user_id, user_name, area_id) values ('202103241000000001', 'webShop', '2021-03-24 10:00:00', '100.00', '100.00', '2021-03-24 10:02:03', '0001', 'Alice', '330106'), ('202103251202020001', 'miniAppShop', '2021-03-25 12:02:02', '60.00', '60.00', '2021-03-25 12:03:00', '0002', 'Bob', '330110'); 执行Flink SQL: 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031 CREATE TABLE dwsSource ( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string) WITH ( 'connector' = 'dws', 'url' = 'jdbc:gaussdb://DWSIP:DWSPort/DWSdbName', 'tableName' = 'dws_order', 'username' = 'DWSUserName', 'password' = 'DWSPassword');CREATE TABLE printSink ( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string) WITH ( 'connector' = 'print');insert into printSink select * from dwsSource; 执行结果如下:
  • 语法格式 用DWS-Connector做源表时,DWS-Connector实现了SupportsLimitPushDown和SupportsFilterPushDown接口,支持将limit和where条件下推到数据库执行。 1 2 3 4 5 6 7 8 910111213 create table dwsSource ( attr_name attr_type (',' attr_name attr_type)* (','PRIMARY KEY (attr_name, ...) NOT ENFORCED) (',' watermark for rowtime_column_name as watermark-strategy_expression))with ( 'connector' = 'dws', 'url' = '', 'tableName' = '', 'username' = '', 'password' = '');
  • 参数说明 表1 数据库配置 参数 说明 默认值 connector flink框架区分connector参数,固定为dws。 - url 数据库连接地址。 - username 配置连接用户。 - password 配置密码。 - tableName 对应dws表。 - 表2 查询参数 参数 说明 默认值 fetchSize jdbc statement中fetchSize参数,用于控制查询数据库返回条数。 1000 enablePushDown 开启条件下推:开启后limit和where条件会下推到数据库执行。 true
  • SQL-Server配置 设置SQL-Server配置参数可在迁移SQL-Server数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-mysql.properties文件,在迁移SQL-Server时,必须将源库数据类型修改为SQL-Server,并根据实际需要设置表1中的参数。 表1 features-mysql.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 table.origin.database.type 源数据库类型 bigquery,doris,sqlserver,mysql,adb mysql table.origin.database.type=sqlserver table.orientation 默认数据存储方式 ROW,COLUMN ROW table.orientation=ROW table.type 默认的表类型 REPLICATION,HASH,ROUND-ROBIN HASH table.type=ROUND-ROBIN 父主题: 配置DSC
  • DataCheck基本功能 支持源端为DWS,MySQL,PostgreSQL数据库与目标端为DWS数据库的数据校验。 支持通用类型字段校验:数值、时间、字符类型。 支持校验级别设置:包括high、middle、low三种。 支持指定schema、表名、列名进行校验。 支持指定记录的校验范围,默认为校验所有记录。 校验方式涉及COUNT(*)、MAX、MIN、SUM、AVG以及抽样明细校验等方式。 输出校验结果和相关校验明细说明。
  • 参数说明 表1 数据库配置 参数 说明 默认值 connector flink框架区分Connector参数,固定为dws。 - url 数据库连接地址。 - username 配置连接用户。 - password 数据库用户密码。 - 表2 连接配置参数 参数 名称 类型 说明 默认值 connectionSize 读取线程池大小 int 用于执行操作的线程数量 = 数据库连接数量,同写入线程大小。 1 readBatchSize 最多一次将get请求合并提交的数量 int 当查询请求积压后,最大的批量查询数量。 128 readBatchQueueSize get请求缓冲池大小 int 查询请求最大积压容量。 256 readTimeoutMs get操作的超时时间(毫秒/ms) int 默认值0表示不超时,会在两处位置生效: get操作从用户开始执行到client准备提交到dws的等待时间。 get sql的执行超时,即statement query timeout。 0 readSyncThreadEnable 非异步查询时,是否开启线程池 boolean 开启后future.get()异步阻塞,关闭后主线程同步调用阻塞。 true lookupScanEnable 是否开启scan查询 boolean 关联条件在非全主键匹配下,是否开启scan查询。 若为false,则join关联条件必须全为主键,否则将抛异常。 false fetchSize / lookupScanFetchSize scan一次查询大小 int 非全主键匹配下,一次条件查询的返回数量限制(默认fetchSize生效,当fetchSize为0时,lookupScanFetchSize生效)。 1000 lookupScanTimeoutMs scan操作的超时时间(毫秒/ms) int 非全主键匹配下,一次条件查询的超时限制(ms)。 60000 lookupAsync 是否采用异步方式获取数据 boolean 查询方式设置为同步or异步。 true lookupCacheType 缓存策略 LookupCacheType 设置以下缓存策略(不区分大小写): None:无缓存LRU(默认值):缓存维表里的部分数据。源表的每条数据都会触发系统先在Cache中查找数据,如果未找到,则去物理维表中查找。 ALL:全量数据缓存,适合不常更新小表。 LookupCacheType.LRU lookupCacheMaxRows 缓存大小 long 当选择LRU缓存策略后,可以设置缓存大小。 1000 lookupCacheExpireAfterAccess 读取后开始计算的超时时间 Duration 当选择LRU缓存策略后,可以设置每次读取后,超时时间顺延长,默认不生效。 null lookupCacheExpireAfterWrite 写入后开始计算的超时时间 Duration 当选择LRU缓存策略后,可以设置每次写入后,超时时间固定,不论访问与否。 10s lookupCacheMissingKey 数据不存在后写入缓存 boolean 当选择LRU缓存策略后,维表数据不存在,同时将数据缓存。 false lookupCacheReloadStrategy 全量缓存重载策略 ReloadStrategy 当选择ALL缓存策略后,可以设置以下数据重载策略: PERIODIC:周期性数据重载。 TIMED:定时数据重载,以天为单位。 ReloadStrategy.PERIODIC lookupCachePeriodicReloadInterval 数据重载时间间隔 Duration 当选择PERIOD重载策略时,可以设置全量缓存重载间隔。 1h lookupCachePeriodicReloadMode 数据重载模式 ScheduleMode 当选择PERIOD重载策略时,可以设置以下重载模式(不区分大小写): FIXED_DELAY:从上一个加载结束计算重新加载间隔。 FIXED_RATE:从上一个加载开始计算重新加载间隔。 ScheduleMode.FIXED_DELAY lookupCacheTimedReloadTime 数据重载定时调度时间 string 当选择TIMED重载策略时,可以设置全量缓存重载时间,以ISO-8601格式表示。例如:“10:15”。 00:00 lookupCacheTimedReloadIntervalDays 数据重载定时周期调度间隔天数 int 当选择TIMED重载策略时,可以设置全量缓存周期调度间隔天数。 1
  • 示例 从Kafka源表中读取数据,将GaussDB(DWS)表作为维表,并将二者生成的宽表信息写入print结果表中,其具体步骤如下: 连接GaussDB(DWS)数据库实例,在GaussDB(DWS)中创建相应的表,作为维表,表名为area_info,SQL语句如下: 123456789 create table public.area_info( area_id VARCHAR, area_province_name VARCHAR, area_city_name VARCHAR, area_county_name VARCHAR, area_street_name VARCHAR, region_name VARCHAR, PRIMARY KEY(area_id)); 连接GaussDB(DWS)数据库实例,向GaussDB(DWS)维表area_info中插入测试数据,其语句如下: 1234567 insert into area_info (area_id, area_province_name, area_city_name, area_county_name, area_street_name, region_name) values ('330102', 'a1', 'b1', 'c1', 'd1', 'e1'), ('330106', 'a1', 'b1', 'c2', 'd2', 'e1'), ('330108', 'a1', 'b1', 'c3', 'd3', 'e1'), ('330110', 'a1', 'b1', 'c4', 'd4', 'e1'); flink sql创建源表、结果表、维表并执行SQL: CREATE TABLE orders ( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string, proctime as Proctime()) WITH ( 'connector' = 'kafka', 'topic' = 'order_test', 'properties.bootstrap.servers' = 'KafkaAddress1:KafkaPort,KafkaAddress2:KafkaPort', 'properties.group.id' = 'dws-order', 'scan.startup.mode' = 'latest-offset', 'format' = 'json');--创建地址维表create table area_info ( area_id string, area_province_name string, area_city_name string, area_county_name string, area_street_name string, region_name string ) WITH ( 'connector' = 'dws', 'url' = 'jdbc:gaussdb://DwsAddress:DwsPort/DwsDbName', 'tableName' = 'area_info', 'username' = 'DwsUserName', 'password' = 'DwsPassword', 'lookupCacheMaxRows' = '10000', 'lookupCacheExpireAfterAccess' = '2h');--根据地址维表生成详细的包含地址的订单信息宽表create table order_detail( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string, area_province_name string, area_city_name string, area_county_name string, area_street_name string, region_name string) with ( 'connector' = 'print' );insert into order_detail select orders.order_id, orders.order_channel, orders.order_time, orders.pay_amount, orders.real_pay, orders.pay_time, orders.user_id, orders.user_name, area.area_id, area.area_province_name, area.area_city_name, area.area_county_name, area.area_street_name, area.region_name from orders left join area_info for system_time as of orders.proctime as area on orders.area_id = area.area_id; 在Kafka中写入数据: 123 {"order_id":"202103241606060001", "order_channel":"appShop", "order_time":"2021-03-24 16:06:06", "pay_amount":"200.00", "real_pay":"180.00", "pay_time":"2021-03-24 16:10:06", "user_id":"0001", "user_name":"Alice", "area_id":"330106"}{"order_id":"202103251202020001", "order_channel":"miniAppShop", "order_time":"2021-03-25 12:02:02", "pay_amount":"60.00", "real_pay":"60.00", "pay_time":"2021-03-25 12:03:00", "user_id":"0002", "user_name":"Bob", "area_id":"330110"}{"order_id":"202103251505050001", "order_channel":"qqShop", "order_time":"2021-03-25 15:05:05", "pay_amount":"500.00", "real_pay":"400.00", "pay_time":"2021-03-25 15:10:00", "user_id":"0003", "user_name":"Cindy", "area_id":"330108"} 结果参考如下:
  • 语法格式 1 2 3 4 5 6 7 8 91011 create table dwsSource ( attr_name attr_type (',' attr_name attr_type)* )with ( 'connector' = 'dws', 'url' = '', 'tableName' = '', 'username' = '', 'password' = '');
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全