すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:fixnumeric データ型

最終更新日:Apr 25, 2025

AnalyticDB for PostgreSQL は、固定精度と整数ベースのストレージを組み合わせた FIXNUMERIC データ型をサポートしています。計算負荷の高いシナリオでは、FIXNUMERIC 型はネイティブの NUMERIC 型または DECIMAL 型よりも大幅にパフォーマンスが優れており、特定の範囲内でロスレス精度を維持しながら、集約操作と基本的な算術演算のパフォーマンスを向上させます。

概要

FIXNUMERIC は、AnalyticDB for PostgreSQL の固定精度10進数データ型であり、ネイティブの NUMERIC 型または DECIMAL 型よりも優れたパフォーマンスと効率的なストレージを提供するように設計されています。 NUMERIC 型または DECIMAL 型の高パフォーマンスサブセットとして、FIXNUMERIC は、整数ベースのストレージメカニズム(INT 64 および INT 128)とプリセットスケール(小数点以下の桁数)を使用して、10進数を整数にマッピングします。 FIXNUMERIC 型は、従来の NUMERIC 型または DECIMAL 型の10進計算をシミュレートする際のオーバーヘッド、および浮動小数点計算におけるバイナリ表現エラーによって引き起こされる精度の損失を防ぎます。 FIXNUMERIC 型は、高精度計算、制御可能なデータ範囲、高パフォーマンス、および大容量のディスク容量を必要とするシナリオに適しています。

FIXNUMERIC 型には、2つのモードがあります。

  • FIXNUMERIC(19,6) の固定精度で 64 ビット整数に基づいて実装されます。 NUMERIC(19,6) と同等の、小数点以下 6 桁を含む最大 19 桁をサポートします。 FIXNUMERIC は、パフォーマンスとストレージ効率のバランスをとるために、小規模および中規模のデータ計算シナリオに適しています。

  • FIXNUMERIC128(38,10) の固定精度で 128 ビット整数に基づいて実装されます。 NUMERIC(38,10) と同等の、小数点以下 10 桁を含む最大 38 桁をサポートします。 FIXNUMERIC128 は、広範囲で高精度のデータ計算を必要とするシナリオに適しており、特に大規模データ分析シナリオに優れています。

NUMERIC 型との比較

機能

FIXNUMERIC または FIXNUMERIC128

NUMERIC

精度

固定(デフォルトでは小数点以下 6 桁または 10 桁)

可変

範囲

制限あり(64 ビットまたは 128 ビット整数に基づく)

ほぼ無制限

パフォーマンス

高(ネイティブ CPU 命令セットに基づく操作による)

丸め方法

ゼロ方向への丸め

最も近い値への丸め

NaN サポート

サポートされていません

サポートされています

制限

  • fixnumeric 拡張機能は、V7.2.1.1 以降の AnalyticDB for PostgreSQL V7.0 インスタンスでのみサポートされています。

    説明

    AnalyticDB for PostgreSQL インスタンスのマイナーバージョンの確認方法については、「インスタンスのマイナーバージョンの表示」をご参照ください。インスタンスが上記の要件を満たしていない場合は、インスタンスのマイナーバージョンを更新してください。詳細については、「UpgradeDBVersion」をご参照ください。

  • サーバーレスモードの AnalyticDB for PostgreSQL インスタンスは、fixnumeric 拡張機能をサポートしていません。

  • FIXNUMERIC 型と FIXNUMERIC128 型には、固定の値の範囲があります。これらの 値の範囲 を超えると、オーバーフローエラーが発生します。

  • ネイティブの DECIMAL 型または NUMERIC 型とは異なり、FIXNUMERIC 型は、列の作成時に固定スケールを持ちます。スケールは基盤となるレベルであらかじめ設定されているため、テーブルの作成時に明示的にスケールを定義する必要はありません。

インストールとアンインストール

fixnumeric 拡張機能は、GUI ベースのインストールをサポートしていません。 fixnumeric 拡張機能をインストールするには、チケットを送信 してください。拡張機能をインストールした後、AnalyticDB for PostgreSQL インスタンスを再起動する必要があります。 fixnumeric 拡張機能をアンインストールするには、チケットを送信してください。

