这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

Database Designer 函数

Database Designer 函数通常按以下顺序执行以下操作:

  1. 创建设计

  2. 设置设计属性

  3. 填充设计

  4. 创建设计和部署脚本

  5. 获取设计数据

  6. 清理

有关详细信息,请参阅 以编程方式运行 Database Designer 的工作流程。有关所需权限的信息,请参阅 运行 Database Designer 函数的权限

DESIGNER_CREATE_DESIGN 指示 Database Designer 创建设计。

设置设计属性

以下函数可让您指定设计属性:

填充设计

以下函数可用来向 Database Designer 设计中添加表和查询:

创建设计和部署脚本

以下函数将填充 Database Designer 工作区,并创建设计和部署脚本。您还可以分析统计信息,自动部署设计,以及在部署之后删除工作区:

重置设计

DESIGNER_RESET_DESIGN 会丢弃上一次 Database Designer 构建或部署的指定设计的所有运行特定信息,但会保留其配置。

获取设计数据

下列函数将显示有关 Database Designer 所创建的投影和脚本的信息:

清理

以下函数将取消任何正在运行的 Database Designer 操作或者删除 Database Designer 设计及其所有内容:

1 - DESIGNER_ADD_DESIGN_QUERIES

读取并评估某个输入文件中的查询,并将其接受的查询添加到指定设计中。所有接受的查询均分配了权重 1。

需要满足以下要求:

  • 所有查询的表都必须预先添加到包含 DESIGNER_ADD_DESIGN_TABLES 的设计中。

  • 如果设计类型为增量类型,Database Designer 将仅读取输入文件中的前 100 个查询,并忽略该数量以外的所有查询。

所有接受的查询都必须添加到系统表 DESIGN_QUERIES 中。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_ADD_DESIGN_QUERIES ( 'design‑name', 'queries‑file' [, return‑results] )

参数

design‑name
目标设计的名称。
queries‑file
包含要评估的查询的文件的绝对路径和名称,位于连接会话的节点的本地文件系统上,或 Vertica 支持的其他文件系统或对象存储上。
return‑results
布尔值,选择性地指定是否将添加操作的结果返回到标准输出。如果设置为 true,Database Designer 将返回以下结果:
  • 已接受的查询数

  • 引用非设计表的查询数

  • 不受支持的查询数

  • 非法查询数

特权

非超级用户:设计创作者 具有执行 input‑file 中的查询所需的所有权限。

在以下情况下 Database Designer 会返回错误:

  • 查询包含非法语法。

  • 查询参考:

    • 仅限外部或系统表

    • 本地临时表或其他非设计表

  • DELETE 或 UPDATE 包含一个或多个子查询。

  • INSERT 查询不包含 SELECT 子句的。

  • Database Designer 无法优化查询。

示例

以下示例将来自 vmart_queries.sql 的查询添加到 VMART_DESIGN 设计中。该文件包含九个查询。该语句包含第三个实参 true,因此 Database Designer 将返回添加操作的结果:

=> SELECT DESIGNER_ADD_DESIGN_QUERIES ('VMART_DESIGN', '/tmp/examples/vmart_queries.sql', 'true');
...
 DESIGNER_ADD_DESIGN_QUERIES
----------------------------------------------------
 Number of accepted queries                      =9
 Number of queries referencing non-design tables =0
 Number of unsupported queries                   =0
 Number of illegal queries                       =0
(1 row)

另请参阅

通过编程方式运行 Database Designer

2 - DESIGNER_ADD_DESIGN_QUERIES_FROM_RESULTS

执行指定的查询并计算以下列中的结果:

  • QUERY_TEXT (必需):潜在设计查询的文本。

  • QUERY_WEIGHT (可选):分配给每个查询的权重,表示其相对于其他查询的重要性,为大于 0 且小于等于 1 的实数。Database Designer 在创建设计时使用此设置来确定查询的优先级。如果 DESIGNER_ADD_DESIGN_QUERIES_FROM_RESULTS 返回任何忽略此值的结果,Database Designer 会将其权重设置为 1。

评估 QUERY_TEXT 中的查询之后,DESIGNER_ADD_DESIGN_QUERIES_FROM_RESULTS 会将所有接受的查询添加到设计中。可以在设计中添加无数查询。

将查询添加到设计中之前,必须使用 DESIGNER_ADD_DESIGN_TABLES 添加查询表。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_ADD_DESIGN_QUERIES_FROM_RESULTS ( 'design‑name', 'query' )

参数

