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

Postgres 9.xのCHECK制約のコストはいくらですか?

    NULLを避けようとする人もいます 値、論理を主張することは混乱するでしょう。

    私はその一人ではありません。 NULL データのない列の場合、値は問題ありません。これらは確かに「空の」列を格納するための最も安価な方法です-ディスク容量とパフォーマンス(主な効果はより小さなテーブルとインデックスです):

    理解したら NULLの性質 値、それらを回避する理由はありません。 Postgresは、NULLを処理するためのさまざまな関数を提供します。 colaesce()> nullif() concat()concat_ws() 、...

    一般的に、パフォーマンスに関する限り 懸念されるのは、NOTNULL制約です。 CHECK制約を打ち負かす 両方ともトリガーを打ち負かします ログショットで。しかし、単純なトリガーでさえ安価です。 NOT NULLのコスト 制約はほとんどありません。また、これらはすべて書き込み操作にのみ影響しますが、ほとんどのアプリケーションでは読み取り操作が支配的です。

    したがって、パフォーマンスへの最も関連性のある影響(次善のインデックスとクエリは別として)はサイズです。 テーブルとインデックスの数、またはさらに重要なことに、データページあたりのタプルの数 。タプルが大きいと、ほとんどのユースケースでパフォーマンスが低下します。クエリを満たすために読み取る必要のあるデータページの数は、それに応じて増加します。使用可能なキャッシュメモリが早く飽和します。

    ベンチマークの準備はできていませんが、とにかく特定の環境でテストするのが最善です。これらは単純な経験則です。現実はもっと複雑です。




    1. AES_ENCRYPTを正しく使用する方法は?

    2. この文字列のタイプは何ですか? a:1:{s:2:en;}

    3. RoR:複数のデータベースに対してアプリをテストするにはどうすればよいですか?

    4. SQL Serverは、コンポーネント「OleAutomationProcedures」のプロシージャ「sys.sp_OACreate」へのアクセスをブロックしました