如何在不使用 "VT_TABLE_NAME" 中的 select count(*) 的情况下获取 SDI 复制虚拟表计数?
How to get SDI replication Virtual tables count with out using select count(*) from "VT_TABLE_NAME"?
我的问题是,每当我们 运行 select count(*)
来自 table 巨大 table 的名字时,我 运行 需要更多时间并使用一些内存查询。
我想比较虚拟 table 和物理 table 的计数是否匹配?实时复制是否正常工作?
我可以从
获得 table 的身体计数
SELECT "TABLE_NAME","RECORD_COUNT","SCHEMA_NAME" FROM "SYS"."M_TABLES"
这里的问题是不使用 select count(*) from "VT_<Table_name>"
,如何从特定模式中获取所有虚拟 table 的计数? HANA 中是否有任何标准 table 可以从特定模式中获取虚拟 table 的数量?
或
有没有其他不使用 count(*)
方法来计数的方法?
简答:不行,没有别的办法。
HANA无法知道外部资源中的记录数(我认为它适用于所有软件),因为它无法控制:它不知道是否有人在远程源删除或插入新数据进行更新其本地系统中的记录计数 table,而对于 HANA 自己的系统 table,它可以(只需将此操作包含在事务处理中)。
此外,可以将视图作为远程源(也许某些 DBMS 也允许 table 值函数,因为我看不出任何 SELECT
able 对象之间有任何区别从消费的角度来看),所以一致行数的逻辑变得非常复杂(源数据库不能报告你看到的记录数,因为它需要先计算它的输出)。
假设它有本地计数将导致每 N 秒 运行 select count(*) from remote_source
,这是资源浪费。
我的问题是,每当我们 运行 select count(*)
来自 table 巨大 table 的名字时,我 运行 需要更多时间并使用一些内存查询。
我想比较虚拟 table 和物理 table 的计数是否匹配?实时复制是否正常工作?
我可以从
获得 table 的身体计数SELECT "TABLE_NAME","RECORD_COUNT","SCHEMA_NAME" FROM "SYS"."M_TABLES"
这里的问题是不使用 select count(*) from "VT_<Table_name>"
,如何从特定模式中获取所有虚拟 table 的计数? HANA 中是否有任何标准 table 可以从特定模式中获取虚拟 table 的数量?
或
有没有其他不使用 count(*)
方法来计数的方法?
简答:不行,没有别的办法。
HANA无法知道外部资源中的记录数(我认为它适用于所有软件),因为它无法控制:它不知道是否有人在远程源删除或插入新数据进行更新其本地系统中的记录计数 table,而对于 HANA 自己的系统 table,它可以(只需将此操作包含在事务处理中)。
此外,可以将视图作为远程源(也许某些 DBMS 也允许 table 值函数,因为我看不出任何 SELECT
able 对象之间有任何区别从消费的角度来看),所以一致行数的逻辑变得非常复杂(源数据库不能报告你看到的记录数,因为它需要先计算它的输出)。
假设它有本地计数将导致每 N 秒 运行 select count(*) from remote_source
,这是资源浪费。