- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PgAdmin 从 AWS 数据库中检索数据。这很好用。问题是我有一个列在检索到相应的行后设置为 True,最初它被设置为 Null。这样做会向我的数据库中添加大量数据。
我已经检查过这不是由于其他进程造成的:它只在我的程序运行时发生。我确定没有添加任何行,我检查了之前和之后的行数,它们是相同的。
此外,它仅在更改特定表时执行此操作,当我使用相同进程更新同一数据库中的其他表时,数据库大小保持不变。它也不总是会增加数据库的大小,只有每次更改一次总大小才会增加。
如何将单个 bool 值从 Null 更改为 True 向我的数据库添加 0.1 MB?
我正在使用以下命令来检查我的数据库构成:
获取表格大小
SELECT
relname as Table,
pg_total_relation_size(relid) As Size,
pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as External Size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
获取行数:
SELECT schemaname,relname,n_live_tup
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;
获取数据库大小:
SELECT pg_database_size('mydatabasename')
最佳答案
如果您没有更改它,那么您的 fillfactor
在表格中为 100%,因为这是默认值。
这意味着您表中的每个更改都会将已更改的行标记为已过时,并将重新创建更新的行。如果您的表上有索引,问题可能会更糟,因为这些索引也应该在每一行更改时更新。正如您所想象的那样,这也会损害 UPDATE
性能。
所以从技术上讲,如果您读取整个表并在读取行后更新甚至最小的列,那么当您的 fillfactor
为 100 时,表的大小就会加倍。
你可以做的是ALTER
你的表降低fillfactor
,然后VACUUM
:
ALTER TABLE your_table SET (fillfactor = 90);
VACUUM FULL your_table;
当然,通过这一步,您的表会大 10%
,但 Postgres 会为您的更新腾出一些空间,并且它不会随着您的进程改变其大小。
autovacuum 之所以有用,是因为它会定期清理过时的行,因此它会使您的表保持相同的大小。但是会给你的数据库带来很大的压力。如果您碰巧知道您将按照您在开始问题中描述的那样进行操作,那么我建议根据您的需要调整 fillfactor
。
关于postgresql - AWS数据库单列添加极多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53228612/
我正在寻找绘制极坐标数据的替代方法。我需要实现像 this 这样的图表具有动态选项,例如 this . 非常感谢您的帮助! 最佳答案 我个人需要这些: Highcharts JS canvasXpre
我是一名优秀的程序员,十分优秀!