当前位置: 首页 > 知识库问答 >
问题:

Ruby API:过期的云扳手行

诸龙野
2023-03-14

我有一个100s GB大小的扳手表,有两个string和一个DateTime列。我正在尝试使用DELETE语句使超过X天的行过期。

到目前为止,使用Ruby API还没有解决这个问题,我在使用时会遇到事务超时错误或Google::Cloud::UnavailableError:

spanner.execute_partition_update(“从datetime<'#{(date.today-300).strftime(”%y-%m-%dt%h:%m:%sz“)}‘的表中删除”)

共有1个答案

井逸明
2023-03-14

>

  • 我怀疑DATETIME列的类型是TIMESTAMP(根据扳手允许的类型)。

    在本例中,我建议使用“gcloud”命令,以确保Ruby客户机库不是导致此问题的因素

    关于查询,最好使用官方文档中的内置扳手函数,以确保它得到优化。在本例中,使用CURRENT_TIMESTAMP()函数和TIMESTAMP_SUB()函数将确保在发出时间戳值减去X天数时,Spanner正确处理查询。

    在这个用例中,要执行的命令是:

    gcloud spanner databases execute-sql [db-name] \
        --instance=[instance-name] --enable-partitioned-dml \
        --sql=”DELETE FROM table WHERE datetime < TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 700 day)“
    

    为了减少读取的行数,如果与TIMESTAMP列有关联,可以对查询中的一个字符串列使用STARTS_WITH()。

  •  类似资料:
    • 我想在Cloud Spanner中使用UUID作为主键。读写UUID的最佳方式是什么?是否有UUID类型或客户端库支持?

    • 有关所述功能的说明: Postgres(索引组合)、MySQL(索引合并)和MongoDB(索引交叉)有一个功能,当在where子句中有多列的给定查询没有找到多列索引时,DB使用多个单列索引(索引)。以下是Postgres的文档对此特性的说明--https://www.costgreql.org/docs/8.3/indexes-bitmap-scans.html 链接节选 从8.1版开始,Pos

    • 理想情况下,我希望使用实例id、项目名称、数据库名称、一个服务帐户电子邮件和一个p12文件的组合,但对其他身份验证选项是开放的。 编辑:在尝试策略时,我生成了这个日志文件,以备不时之需https://gist.github.com/aryeh-looker/e6b1b1617d301f0a247463216c96535d

    • 我正在尝试找出是否有任何GCP数据流模板可用于使用“Pub/Sub to Cloud Spanner”进行数据摄取。我发现已经有一个默认的GCP数据流模板可用于示例-“Cloud Pub/Sub to BigQuery”。所以,我有兴趣看看我是否可以在流或批处理模式下对扳手进行数据摄取,以及行为会如何

    • 我正在使用辛巴科技公司的JDBC驱动程序与谷歌云扳手连接。它在 Java .sql 中按预期运行。当,我试图将simba JDBC驱动程序与Spark的JDBC读取器一起使用,以便将查询输出读取为数据帧,但是,它给出了错误的输出。 这是我的扳手台: 元数据:UserID(字符串)< br >用户名(字符串) 我正在执行查询:选择*来自用户 当我将 Simba JDBC 驱动程序与 Java Sql