performance - 更新数据库的最有效方法

标签 performance postgresql sql-update auto-update

我有一个不时自动更新的表(比如每天)。所有更新的字段都是 TEXT 类型,并且可能包含大量数据。我确定知道的是数据不会有太大变化。通常最多添加或删除 30 个字符。 那么什么会更有效率呢?以某种方式合并更改或删除旧数据并检索新数据? 而且,如果合并方式是这样做的方式,我应该怎么做?是否有任何关键字或其他东西可以使这更容易和更有效?

P.S 总的来说,我对数据库完全陌生,这是我第一次创建和使用数据库,如果这是一个愚蠢的问题,我深表歉意

最佳答案

由于 MVCC模型,PostgreSQL 总是 为在单个UPDATE 中应用的任何 组更改写入一个新行。没关系,你改变多少。没有“合并方式”。

这类似于(但不相同)删除行并插入新行。

由于您的列显然很大,因此它们将是 TOASTed ,这意味着它们被压缩并离线存储在一个单独的表中。在 UPDATE 中,如果这些列保持不变,则可以按原样保留,因此 UPDATEDELETE插入。引用 the manual here

During an UPDATE operation, values of unchanged fields are normally preserved as-is; so an UPDATE of a row with out-of-line values incurs no TOAST costs if none of the out-of-line values change.

如果您的行有很多列,并且只有一些列经常更新,那么使用两个具有 1:1 关系的单独表可能会有所帮助。但这是一个极端的例子。

关于performance - 更新数据库的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677470/

相关文章:

java - 追加字符串 - 性能问题 - Java 6

java - 为高性能数据结构定义一组基本规则 (java)

android - 以编程方式关闭应用程序(知道包名称)

sql - 如果类型转换失败则删除行

postgresql - Postgres 组合更新查询

php - while-list 给出奇怪的值

java - 减少执行时间

sql - 存储库 - 在 native 查询中排序不起作用

sql - postgresql 将行更新为固定数字

php - MySQL UPDATE - 选择性更新