- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为 Redshift 中的一些大表运行 VACUUM REINDEX
。当我在 SQLWorkbenchJ 中运行其中一个 vacuum 时,它永远不会完成并在大约 2 小时后返回由 peer 重置的连接。当我使用类似这样的东西运行吸尘器时,Python 中实际上发生了同样的事情:
conn_string = "postgresql+pg8000://%s:%s@%s:%d/%s" % (db_user, db_pass, host, port, schema)
conn = sqlalchemy.engine.create_engine(conn_string,
execution_options={'autocommit': True},
encoding='utf-8',
connect_args={"keepalives": 1, "keepalives_idle": 60,
"keepalives_interval": 60},
isolation_level="AUTOCOMMIT")
conn.execute(query)
有没有一种方法可以使用 Python 或 SQLWorkbenchJ 来运行这些查询?我希望他们每次至少持续一个小时。这是预期的行为吗?
最佳答案
您可能需要在 python 脚本中添加一种机制,以便在重建索引失败时重试,基于 https://docs.aws.amazon.com/redshift/latest/dg/r_VACUUM_command.html
If a VACUUM REINDEX operation terminates before it completes, the next VACUUM resumes the reindex operation before performing the full vacuum operation.
有几点需要注意(如果您已经知道,我深表歉意)
如果您的表使用交错,您需要先检查是否需要重新索引?。示例查询
SELECT tbl AS table_id,
(col + 1) AS column_num, -- Column in this view is zero indexed
interleaved_skew,
last_reindex
FROM svv_interleaved_columns
关于python - Redshift 中的长真空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171485/
我正在尝试在我的数据库上运行 VACUUM 命令,但似乎空间不足: > sqlite3 mydatabase.db "VACUUM" Error: database or disk is full 数
我正在尝试在我的数据库上运行 VACUUM 命令,但似乎空间不足: > sqlite3 mydatabase.db "VACUUM" Error: database or disk is full 数
我正在尝试在我的数据库上运行 VACUUM 命令,但似乎空间不足: > sqlite3 mydatabase.db "VACUUM" Error: database or disk is full 数
我是一名优秀的程序员,十分优秀!