FIXNUMERIC 型は、AnalyticDB for PostgreSQL の他のデータ型と同様に使用でき、FLOATDOUBLE PRECISION などの浮動小数点型をシームレスに置き換えることができます。

手順 1:テーブルを作成し、テーブルにデータを書き込む

FIXNUMERIC データ型を使用して test_t という名前のテーブルを作成し、テストデータをテーブルに書き込みます。

CREATE TABLE test_t(a float, b numeric(14,6), c fixnumeric, d fixnumeric128);
INSERT INTO test_t SELECT v+0.1,v+0.1,v+0.1,v+0.1 FROM generate_series(1,1000) v;

手順 2:インデックスを作成する

FIXNUMERIC 型はインデックスをサポートしています。 test_t テーブルのインデックスを作成します。

CREATE INDEX ON test_t (c);
CREATE INDEX ON test_t (d);

手順 3:データをクエリする

  • 対応する列の SUM 値をクエリします。

    SELECT SUM(a), SUM(b), SUM(c), SUM(d) FROM test_t ;

    FLOAT 型は、精度が低い近似値を返します。 NUMERIC 型、FIXNUMERIC 型、および FIXNUMERIC128 型は、正確な値を返します。

            sum         |      sum      |        sum        |        sum
    --------------------+---------------+-------------------+-------------------
     500600.00000000175 | 500600.000000 | 500600.0000000000 | 500600.0000000000
    (1 row)
  • 対応する列の AVG 値をクエリします。

    SELECT AVG(a), AVG(b), AVG(c), AVG(d) FROM test_t;

    FLOAT 型は、近似値を返します。 NUMERIC 型、FIXNUMERIC 型、および FIXNUMERIC128 型は、正確な値を返します。

            avg        |         avg          |    avg     |      avg
    -------------------+----------------------+------------+----------------
     500.6000000000017 | 500.6000000000000000 | 500.600000 | 500.6000000000
    (1 row)

サポートされる関数

FIXNUMERIC 型は、高い互換性とスケーラビリティを提供します。 SUMAVGMINMAX などのすべての集計関数をサポートし、ネイティブの DECIMAL 型または NUMERIC 型をサポートするほとんどの関数と互換性があります。次の表に、サポートされる関数を示します。

関数名

説明

sumavgmin、または max

合計値、平均値、最小値、または最大値を計算します。

in_range

値が範囲内にあるかどうかを確認します。

abs

絶対値を返します。

sign

パラメーター値の符号(-1、0、+1 など)を返します。

round

FIXNUMERIC 型を DOUBLE 型に変換して、数値を最も近い整数に丸めます。

trunc

数値を特定の小数点以下の桁数に切り捨てます。

ceil

数値を最も近い整数に切り上げます。

ceiling

数値を最も近い整数に切り上げます(ceil のエイリアス)。

floor

数値を最も近い整数に切り捨てます。

addsubmul、または div

加算、減算、乗算、または除算を実行します。

=><<=>=、または <>

比較演算子(等しい、より大きい、より小さい、以下、以上、等しくないなど)として機能します。

mod

剰余を返します。

sqrt

FIXNUMERIC 型を DOUBLE 型に変換して、平方根を返します。

exp

FIXNUMERIC 型を DOUBLE 型に変換して、自然指数関数を返します。

ln

FIXNUMERIC 型を DOUBLE 型に変換して、自然対数を返します。

pow

FIXNUMERIC 型を DOUBLE 型に変換して、べき乗演算を実行します。

power

FIXNUMERIC 型を DOUBLE 型に変換して、べき乗演算を実行します(pow のエイリアス)。

scale

小数点以下の桁数を返します。

log

FIXNUMERIC 型を DOUBLE 型に変換して、対数演算を実行します。

log10

FIXNUMERIC 型を DOUBLE 型に変換して、底が 10 の対数演算を実行します。

to_char

FIXNUMERIC 型を NUMERIC 型に変換して、数値を文字列に変換します。