[解決済み] PostgreSQL におけるスペースの計算と保存
2023-08-18 02:16:04
質問
pgに以下のようなテーブルがあります。
CREATE TABLE t (
a BIGSERIAL NOT NULL, -- 8 b
b SMALLINT, -- 2 b
c SMALLINT, -- 2 b
d REAL, -- 4 b
e REAL, -- 4 b
f REAL, -- 4 b
g INTEGER, -- 4 b
h REAL, -- 4 b
i REAL, -- 4 b
j SMALLINT, -- 2 b
k INTEGER, -- 4 b
l INTEGER, -- 4 b
m REAL, -- 4 b
CONSTRAINT a_pkey PRIMARY KEY (a)
);
上記は1行あたり50バイトに追加されます。私の経験では、ユーザが作成したインデックスがない場合、システムのオーバーヘッドとしてさらに40%から50%が必要です。つまり、1 行あたり約 75 バイトです。このテーブルには多くの行があり、1,450億行以上になる可能性があるので、テーブルのサイズは13-14テラバイトになります。このテーブルをコンパクトにするために、どんなトリックがあるでしょうか?以下に私の可能なアイデアを示します。
を変換して
real
の値を
integer
. として格納できる場合は
smallint
として格納できれば、1フィールドあたり2バイトの節約になります。
b ... m列を配列に変換します。これらの列で検索する必要はありませんが、一度に1つの列の値を返せるようにする必要があります。ですから、もし私が列gを必要とするならば、次のようなことができます。
SELECT a, arr[5] FROM t;
配列オプションでスペースを節約できるでしょうか?また、速度は低下しますか?
他のアイデアはありますか?
どのように解決するのですか?
配列に複数の数値フィールドを格納しても、得るものは何もありません(失うものもあります)。
は 各数値型のサイズ は明確に文書化されているので、希望する範囲の解像度と互換性のある最も小さいサイズのタイプを使用すればよいのです。
行に沿った列に何らかのバイト配列の要件がある場合、その場合、列の順序を変更することで使用されるスペースが変わる可能性がありますが、私はそうは思いません (しかし、確かではありません)。
ところで、行ごとに修正オーバーヘッドがあり、約 23 バイト .
関連
-
PostgreSQLのURL解決方法
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] PostgreSQLでデータベースのコピーを作成する
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み】PostgreSQLのエラーです。Fatal: ロール "username" が存在しません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PostgreSQLのテーブルをパーティション分割する3つの方法
-
Postgresqlの操作でSQL文の実行効率を表示する
-
Postgresqlのシーケンススキップの問題を解決する
-
[解決済み] psql'に非対話的にパスワードを指定するには?
-
[解決済み] PostgreSQLの場合。PostgreSQLですべてのテーブルのOWNERを同時に変更する
-
[解決済み] Postgres / PostgreSQLのテーブルとインデックスのディスクサイズはどのように見つけるのですか?
-
[解決済み] PostgreSQLでカラムのデフォルト値を変更するにはどうすればよいですか?
-
[解決済み] enumが持ちうるすべての値を取得するSQLクエリ
-
[解決済み] PostgreSQLにデータベースが存在するかどうかをシェルで確認する
-
[解決済み] Postgresql。条件付き一意性制約