2

我尝试使用 voltdb,它是python 驱动程序 ,我可以在 voltdb 中创建一个过程并使用 VoltProcedure 调用它。喜欢:

 volt_procedure = VoltProcedure(volt, "Proc_name", [VoltConnection.VOLTTYPE_STRING])

 result = volt_procedure.call(some_argument)

问题是 - 我可以用这个驱动程序以某种方式运行原始 SQL 吗?

4

1 回答 1

3

是的,您可以调用系统过程“@AdHoc”,它接受一个字符串参数,即您要运行的 SQL 语句。

所有对@AdHoc 的调用都有一些额外的开销,因为它们需要被解析并计划,或者在缓存中找到现有计划。之后,它们就像预编译的存储过程一样执行。集群中的每台服务器都有一个用于解析和规划的线程池,因此处理 @AdHoc 调用的能力会扩展,但对于快速简单的 SQL 语句,它通常低于集群执行事务的能力。对于更复杂的 SQL,执行事务的时间一般会更长,因此根据执行时间的不同,解析的能力可能会更快。

对插入使用内置的“默认”过程,例如 TABLE_NAME.insert。对于您需要频繁执行的任何事情,例如每秒数千次,请尝试使用过程。您可以使用 java 类或仅使用 DDL 的“CREATE PROCEDURE ... AS”语法来定义过程。如果可能,请记住对程序进行分区。但不要害怕使用@AdHoc 调用,尤其是对于更动态生成的 SQL 语句。

免责声明:我为 VoltDB 工作。

于 2017-08-30T14:03:25.893 回答