design‑name
目标设计的名称。
query
查询结果包含 QUERY_TEXTQUERY_WEIGHT 列(可选)的有效 SQL 查询。

特权

非超级用户:设计创作者 具有执行指定查询以及此函数返回的所有查询所需的所有权限

在以下情况下 Database Designer 会返回错误:

  • 查询包含非法语法。

  • 查询参考:

    • 仅限外部或系统表

    • 本地临时表或其他非设计表

  • DELETE 或 UPDATE 包含一个或多个子查询。

  • INSERT 查询不包含 SELECT 子句的。

  • Database Designer 无法优化查询。

示例

以下示例将查询系统表 QUERY_REQUESTS 以获取所有运行时间较长(大于 100 万微秒)的查询,并将其添加到 VMART_DESIGN 设计中。该查询不返回有关查询权重的信息,因此为所有查询分配了权重 1:

=> SELECT DESIGNER_ADD_DESIGN_QUERIES_FROM_RESULTS ('VMART_DESIGN',
   'SELECT request as query_text FROM query_requests where request_duration_ms > 1000000 AND request_type =
   ''QUERY'';');

另请参阅

通过编程方式运行 Database Designer

3 - DESIGNER_ADD_DESIGN_QUERY

读取和解析指定的查询,如果已接受,将其添加到设计。将查询添加到设计中之前,必须使用 DESIGNER_ADD_DESIGN_TABLES 添加查询表。

所有接受的查询均添加到系统表 DESIGN_QUERIES 中。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_ADD_DESIGN_QUERY ( 'design‑name', 'design‑query' [, query‑weight] )

参数

design‑name
目标设计的名称。
design‑query
可执行的 SQL 查询。
query‑weight
(可选)为每个查询分配一个权重,表明其相对于其他查询的重要性,为大于 0 且小于等于 1 的实数。Database Designer 使用此设置来确定设计中查询的优先级。

如果忽略此参数,Database Designer 将分配权重 1。

特权

非超级用户:设计创作者 具有执行指定查询所需的所有权限

在以下情况下 Database Designer 会返回错误:

  • 查询包含非法语法。

  • 查询参考:

    • 仅限外部或系统表

    • 本地临时表或其他非设计表

  • DELETE 或 UPDATE 包含一个或多个子查询。

  • INSERT 查询不包含 SELECT 子句的。

  • Database Designer 无法优化查询。

示例

以下示例将指定的查询添加到 VMART_DESIGN 设计中,并为该查询分配 0.5 的权重:

=> SELECT DESIGNER_ADD_DESIGN_QUERY (
   'VMART_DESIGN',
   'SELECT customer_name, customer_type FROM customer_dimension ORDER BY customer_name ASC;', 0.5
   );

另请参阅

通过编程方式运行 Database Designer

4 - DESIGNER_ADD_DESIGN_TABLES

将指定表添加到设计中。将设计查询添加到设计中之前,必须先运行 DESIGNER_ADD_DESIGN_TABLES。如果未向设计中添加表,Vertica 将不接受设计查询。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_ADD_DESIGN_TABLES ( 'design‑name', '[ table‑spec[,...] ]' [, 'analyze‑statistics'] )

参数

design‑name
Database Designer 设计的名称。
table‑spec[,...]
一个或多个逗号分隔的实参,用于指定要添加到设计中的表,其中每个 table‑spec 实参可以按如下方式指定表:
  • [schema.]table
    table 添加到设计中。

  • schema.*
    添加 schema 中的所有表。

如果设置为空字符串,Vertica 会添加用户有权访问的数据库中的所有表。

analyze‑statistics
布尔值,选择性地指定在将指定的表添加到设计后是否运行 ANALYZE_STATISTICS,默认设置为 false

准确的统计信息可帮助 Database Designer 优化压缩和查询性能。更新统计信息需要花费时间和资源。

特权

非超级用户:设计创作者 具有设计表架构的 USAGE 权限,且是设计表的所有者

示例

以下示例将架构 online_salesstore 中的所有表添加到设计 VMART_DESIGN 中,并分析这些表的统计信息:

=> SELECT DESIGNER_ADD_DESIGN_TABLES('VMART_DESIGN', 'online_sales.*, store.*','true');
 DESIGNER_ADD_DESIGN_TABLES
----------------------------
                          7
(1 row)

另请参阅

通过编程方式运行 Database Designer

5 - DESIGNER_CANCEL_POPULATE_DESIGN

如果指定设计当前正在运行,取消对指定设计的填充和部署操作。取消部署时,Database Designer 将取消投影刷新操作。不会回退已部署或已刷新的投影。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_CANCEL_POPULATE_DESIGN ( 'design‑name' )

参数

design‑name
要取消的设计操作的名称。

特权

非超级用户:设计创作者

示例

以下示例取消了 VMART_DESIGN 当前正在运行的设计,然后删除该设计:

=> SELECT DESIGNER_CANCEL_POPULATE_DESIGN ('VMART_DESIGN');
=> SELECT DESIGNER_DROP_DESIGN ('VMART_DESIGN', 'true');

另请参阅

通过编程方式运行 Database Designer

6 - DESIGNER_CREATE_DESIGN

使用指定名称创建设计。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_CREATE_DESIGN ( 'design‑name' )

参数

design‑name
要创建的设计名称,只能包含字母数字和下划线 (_) 字符。

两个用户不能同时拥有名称相同的设计。

特权

  • 超级用户

  • design-name 的存储位置具有 WRITE 权限的 DBDUSER。

Database Designer 系统视图

如果以前的设计中不存在以下任何 V_MONITOR 表,则 DESIGNER_CREATE_DESIGN 会创建它们:

示例

以下示例创建了设计 VMART_DESIGN

=> SELECT DESIGNER_CREATE_DESIGN('VMART_DESIGN');
 DESIGNER_CREATE_DESIGN
------------------------
                      0
(1 row)

另请参阅

通过编程方式运行 Database Designer

7 - DESIGNER_DESIGN_PROJECTION_ENCODINGS

在指定投影中分析编码,创建脚本以实施编码建议并选择性地部署建议。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_DESIGN_PROJECTION_ENCODINGS ( '[ proj‑spec[,... ] ]', '[destination]' [, 'deploy'] [, 'reanalyze-encodings'] )

参数

proj‑spec[,...]
要添加到设计中的一个或多个逗号分隔投影。可以通过以下方式之一指定每个投影:
  • [[schema.]table.]projection
    指定分析 projection

  • schema.*
    指定分析命名架构中的所有投影。

  • [schema.]table
    指定分析命名表的所有投影。

如果设置为空字符串,Vertica 会分析数据库中用户有权访问的所有投影。

例如,以下语句指定分析架构 private 中的所有投影,并将结果发送到文件 encodings.sql

=> SELECT DESIGNER_DESIGN_PROJECTION_ENCODINGS ('mydb.private.*','encodings.sql');
destination
指定发送输出的位置,为以下之一:
  • 空字符串 ('') 将脚本写入标准输出。

  • SQL 输出文件的路径名。如果指定一个不存在的文件,函数会创建一个相应的文件。如果您仅指定一个文件名,Vertica 会在编录目录中创建它。如果文件已经存在,函数将静默覆盖其内容。

deploy
BOOLEAN 值,指定是否部署编码更改。

默认值:false

reanalyze‑encodings
BOOLEAN 值,指定 DESIGNER_DESIGN_PROJECTION_ENCODINGS 是否分析所有列都已编码的投影中的编码:
  • false:如果所有列都已编码,则不分析任何列并且不生成任何建议。

  • true:忽略现有编码并生成建议。

默认值:false

特权

具有以下权限的超级用户或 DBDUSER:

  • 要分析的所有投影的 OWNER

  • 指定投影架构上的 USAGE 权限

示例

以下示例要求 Database Designer 分析表 online_sales.call_center_dimension 的编码:

  • 第二个参数 destination 设置为空字符串,因此脚本被发送到标准输出(如下截断所示)。

  • 最后两个参数 deployreanalyze-encodings 被忽略,因此 Database Designer 不会执行脚本或重新分析现有编码:

=> SELECT DESIGNER_DESIGN_PROJECTION_ENCODINGS ('online_sales.call_center_dimension','');

              DESIGNER_DESIGN_PROJECTION_ENCODINGS
----------------------------------------------------------------

CREATE PROJECTION call_center_dimension_DBD_1_seg_EncodingDesign /*+createtype(D)*/
(
 call_center_key ENCODING COMMONDELTA_COMP,
 cc_closed_date,
 cc_open_date,
 cc_name ENCODING ZSTD_HIGH_COMP,
 cc_class ENCODING ZSTD_HIGH_COMP,
 cc_employees,
 cc_hours ENCODING ZSTD_HIGH_COMP,
 cc_manager ENCODING ZSTD_HIGH_COMP,
 cc_address ENCODING ZSTD_HIGH_COMP,
 cc_city ENCODING ZSTD_COMP,
 cc_state ENCODING ZSTD_FAST_COMP,
 cc_region ENCODING ZSTD_HIGH_COMP
)
AS
 SELECT call_center_dimension.call_center_key,
        call_center_dimension.cc_closed_date,
        call_center_dimension.cc_open_date,
        call_center_dimension.cc_name,
        call_center_dimension.cc_class,
        call_center_dimension.cc_employees,
        call_center_dimension.cc_hours,
        call_center_dimension.cc_manager,
        call_center_dimension.cc_address,
        call_center_dimension.cc_city,
        call_center_dimension.cc_state,
        call_center_dimension.cc_region
 FROM online_sales.call_center_dimension
 ORDER BY call_center_dimension.call_center_key
SEGMENTED BY hash(call_center_dimension.call_center_key) ALL NODES KSAFE 1;

select refresh('online_sales.call_center_dimension');

select make_ahm_now();

DROP PROJECTION online_sales.call_center_dimension CASCADE;

ALTER PROJECTION online_sales.call_center_dimension_DBD_1_seg_EncodingDesign RENAME TO call_center_dimension;
(1 row)

另请参阅

通过编程方式运行 Database Designer

8 - DESIGNER_DROP_ALL_DESIGNS

移除所有与当前用户关联的 Database Designer 相关的架构。在一个或多个 Database Designer 会话完成执行后,使用此函数移除数据库对象。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_DROP_ALL_DESIGNS()

参数

无。

特权

非超级用户:设计创作者

示例

以下示例将移除所有架构以及和当前用户相关的内容。 DESIGNER_DROP_ALL_DESIGNS 返回已删除设计的数量:

=> SELECT DESIGNER_DROP_ALL_DESIGNS();
 DESIGNER_DROP_ALL_DESIGNS
---------------------------
                         2
(1 row)

另请参阅

9 - DESIGNER_DROP_DESIGN

移除与指定设计及其所有内容相关联的架构。在 Database Designer 设计或部署成功完成后使用 DESIGNER_DROP_DESIGN。您还必须使用它来删除一个设计,然后再以相同的名称创建另一个设计。

要删除您创建的所有设计,请使用 DESIGNER_DROP_ALL_DESIGNS

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_DROP_DESIGN ( 'design‑name' [, force‑drop ] )

参数

design‑name
要删除的设计的名称。
force‑drop
覆盖任何会阻止 Vertica 执行此函数的依赖项的 Boolean 值 - 例如,设计正在被使用或当前正在部署。如果忽略此参数,Vertica 会将其设置为 false

特权

非超级用户:设计创作者

示例

以下示例删除了 Database Designer 设计 VMART_DESIGN 及其所有内容:

=> SELECT DESIGNER_DROP_DESIGN ('VMART_DESIGN');

另请参阅

通过编程方式运行 Database Designer

10 - DESIGNER_OUTPUT_ALL_DESIGN_PROJECTIONS

在标准输出中显示定义设计投影的 DDL 语句。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_OUTPUT_ALL_DESIGN_PROJECTIONS ( 'design‑name' )

参数

design‑name
目标设计的名称。

特权

超级用户或 DBDUSER

示例

以下示例返回了 vmart_design 的设计投射 DDL 语句:

=> SELECT DESIGNER_OUTPUT_ALL_DESIGN_PROJECTIONS('vmart_design');
CREATE PROJECTION customer_dimension_DBD_1_rep_VMART_DESIGN /*+createtype(D)*/
(
 customer_key ENCODING DELTAVAL,
 customer_type ENCODING AUTO,
 customer_name ENCODING AUTO,
 customer_gender ENCODING REL,
 title ENCODING AUTO,
 household_id ENCODING DELTAVAL,
 customer_address ENCODING AUTO,
 customer_city ENCODING AUTO,
 customer_state ENCODING AUTO,
 customer_region ENCODING AUTO,
 marital_status ENCODING AUTO,
 customer_age ENCODING DELTAVAL,
 number_of_children ENCODING BLOCKDICT_COMP,
 annual_income ENCODING DELTARANGE_COMP,
 occupation ENCODING AUTO,
 largest_bill_amount ENCODING DELTAVAL,
 store_membership_card ENCODING BLOCKDICT_COMP,
 customer_since ENCODING DELTAVAL,
 deal_stage ENCODING AUTO,
 deal_size ENCODING DELTARANGE_COMP,
 last_deal_update ENCODING DELTARANGE_COMP
)
AS
 SELECT customer_key,
        customer_type,
        customer_name,
        customer_gender,
        title,
        household_id,
        customer_address,
        customer_city,
        customer_state,
        customer_region,
        marital_status,
        customer_age,
        number_of_children,
        annual_income,
        occupation,
        largest_bill_amount,
        store_membership_card,
        customer_since,
        deal_stage,
        deal_size,
        last_deal_update
 FROM public.customer_dimension
 ORDER BY customer_gender,
          annual_income
UNSEGMENTED ALL NODES;
CREATE PROJECTION product_dimension_DBD_2_rep_VMART_DESIGN /*+createtype(D)*/
(
...

另请参阅

DESIGNER_OUTPUT_DEPLOYMENT_SCRIPT

11 - DESIGNER_OUTPUT_DEPLOYMENT_SCRIPT

在标准输出中显示指定设计的部署脚本。如果设计已部署,Vertica 将忽略此函数。

要在设计脚本中仅输出 CREATE PROJECTION 命令,请使用 DESIGNER_OUTPUT_ALL_DESIGN_PROJECTIONS

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_OUTPUT_DEPLOYMENT_SCRIPT ( 'design‑name' )

参数

design‑name
目标设计的名称。

特权

非超级用户:设计创作者

示例

以下示例显示了 VMART_DESIGN 的部署脚本:

=> SELECT DESIGNER_OUTPUT_DEPLOYMENT_SCRIPT('VMART_DESIGN');
CREATE PROJECTION customer_dimension_DBD_1_rep_VMART_DESIGN /*+createtype(D)*/
...
CREATE PROJECTION product_dimension_DBD_2_rep_VMART_DESIGN /*+createtype(D)*/
...
select refresh('public.customer_dimension,
                public.product_dimension,
                public.promotion.dimension,
                public.date_dimension');
select make_ahm_now();
DROP PROJECTION public.customer_dimension_super CASCADE;
DROP PROJECTION public.product_dimension_super CASCADE;
...

另请参阅

DESIGNER_OUTPUT_ALL_DESIGN_PROJECTIONS

12 - DESIGNER_RESET_DESIGN

丢弃上一次 Database Designer 构建或部署的指定设计的所有运行特定信息,但会保留其配置。您可以根据需要对设计进行更改,例如,在重新运行设计之前更改参数或添加更多表和/或查询。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_RESET_DESIGN ( 'design‑name' )

参数

design‑name
要重置的设计名称。

特权

非超级用户:设计创作者

示例

以下示例重置了 Database Designer 设计 VMART_DESIGN:

=> SELECT DESIGNER_RESET_DESIGN ('VMART_DESIGN');

13 - DESIGNER_RUN_POPULATE_DESIGN_AND_DEPLOY

填充设计并创建设计和部署脚本。DESIGNER_RUN_POPULATE_DESIGN_AND_DEPLOY 还可以分析统计信息,部署设计,以及在部署之后删除工作空间。

此函数输出的文件具有 666 或 rw-rw-rw- 权限,允许节点上的任何 Linux 用户对其进行读取或写入。强烈建议您将文件保存在安全的目录中。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法


DESIGNER_RUN_POPULATE_DESIGN_AND_DEPLOY (
    'design‑name',
    'output‑design‑file',
    'output‑deployment‑file'
    [ , 'analyze‑statistics']
    [ , 'deploy']
    [ , 'drop‑design‑workspace']
    [ , 'continue‑after‑error']
    )

参数

design‑name
要填充和部署的设计名称。
output‑design‑filename
包含创建设计投影的 DDL 语句的文件的绝对路径和名称,位于连接会话的节点的本地文件系统上,或 Vertica 支持的其他文件系统或对象存储上。
output‑deployment‑filename
包含部署脚本的文件的绝对路径和名称,位于连接会话的节点的本地文件系统上,或 Vertica 支持的其他文件系统或对象存储上。
analyze‑statistics
指定在填充设计之前是否收集或刷新表格统计信息。如果设置为 true,Vertica 会调用 ANALYZE_STATISTICS。准确的统计信息可帮助 Database Designer 优化压缩和查询性能。然而,更新统计信息需要时间和资源。

默认值:false

deploy
指定是否使用该函数创建的部署脚本部署 Database Designer 设计。

默认值: true

drop‑design‑workspace
指定在部署设计后是否删除设计工作空间。

默认值: true

continue‑after‑error
指定出现错误后,DESIGNER_RUN_POPULATE_DESIGN_AND_DEPLOY 是否继续运行。默认情况下,错误会导致该函数终止。

默认值:false

特权

非超级用户:设计创作者 对设计和部署脚本的存储位置具有 WRITE 权限

要求

调用此函数之前,您必须:

  • 创建设计或带表格的逻辑架构。

  • 将表与设计相关联。

  • 加载设计查询。

  • 设置设计属性(K-安全级别、模式和策略)。

示例

以下示例为 VMART_DESIGN 创建投射并部署该设计,同时分析有关设计表的统计信息。

=> SELECT DESIGNER_RUN_POPULATE_DESIGN_AND_DEPLOY (
   'VMART_DESIGN',
   '/tmp/examples/vmart_design_files/design_projections.sql',
   '/tmp/examples/vmart_design_files/design_deploy.sql',
   'true',
   'true',
   'false',
   'false'
   );

另请参阅

通过编程方式运行 Database Designer

14 - DESIGNER_SET_DESIGN_KSAFETY

为全面设计设置 K-safety 并将 K-safety 值存储在 DESIGNS 表中。对于增量设计,Database Designer 会忽略此函数。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_SET_DESIGN_KSAFETY ( 'design‑name' [, k‑level ] )

参数

design‑name
要为其设置 K-safety 值的设计名称,VARCHAR 类型。
k‑level
介于 0 和 2 之间的整数,用于指定目标设计的 K-safety 级别。此值必须与数据库群集中的节点数兼容:
  • k‑level = 0:≥ 1 个节点

  • k‑level = 1:≥ 3 个节点

  • k‑level = 2:≥ 5 个节点

如果忽略此参数,Vertica 会根据节点数将此设计的 K-safety 设置为 0 或 1:如果群集包含 ≥ 3 个节点,则为 1,否则为 0。

如果您是 DBADMIN 用户并且 k-level 与系统 K-safety 不同,Vertica 会按如下方式更改系统 K-safety:

  • 如果 k-level 小于系统 K-safety,Vertica 会在部署设计后将系统 K-safety 更改为较低级别。

  • 如果 k-level 大于系统 K-safety 并且对数据库群集有效,Vertica 会为此设计中的表创建所需数量的伙伴实例投影。如果设计适用于所有数据库表,或者数据库中的所有表都具有所需数量的伙伴实例投影,则 Database Designer 将系统 K-safety 更改为 k-level

    如果设计排除了一些数据库表并且它们的伙伴实例投影数量小于 k-level,Database Designer 将系统 K-safety 保持不变。它会返回警告并指出哪些表需要新的伙伴实例投影以调整系统 K-safety。

如果您是 DBDUSER,Vertica 会忽略此参数。

特权

非超级用户:设计创作者

示例

以下示例将 VMART_DESIGN 设计的 K-safety 设置为 1:

=> SELECT DESIGNER_SET_DESIGN_KSAFETY('VMART_DESIGN', 1);

另请参阅

通过编程方式运行 Database Designer

15 - DESIGNER_SET_DESIGN_TYPE

指定 Database Designer 是创建全面设计还是增量设计。 DESIGNER_SET_DESIGN_TYPE 将设计模式存储在 DESIGNS 表中。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_SET_DESIGN_TYPE ( 'design‑name', 'mode' )

参数

design‑name
目标设计的名称。
mode
Database Designer 在设计数据库时应使用的模式的名称,为以下之一:
  • COMPREHENSIVE:为指定架构中的所有表创建初始或替换设计。您通常为新数据库创建全面设计。

  • INCREMENTAL:使用针对新查询或修改后的查询进行优化的附加投影来修改现有设计。

有关详细信息,请参阅设计类型

特权

非超级用户:设计创作者

示例

以下示例显示了 VMART_DESIGN 设计的两种设计模式选项:

=> SELECT DESIGNER_SET_DESIGN_TYPE(
    'VMART_DESIGN',
    'COMPREHENSIVE');
DESIGNER_SET_DESIGN_TYPE
--------------------------
                        0
(1 row)
=> SELECT DESIGNER_SET_DESIGN_TYPE(
    'VMART_DESIGN',
    'INCREMENTAL');
 DESIGNER_SET_DESIGN_TYPE
--------------------------
                        0
(1 row)

另请参阅

通过编程方式运行 Database Designer

16 - DESIGNER_SET_OPTIMIZATION_OBJECTIVE

仅对全面数据库设计有效,用于指定 Database Designer 使用的优化目标。对于增量设计,Database Designer 会忽略此函数。

DESIGNER_SET_OPTIMIZATION_OBJECTIVE 将优化目标存储在 DESIGNS 表中。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_SET_OPTIMIZATION_OBJECTIVE ( 'design‑name', 'policy' )

参数

design‑name
目标设计的名称。
policy
指定设计的优化策略,为以下之一:
  • QUERY:优化查询性能。此操作会导致数据库存储占用空间增大,因为可能会创建更多投影。

  • LOAD:优化加载性能,以便最大限度缩小数据库大小。此操作会导致查询性能下降。

  • BALANCED:平衡查询性能和数据库大小的设计。

特权

非超级用户:设计创作者

示例

以下示例将 VMART_DESIGN 设计的优化目标选项设置为 QUERY


=> SELECT DESIGNER_SET_OPTIMIZATION_OBJECTIVE(  'VMART_DESIGN', 'QUERY');
 DESIGNER_SET_OPTIMIZATION_OBJECTIVE
------------------------------------
                                  0
(1 row)

另请参阅

通过编程方式运行 Database Designer

17 - DESIGNER_SET_PROPOSE_UNSEGMENTED_PROJECTIONS

指定设计是否可以包含未分段的投影。Vertica 在单节点群集上忽略此函数,其中所有投影都必须不分段。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_SET_PROPOSE_UNSEGMENTED_PROJECTIONS ( 'design‑name', unsegmented )

参数

design‑name
目标设计的名称。
unsegmented
Boolean 值,指定 Database Designer 是否可以为此设计中的表建议未分段的投影。创建设计时,此设计的系统表 DESIGNS 中的 propose_unsegmented_projections 值设置为 true。如果 DESIGNER_SET_PROPOSE_UNSEGMENTED_PROJECTIONS 将此值设置为 false,则 Database Designer 仅建议分段的投影。

特权

非超级用户:设计创作者

示例

以下示例指定 Database Designer 只能为设计 VMART_DESIGN 中的表建议分段的投影:

=> SELECT DESIGNER_SET_PROPOSE_UNSEGMENTED_PROJECTIONS('VMART_DESIGN', false);

另请参阅

通过编程方式运行 Database Designer

18 - DESIGNER_SINGLE_RUN

评估在指定时间跨度内完成执行的所有查询,并返回可用于部署的设计。此设计包含建议用于优化评估查询的投影。除非您重定向输出,否则 DESIGNER_SINGLE_RUN 会将设计返回到 STDOUT。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_SINGLE_RUN ('interval')
interval
指定元函数调用之前的时间间隔。Database Designer 评估在指定时间间隔内运行完成的所有查询。

特权

超级用户或 DBUSER

示例

-----------------------------------------------------------------------
-- SSBM dataset test
-----------------------------------------------------------------------
-- create ssbm schema
\! $TARGET/bin/vsql -f 'sql/SSBM/SSBM_schema.sql' > /dev/null 2>&1
\! $TARGET/bin/vsql -f 'sql/SSBM/SSBM_constraints.sql' > /dev/null 2>&1
\! $TARGET/bin/vsql -f 'sql/SSBM/SSBM_funcdeps.sql' > /dev/null 2>&1

-- run these queries
\! $TARGET/bin/vsql -f 'sql/SSBM/SSBM_queries.sql' > /dev/null 2>&1
-- Run single API
select designer_single_run('1 minute');

...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                designer_single_run
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 CREATE PROJECTION public.part_DBD_1_rep_SingleDesign /*+createtype(D)*/
(
 p_partkey ENCODING AUTO,
 p_name ENCODING AUTO,
 p_mfgr ENCODING AUTO,
 p_category ENCODING AUTO,
 p_brand1 ENCODING AUTO,
 p_color ENCODING AUTO,
 p_type ENCODING AUTO,
 p_size ENCODING AUTO,
 p_container ENCODING AUTO
)
AS
 SELECT p_partkey,
        p_name,
        p_mfgr,
        p_category,
        p_brand1,
        p_color,
        p_type,
        p_size,
        p_container
 FROM public.part
 ORDER BY p_partkey
UNSEGMENTED ALL NODES;

CREATE PROJECTION public.supplier_DBD_2_rep_SingleDesign /*+createtype(D)*/
(
 s_suppkey ENCODING AUTO,
 s_name ENCODING AUTO,
 s_address ENCODING AUTO,
 s_city ENCODING AUTO,
 s_nation ENCODING AUTO,
 s_region ENCODING AUTO,
 s_phone ENCODING AUTO
)
AS
 SELECT s_suppkey,
        s_name,
        s_address,
        s_city,
        s_nation,
        s_region,
        s_phone
 FROM public.supplier
 ORDER BY s_suppkey
UNSEGMENTED ALL NODES;

CREATE PROJECTION public.customer_DBD_3_rep_SingleDesign /*+createtype(D)*/
(
 c_custkey ENCODING AUTO,
 c_name ENCODING AUTO,
 c_address ENCODING AUTO,
 c_city ENCODING AUTO,
 c_nation ENCODING AUTO,
 c_region ENCODING AUTO,
 c_phone ENCODING AUTO,
 c_mktsegment ENCODING AUTO
)
AS
 SELECT c_custkey,
        c_name,
        c_address,
        c_city,
        c_nation,
        c_region,
        c_phone,
        c_mktsegment
 FROM public.customer
 ORDER BY c_custkey
UNSEGMENTED ALL NODES;

CREATE PROJECTION public.dwdate_DBD_4_rep_SingleDesign /*+createtype(D)*/
(
 d_datekey ENCODING AUTO,
 d_date ENCODING AUTO,
 d_dayofweek ENCODING AUTO,
 d_month ENCODING AUTO,
 d_year ENCODING AUTO,
 d_yearmonthnum ENCODING AUTO,
 d_yearmonth ENCODING AUTO,
 d_daynuminweek ENCODING AUTO,
 d_daynuminmonth ENCODING AUTO,
 d_daynuminyear ENCODING AUTO,
 d_monthnuminyear ENCODING AUTO,
 d_weeknuminyear ENCODING AUTO,
 d_sellingseason ENCODING AUTO,
 d_lastdayinweekfl ENCODING AUTO,
 d_lastdayinmonthfl ENCODING AUTO,
 d_holidayfl ENCODING AUTO,
 d_weekdayfl ENCODING AUTO
)
AS
 SELECT d_datekey,
        d_date,
        d_dayofweek,
        d_month,
        d_year,
        d_yearmonthnum,
        d_yearmonth,
        d_daynuminweek,
        d_daynuminmonth,
        d_daynuminyear,
        d_monthnuminyear,
        d_weeknuminyear,
        d_sellingseason,
        d_lastdayinweekfl,
        d_lastdayinmonthfl,
        d_holidayfl,
        d_weekdayfl
 FROM public.dwdate
 ORDER BY d_datekey
UNSEGMENTED ALL NODES;

CREATE PROJECTION public.lineorder_DBD_5_rep_SingleDesign /*+createtype(D)*/
(
 lo_orderkey ENCODING AUTO,
 lo_linenumber ENCODING AUTO,
 lo_custkey ENCODING AUTO,
 lo_partkey ENCODING AUTO,
 lo_suppkey ENCODING AUTO,
 lo_orderdate ENCODING AUTO,
 lo_orderpriority ENCODING AUTO,
 lo_shippriority ENCODING AUTO,
 lo_quantity ENCODING AUTO,
 lo_extendedprice ENCODING AUTO,
 lo_ordertotalprice ENCODING AUTO,
 lo_discount ENCODING AUTO,
 lo_revenue ENCODING AUTO,
 lo_supplycost ENCODING AUTO,
 lo_tax ENCODING AUTO,
 lo_commitdate ENCODING AUTO,
 lo_shipmode ENCODING AUTO
)
AS
 SELECT lo_orderkey,
        lo_linenumber,
        lo_custkey,
        lo_partkey,
        lo_suppkey,
        lo_orderdate,
        lo_orderpriority,
        lo_shippriority,
        lo_quantity,
        lo_extendedprice,
        lo_ordertotalprice,
        lo_discount,
        lo_revenue,
        lo_supplycost,
        lo_tax,
        lo_commitdate,
        lo_shipmode
 FROM public.lineorder
 ORDER BY lo_suppkey
UNSEGMENTED ALL NODES;

(1 row)

19 - DESIGNER_WAIT_FOR_DESIGN

等待正在填充和部署设计的操作完成。Ctrl+C 会取消此操作并将控制权返回给用户。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DESIGNER_WAIT_FOR_DESIGN ( 'design‑name' )

参数

design‑name
运行设计的名称。

特权

拥有设计架构 USAGE 权限的超级用户或 DBDUSER

示例

以下示例要求等待当前正在运行的 VMART_DESIGN 设计完成:

=> SELECT DESIGNER_WAIT_FOR_DESIGN ('VMART_DESIGN');

另请参阅