اوراکل 23ai – عبارت INMEMORY(ALL) و NO INMEMORY(ALL)

همانطور که می دانید قابلیت in memory را می توان در سطح ستون فعال و یا غیرفعال کرد:

SQL> create table usef.tb(c1 number,c2 number,c3 number,c4 number,c5 number,c6 number);
Table created.

SQL> ALTER TABLE usef.tb INMEMORY NO INMEMORY (c1,c2);
Table altered.

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION
FROM V$IM_COLUMN_LEVEL
WHERE TABLE_NAME = 'TB'
ORDER BY COLUMN_NAME;  
TABLE_NAME COLUMN_NAME     INMEMORY_COMPRESSION
---------- --------------- --------------------------
TB         C1              NO INMEMORY
TB         C2              NO INMEMORY
TB         C3              DEFAULT
TB         C4              DEFAULT
TB         C5              DEFAULT
TB         C6              DEFAULT
6 rows selected.

SQL> select inmemory from dba_tables where TABLE_NAME = 'TB';
INMEMORY
--------
ENABLED

زمانی که تعداد ستونهای یک جدول زیاد باشد، متن دستور فوق می تواند طولانی شود بنابرین دستور فوق نیاز به انعطاف بیشتری دارد تا با تعریف لیست exclusion و inclusion، به راحتی تغییرات مدنظر را اعمال کرد.

این تغییر جزیی در اوراکل نسخه 23ai به وجود آمد در این نسخه می توان از عبارت INMEMORY (ALL) و NO INMEMORY (ALL) هم استفاده کرد که در مثالهای زیر مثالهایی از آن را مشاهده می کنید:

SQL> ALTER TABLE usef.tb INMEMORY(c2,c5) NO INMEMORY (ALL);
Table altered.

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION
FROM V$IM_COLUMN_LEVEL
WHERE TABLE_NAME = 'TB'
ORDER BY COLUMN_NAME;  2    3    4
TABLE_NAME COLUMN_NAME     INMEMORY_COMPRESSION
---------- --------------- --------------------------
TB         C1              NO INMEMORY
TB         C2              DEFAULT
TB         C3              NO INMEMORY
TB         C4              NO INMEMORY
TB         C5              DEFAULT
TB         C6              NO INMEMORY
6 rows selected.
SQL> ALTER TABLE usef.tb INMEMORY(ALL) NO INMEMORY (c4);
Table altered.

SQL>  SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION
FROM V$IM_COLUMN_LEVEL
WHERE TABLE_NAME = 'TB'
ORDER BY COLUMN_NAME;  2    3    4
TABLE_NAME COLUMN_NAME     INMEMORY_COMPRESSION
---------- --------------- --------------------------
TB         C1              DEFAULT
TB         C2              DEFAULT
TB         C3              DEFAULT
TB         C4              NO INMEMORY
TB         C5              DEFAULT
TB         C6              DEFAULT
6 rows selected.
SQL> ALTER TABLE usef.tb INMEMORY NO INMEMORY (ALL);
Table altered.

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION
FROM V$IM_COLUMN_LEVEL
WHERE TABLE_NAME = 'TB'
ORDER BY COLUMN_NAME;
  TABLE_NAME COLUMN_NAME     INMEMORY_COMPRESSION
---------- --------------- --------------------------
TB         C1              NO INMEMORY
TB         C2              NO INMEMORY
TB         C3              NO INMEMORY
TB         C4              NO INMEMORY
TB         C5              NO INMEMORY
TB         C6              NO INMEMORY
6 rows selected.
SQL> ALTER TABLE usef.tb INMEMORY INMEMORY (ALL);
Table altered.

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION
FROM V$IM_COLUMN_LEVEL
WHERE TABLE_NAME = 'TB'
ORDER BY COLUMN_NAME;  
TABLE_NAME COLUMN_NAME     INMEMORY_COMPRESSION
---------- --------------- --------------------------
TB         C1              DEFAULT
TB         C2              DEFAULT
TB         C3              DEFAULT
TB         C4              DEFAULT
TB         C5              DEFAULT
TB         C6              DEFAULT
6 rows selected.

در زمان ساخت جدول هم می توان از این عبارتها بهره گرفت:

SQL> create table usef.tb(c1 number,c2 number,c3 number,c4 number,c5 number,c6 number) INMEMORY(ALL) NO INMEMORY (c4);
Table created.

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *