Orcle 12cの新機能--- IM仮想列

1つの解説

インメモリ仮想列は、それらの値を持つように、テーブルの上にユーザー定義の仮想列の一部または全部を有効マテリアライズド(事前に計算)と、そのテーブルのための非仮想列のすべてと一緒にインメモリ列ストアに読み込ま。

メモリ内の仮想列は、仮想リストその具体的な実現(事前に計算)のユーザ定義の値の一部またはすべてをすることができ、インメモリストレージのカラムに挿入し、すべての非仮想列が格納され表インチ

インメモリ列ストアにユーザ定義の仮想列の値をマテリアライズすることは非常に、そのようなSIMD(単一命令複数データ)ベクトル処理としてメモリー内スキャンおよび用いて濾過する仮想列の値を有効な技術によってクエリのパフォーマンスを向上させることができ単に非仮想列のような。

(例えば、複雑な計算の列、および仮想列として得られた値の値を事前に、再計算する必要なく、次直接使用仮想列)事前計算することによって大幅にクエリのパフォーマンスを向上させることができます。

IM IM仮想ストレージ列に列を挿入するには、パラメータがINMEMORY_VIRTUAL_COLUMNSを設定します:

  • MANUAL(デフォルト):表には、IM列ストアに対して有効になっている場合は、それらを明示的にインメモリとして設定されていない限り、この表に定義されたIM仮想列は、人口の対象となりません。 - 需要显示指定虚拟列

  • ENABLE:テーブルはIM列ストアに対して有効になっている場合は、それらを明示的にNOインメモリとして設定されていない限り、この表に定義されたすべてのIM仮想列は、人口の対象となります。 - 除非显示指定虚拟列不插入

  • DISABLE:IM仮想列は、IMインラインストアに挿入することはできません。

実験2 - IM仮想列を有効にします

2.1 IM第1の柱状のストレージを有効にするには

INMEMORY_SIZE値は、100Mの最小値0ではありません。

ALTER SYSTEM SET INMEMORY_SIZE = 100M SCOPE=SPFILE;
SQL> SHOW PARAMETER INMEMORY_SIZE
NAME	     TYPE	    VALUE
------------------------------------ ---------------------- ------------------------------
inmemory_size	     big integer	    100M

2.2パラメータの設定INMEMORY_VIRTUAL_COLUMNS

SQL> SHOW PARAMETER INMEMORY_VIRTUAL_COLUMNS
NAME	     TYPE	    VALUE
------------------------------------ ---------------------- ------------------------------
inmemory_virtual_columns	     string	    MANUAL

- 有効にするには再起動します

SQL> ALTER SYSTEM SET INMEMORY_VIRTUAL_COLUMNS=ENABLE SCOPE=SPFILE;
System altered.

表2.3は、IM柱状ストレージを有効に仮想列が含まれます

既存のテーブルには、仮想列の柱状のストレージを追加し、IMを有効にするには、2.3.1

SQL> alter table bonus add(weekly_sal as (ROUND(SAL*12/52,2)));
Table altered.

SQL> ALTER TABLE bonus INMEMORY;
Table altered.

- BONUSビューテーブルの構造は、複数のWEEKLY_SAL

SQL> desc bonus

 Name	   Null?    Type
 ----------------------------------------- -------- ----------------------------
 ENAME	    VARCHAR2(10)
 JOB	    VARCHAR2(9)
 SAL	        NUMBER
 COMM	    NUMBER
 WEEKLY_SAL     NUMBER

2.3.2新しいテーブル(仮想列を有する)、および指定された列は、IM仮想ストレージ列に挿入され、表示され

  • 新しい表
CREATE TABLE  emp (
      empno      NUMBER(5) PRIMARY KEY,
      ename      VARCHAR2(15) NOT NULL,
      job        VARCHAR2(10),
      sal        NUMBER(7,2),
      hrly_rate NUMBER(7,2) GENERATED ALWAYS AS (sal/2080), --虚拟列将sal列除以2080
      deptno     NUMBER(3) NOT NULL)
   INMEMORY;
  • カラムは、カラム内のIM hrly_rate仮想ストレージに挿入されます
ALTER TABLE LEI.emp INMEMORY(hrly_rate);

より詳細な情報は、公式ドキュメントを参照してください。
http://docs.oracle.com/database/122/INMEM/populating-objects-in-memory.htm#INMEM-GUID-C0BC34D3-2BD8-41A5-B2F0-9AB109C1B617

おすすめ

転載: blog.csdn.net/qianglei6077/article/details/92794847