sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLによるインプレースアップデート

    インラインで保存されたフィールドのみをコピーする必要があります。 TOASTテーブルにオフラインで格納されているフィールドの場合、TOASTエントリへの参照のみがコピーされます。

    フィールドがオフラインで保存されるかどうかは、フィールドの値のサイズとフィールドのデータ型によって異なります。

    タプルが大きいが、フィールドが少ない場合-

    some_id integer,
    frequently_updated integer,
    charblob text
    

    frequently_updatedの更新は、何も変更する意味がありません。 通常、charblobのデータは書き換えられません 、少なくともそれが気にかける価値があるほど十分に大きい場合。

    OTOH、たくさんのフィールドがあるテーブルがある場合は、更新するたびにもっとたくさん書き直すことになります。

    HOTの更新は、更新された列がインデックスの一部ではない場合にのみ発生する可能性があるため、HOTは限られた範囲でしか役に立ちません 同じデータベースページに十分な空き容量があります。幅の広い行の場合、TOASTを使用してもページに多くのコピーを収めることができないため、HOTのメリットは限られています。

    本当に頻繁に更新されるが、テーブルの残りの部分にはあまり変更されない幅の広い行がある場合は、そのようなフィールドを別々のテーブルに分割する価値があります。




    1. OracleデータベースでJavaストアドプロシージャを使用する必要があるのはいつですか...欠点は何ですか?

    2. 重複データの問題とその修正方法

    3. SQL Server(T-SQL)ですべての新規ログインのデフォルト言語を設定する方法

    4. PostgreSQL-テーブル名としての動的な値