- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个使用 PostgreSQL 数据库服务器的产品,该产品部署在数百个客户端上。他们中的一些人多年来收集了数十 GB 的数据。因此,在下一个版本中,我们将引入自动清理程序,该程序将在夜间批处理作业中逐渐归档和删除旧记录。
如果我理解正确的话,autovacuum 将启动并分析和重组元组,因此性能将与存在较少记录时一样。
如果我理解正确的话,实际的磁盘空间不会被释放,因为这只会发生在 VACUUM FULL 时,而不会被 autovacuum 触发。 p>
所以我在考虑可以执行此操作的自动化流程。
我在 http://wiki.postgresql.org/wiki/Show_database_bloat 找到了 nagios check_postgres 使用的膨胀 View .
这个观点好吗?如果 tbloat> 2,它可以使用 VACUUM FULL,我的理解是否正确?如果 ibloat 太高,它可以使用 REINDEX 吗?
对以下作为每日批处理作业运行的作业有何评论?
vacuumdb -Z mydatabase
#vacuum with analyze-onlyselect tablename from bloatview order by tbloat desc limit 1
vacuumdb -f -t tablename mydatabase
select tablename, iname from bloatview order by ibloat desc limit 1
reindexdb -t tablename -i iname mydatabase
当然,我仍然需要将它包装在 crontab 中的一个漂亮的 perl 脚本中(我们使用的是 ubuntu 12),或者 postgresql 是否有某种调度程序我可以使用它?
或者这是完全矫枉过正,是否有更简单的程序?
最佳答案
您可能不需要它。最好只执行一次 — 在第一次归档工作之后,您将收回磁盘空间,但之后您的日常归档工作和 autovacuum 将防止死元组膨胀。
另外,代替 vacuum full
,运行 cluster table_name using index_name 通常会更好;分析表名
。这将根据索引重新排序行。通过这种方式,相关的表行可以物理上靠近磁盘保存,这可以限制磁盘搜索(在传统磁盘驱动器上很重要,在 SSD 上基本不相关)和典型查询的读取次数。
请记住,vacuum full
和 cluster
都会让您的表在运行时无法使用。
关于PostgresQL 为臃肿的表自动化 VACUUM FULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931989/
来自 PostgreSQL(相对)新手的快速问题: 我们运行一个批处理过程,作为其最后一步,删除大部分以前的批处理。 磁盘空间是一个问题,因此我们需要确保 PostgreSQL 自行清理。 除了强制
我有一个: VACUUM cannot run inside a transaction block Redshift 中的 SQLWorkbenchJ 出现错误,但我已经提交了在此之前的所有事务。
SQLite Vacuum VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理
我有一个 android 应用程序,它涉及登录应用程序并执行许多 CRUD 操作。当用户第一次登录时,如果有任何可供该用户下载的数据,它会快速记录他/她。但是后来再次重新登录时,过程很慢,有时需要20
我目前正在清理一个具有 2 个索引和 2.5 亿个事件行以及大约同样多(或更多)的死行的表。我从我的客户端计算机(笔记本电脑)向我的服务器发出命令 VACCUM FULL ANALYZE。在过去的 3
我使用 PL/pgSQL 编写了一个脚本,我在 pgAdmin III 中运行。该脚本删除现有的数据库内容,然后为所需的测试场景(通常是各种类型的负载测试)添加一堆“示例”数据。加载数据后,我想“真空
我有一个移动应用程序同步过程。事务对数据库做了很多修改。由于这是在移动设备上完成的,因此我需要发出 VACUUM 来压缩数据库。 我想知道什么时候应该发出 VACUUM 在交易中,作为最终声明 还是在
databaseInstance.execSQL("PRAGMA auto_vacuum = FULL"); 目前我在创建数据库之后和创建数据库表之前使用它。我用数据库做了一些事务,所有这些数据的大小
如何为我的应用程序 VACUUM 我的 RoomDatabase?我围绕 Room 构建了我的整个应用程序,在某个时候,一张大 table 经常被删除,然后又被填满。 我试图用查询创建一个额外的 DA
我需要在执行VACUUM ANALYZE 后释放存储空间。我知道有 VACUUM FULL 但问题是,它锁定了可能导致问题的表(如果有正在进行的事务)。 有没有其他方法可以释放空间给操作系统? 感谢您
我刚刚在 Postgres 表上运行 Vacuum 以尝试恢复磁盘空间,但结果是所有磁盘空间都已被占用。 Vacuum crete 日志文件或事务日志是否可以删除? 最佳答案 我假设您执行了 VACU
来自 PostgreSQL 10.4 手册中关于完全真空的内容: Note that they also temporarily use extra disk space approximately
我的数据库中有一张表占用了 161GB 的硬盘空间。 200Gb 硬盘只剩下 5GB 可用空间。 以下命令显示我的表占用了 161GB 硬盘空间, 选择 pg_size_pretty(pg_total
我们有一个使用 PostgreSQL 数据库服务器的产品,该产品部署在数百个客户端上。他们中的一些人多年来收集了数十 GB 的数据。因此,在下一个版本中,我们将引入自动清理程序,该程序将在夜间批处理作
正常情况下,我正在使用我的应用程序,超过 30000 次下载没有问题。但我看到此错误开始出现在 android 开发人员控制台(崩溃和 ANRS) 中。 by app version 3.1.1 1
我在生产中继承了一个 PostgreSQL 数据库,其中有一个大小约为 250 GB 的表。它只有大约一万行事件行,我估计不超过 20 MB。 该表增长到如此大小是因为 AUTOVACUUM已经关闭了
使用此代码: var db = google.gears.factory.create('beta.database'); db.open('cominar'); db.execute('CREATE
是否可以在短时间内运行 PostgreSQL 11 的 VACUUM FULL 然后获得一些好处?还是中途取消会导致所有进度丢失? 我读过有关 pg_repack ( https://aws.amaz
是否可以在短时间内运行 PostgreSQL 11 的 VACUUM FULL 然后获得一些好处?还是中途取消会导致所有进度丢失? 我读过有关 pg_repack ( https://aws.amaz
有一个表,它有 200 行。但是显示的事件元组数量不止于此(大约 60K)。 select count(*) from subscriber_offset_manager; count ------
我是一名优秀的程序员,十分优秀!