- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个节点的 Spanner 实例,以及一个包含大约 40 亿行的表。 DDL 如下所示:
CREATE TABLE predictions (
name STRING(MAX),
...,
model_version INT64,
) PRIMARY KEY (name, model_version)
我想设置一个作业,使用 Python Spanner 客户端定期从该表中删除一些旧行。我想运行的查询是:
DELETE FROM predictions WHERE model_version <> ?
根据文档,听起来我需要将其执行为 Partitioned DML陈述。我按如下方式使用 Python Spanner 客户端,但由于表中的行数过多而遇到超时(504 Deadline Exceeded
错误)。
# this always throws a "504 Deadline Exceeded" error
database.execute_partitioned_dml(
"DELETE FROM predictions WHERE model_version <> @version",
params={"model_version": 104},
param_types={"model_version": Type(code=INT64)},
)
我的第一直觉是看看是否可以增加某种超时,但我在 the source 中没有看到任何超时参数。 :/
我确实注意到 Spanner 库中有一个 run_in_transaction
方法,其中包含超时参数,因此我决定偏离分区 DML 方法,看看使用此方法是否有效。这是我运行的内容:
def delete_old_rows(transaction, model_version):
delete_dml = "DELETE FROM predictions WHERE model_version <> {}".format(model_version),
dml_statements = [
delete_dml,
]
status, row_counts = transaction.batch_update(dml_statements)
database.run_in_transaction(delete_old_rows,
model_version=104,
timeout_secs=3600,
)
奇怪的是 timeout_secs
参数似乎被忽略了,因为在执行上述代码的一两分钟内我仍然收到 504 Deadline Exceeded
错误,尽管超时一小时。
无论如何,我不太确定下一步要尝试什么,或者我是否错过了一些明显的东西,这些东西可以让我在这个巨大的 Spanner 表上及时运行删除查询。 model_version
列的基数非常低(整个表中通常有 2-3 个唯一的 model_version
值),因此我不确定这是否会影响任何建议。但如果有人可以提供一些意见或建议,那就太好了:)提前致谢
最佳答案
设置 timeout_secs 没有帮助的原因是不幸的是,参数不是事务的超时。这是retry timeout对于交易,因此它用于设置截止日期,在此之后交易将停止重试。
我们将更新 run_in_transaction 的文档以更好地解释这一点。
关于google-cloud-spanner - 无法从 Spanner 中删除大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107953/
我在 Google Cloud Spanner 中有一个 860M 行的表格,我试图了解解释的工作原理。 该表有一个字符串列 geoid并且该列有一个索引。 当我运行以下查询时,它只需要 36 毫秒:
我有 3 个节点的 Spanner 实例,以及一个包含大约 40 亿行的表。 DDL 如下所示: CREATE TABLE predictions ( name STRING(MAX),
我有 3 个节点的 Spanner 实例,以及一个包含大约 40 亿行的表。 DDL 如下所示: CREATE TABLE predictions ( name STRING(MAX),
Cloud Spanner 提供了两种不同的 API。 Cloud Spanner 读取与 Cloud Spanner SQL API 之间有什么区别? 最佳答案 在幕后,它们都使用相同的执行机制,因
给定以下表架构: CREATE TABLE Record ( -- uuidv4 recordId STRING(36) NOT NULL, -- uuidv4 use
我想使用动态查询生成器构建一个复杂的查询,GCP Spanner 中是否有动态查询生成器。 示例: DeleteQuery query = new DeleteQuery("account a").a
我有两个结构 type Row struct{ ID string Status string details Details } type Details struct{ Sessi
假设我有架构 CREATE TABLE Account ( AccountId BYTES(MAX), Foo STRING(1024) ) PRIMARY KEY (AccountId);" CRE
我正在创建一个 SpannerSingleton,以便在应用程序的生命周期内保持连接。我对连接持久性感兴趣...如果存在 session /连接问题,如何重新创建 session ? 一个想法是,如果
我正在尝试使用下面的代码从带有时间戳的 Google Spanner 表中读取内容。 import datetime as dt from google.cloud.spanner.client im
Google Spanner 建议不要使用时间戳或序列号之类的东西作为主键或索引的初始部分,这基于架构是有意义的。但是,根据我的要求,我确实需要一些方法来确保行的严格“仅附加”顺序。 我正在使用 Sp
我正在学习 gulp。我通过以下代码得出的。 wrench.readdirSyncRecursive('./gulp').filter(function(file) { return (/\.(j
在下面的代码中我可以获得适当的数据类型值。 Map mutationMap = mutation.asMap(); Value locationValue = mutationMap.getOrDef
我正在尝试写信来抓取来自 google pub/sub 的一些消息。写入 bigtable 是有效的,因此在基础层面上没有遗漏任何内容。 我已升级到 google-cloud-dataflow-jav
假设我有三个表,Foo、Bar 和 Baz CREATE TABLE Foo ( FooId BYTES(MAX) ) PRIMARY KEY (FooId); CREATE TABLE Bar (
如何在 Google 的 Cloud Spanner 数据库中进行联接? 连接查询会执行得很快吗? SQL(MySql、Oracle、MSSQL)和 NewSQL(Cloud Spanner/TiDB
我们可以在 google spanner DB 中使用地理空间查询吗?如果没有,是否有任何替代方法可以通过在应用程序服务器中移动空间计算来在 SQL 中使用空间查询? 最佳答案 Cloud Spann
我正在尝试使用 Spring Boot 通过 java 连接到 Google Spanner。我不想从数据库中读取某些内容并使用网络套接字发送它。目前我有: @Configuration @Enabl
我想将大数据插入 Google 的 Cloud Spanner 表。 这就是我正在使用node.js应用程序所做的事情,但它停止了,因为txt文件太大(几乎2GB)。 1.load txt file
我们目前使用 NodeJs 和 Knex 来连接 MySQL。 我们计划将数据库迁移到 Cloud Spanner。 所以想知道 knexjs 是否支持云 Spanner 。 我在他们的官网(http
我是一名优秀的程序员,十分优秀!