目录
- CDC_API/create_mvlog 指定要建更改日志的数据库和表名
- CDC_API/get_mvlog 获取给定表给定模式的物化视图日志名称
- SQL_API/add_expr 给物化视图增加一个列或者索引
- SQL_API/add_table 将一个表添加到物化视图中
- SQL_API/create 为一个新的物化视图创建一个物化视图id
- SQL_API/disable 禁用物化视图
- SQL_API/enable 启用物化视图
- SQL_API/remove_expr 某物化视图移除某个列或索引
- SQL_API/remove_table 删除某物化视图
- SQL_API/set_definition 物化视图刷新语句
- UTIL_API/get_id
- UTIL_API/get_sql
- UTIL_API/refresh/refresh___all
- UTIL_API/rename
1.create_mvlog [ Functions ]
Name
flexviews.create_mvlog : 指定要建更改日志的数据库和表名。
Synopsis
flexviews.createmv_log(databasename,tablename)
Function
该函数在某数据库某表上创建一个表更改日志(也就是物化视图日志)。对表进行的任何数据更改都将被FLexCDC以二进制形式记录在表更改日志中。
如果使用FlexCDC的自动更改模式,则不需要使用此函数。当使用此模式时,当检测到表的更改并没有创建日志时,更改日志会自动生成。
如果使用临时表,或者只有少量的表需要记录日志,那么可以考虑不使用自动更改模式,而仅是对某些表进行记录即可。使用该函数会将表添加到要记录的表的列表中。一旦添加了一个表,就不会被删除。
inputs
- v_schema : The schema (aka database) in which the table resides
- v_table_name : The name of the table you want to log changes on
Result
mysql client 如不能创建更改日志将会报错
Example
MySQL>
call flexviews.create_mvlog( 'test' , 'mysqltable' )
2.get_mvlog [ Functions ]
Name
flexviews.get_mvlog : 获取给定表给定模式的物化视图日志名称
Synopsis
flexviews.get_mvlog( ‘viewschema’,‘tablename’);
Function
返回表的物化视图名称
Inputs
viewschema : The schema which contains the materialized view
tablename : The name of the table which contains the rows for the view
Result
- 表不存在或者没有记录返回结果为null
- 表的记录功能不可用时返回空
- 除此之外,返回表名
Example
MySQL>
select flexviews.get_mvlog( 'test',‘tablename’);
3.add_expr [ functions ]
Name
flexviews.add_expr : 给物化视图增加一个列或者索引
Synopsis
flexviews.add_expr(v_mview_id, v_expr_type, v_expression, v_alias)
Function
这个函数向物化视图定义添加了一个表达式或索引。这个函数通常只能在禁用的物化视图上调用。
在v_expression中指定的表达式将被添加到物化视图中。如果视图将使用聚合函数,那么应该将非聚合列指定“组”类型。如果视图不使用聚合,那么每个表达式都应该是类型“列”。在表达式中,任何对表列的引用必须完全符合您在 flexviews.ADD \_table()调用中指定的tablealias。例如,如果您添加了一个带有别名'T'的表,那么当您在该表中引用一个列时,您必须在别名中添加前缀:调用flexviews.add expr(flexviews.get \_id('test','mv1'),'GROUP','T.c1”、“group_on_t_c1”);
将表达式添加到视图的WHERE子句中。
4.add_table [ functions ]
Name
flexviews.add_table : 添加物化视图涉及的表
Synopsis
flexviews.add_table(v_mview_id, v_table_schema, v_table_name, v_table_alias, v_join_clause);
Function
将一个表添加到物化视图中
Inputs
- v_mview___id- The materialized view id
- v_table_schema - The schema which contains the table to add
- v_table_name - The name of the table to add
- v_table_alias - The table alias to use in the view. All tables MUST have an alias.
- v_join_clause - Every table after the first must have a NOT-NULL join clause
Result
以下两种情形MySQL客户端将会报错:
- The table does not exist
- There is no materialized view log on the table
5.create [ functions ]
Name
flexviews.create : 创建物化视图。这是第一步。
Synopsis
flexviews.createflexviews.create(v_schema, v_mview_name, v_refresh_type)
Function
为一个新的物化视图创建一个物化视图id。物化视图标识符存储在last_insert\_id()中,并且还可以使用flexviews.get \_id()访问。
Inputs
- v_schema : 数据库
- v_mview___name : 物化视图名称
- v_refresh___type : 更新模式。incremental 增量备份 ,complete 全备份
Result
如果未能物化视图MySQL客户端将报错
6.disable [ functions ]
Name
flexviews.disable : 禁用物化视图
Synopsis
flexviews.disable(v_mview___id);
Function
该函数会删除掉某物化视图的记录表(该物化视图暂时停止同步),该命令没有提示信息一旦应用将立即删除。
Inputs
v_mview_id :物化视图ID
Result
如果物化视图未被删除,MySQL客户端将会报错
Example
MySQL》call flexviews.disable(flexviews.get\_id('test',‘mv\_example’))
7.enable [ functions ]
Name
flexviews.enable : 物化一个尚未物化的视图。一旦视图被启用,它的结构就不能被改变,除非它被禁用/disable
Synopsis
flexviews.enable(v_mview___id);
Function
这个函数将为物化视图创建表。然后它会使用INSERT。。SELECT 填充视图。一旦对该函数的调用完成,基表上的任何DML语句都将在视图刷新时影响到它。
Inputs
v_mview_id:物化视图ID
Result
如果未能物化视图,MySQL客户端将会报错
8.remove_expr [ Functions ]
Name
flexviews.remove_expr : 物化视图移除某列或者索引
Synopsis
flexviews.remove_expr(v_mview_id,v_alias)
Function
移除某物化视图的某列或者索引
Inputs
- v_mview_id :物化视图ID
- v_alias :与add___expr时使用的别名一致
Notes
- 不能对已启用的物化视图进行修改操作
- 该方法经常用来修正错误
Example
9.remove_table [ Functions ]
Name
flexviews.remove_table :从物化视图列表中删除某表的物化视图
Synopsis
flexviews.remove_table(v_mview_id,v_table_alias);
Function
这个函数从物化视图列表中删除一个表的物化视图。任何引用此表的表达式也必须手动删除!
Inputs
- v_mview_id :物化视图ID
- v_table_alias :与add___table时的表别名一致即可
Result
如果该物化视图处于启用状态,MySQL客户端将报错;如果在视图中不存在给定的别名,就不会出现错误。
10.set_definition [ Functions ]
Name
flexviews.set_definition : 物化视图刷新语句
Synopsis
flexviews.set_definition(v_mview_id,v_sql);
Function
利用CREATE TABLE 。。AS SELECT 创建物化视图并刷新。v_sql 将被用于创建view
Inputs
v_mview_id - The materialized view id (see flexviews.get_id) v_sql - The SELECT statement to use for the view
Result
如果更新未成功,MySQL客户端将报错
11.get_id [ Functions ]
Name
flexviews.get_id : 获取给定物化视图的ID
Synopsis
flexviews.get_id(v_mview_schema,v_mview_name)
Function
获取给定物化视图的ID
Inputs
- v_mview_schema:包含物化视图的表
- v_mview_name:
Result
如果视图不存在将返回null
Example
MySQL》set @mv_id : = flexviews.getid(‘test’,‘mv___example’);
12.get_sql [ Functions ]
Name
flexviews.get_sql : 检索SELECT语句,该语句将在常规视图中表示物化视图。
Synopsis
flexviews.get_sql(v_mview_id);
Function
该函数将获取用于为物化视图创建的给定表达式、表等的常规视图的SELECT语句。
Inputs
v_mview_id:视图的ID
Result
创建视图的SQL语句
Example
MySQL》call flexviews.get_sql(1)
13.refresh /refresh_all [ Functions]
Name
flexviews.refresh : 在物化视图创建后,应用对数据库的更改
flexviews.refresh_all:刷新每一个已启用的物化视图
Synopsis
flexviews.refresh(v_mview_id,v_mode,v_uow_id)
Function
这个函数为给定的视图启动刷新进程。这个过程因视图的类型而异
Inputs
- v_mview_id:物化视图ID
- v_mode:complete|compute|apply|both
- v_uow_id:可为null。当一个uowid(事务id)被提供时,上面所选的模式将只对在给定的uowid上或之前创建的记录进行操作。如果提供了NULL值,那么将使用最近提交的事务id。
Notes
- complete:完整的刷新物化视图。
- compute:增量刷新
- apply:应用Compute之前尚未更改的状态
- both:同时包含compute、apply
Example
mysql>
set @mv_id = flexviews\_id( 'test',‘mv\_example’);
call flexviews.refresh('@mv___id','BOTH',‘NULL’);
14.rename [ Functions ]
Name
flexviews.rename - Rename a materialized views
Synopsis
flexviews.rename(v_mview_id, v_new_schema, v_new_table);
Function
This function renames the given materialized view.
Result
An error will be generated in the MySQL client if the view can not be enabled.
Example
MySQL》call flexviews.rename(flexviews.get_id( 'test',‘mv\_example’,‘new\_name\_example’));
.