Memoptimized Rowstore Fast Ingest یکی از قابلیتهای جدید اوراکل در نسخه 19c است که می تواند در زمینه IOT بسیار کاربردی باشد قبلا در مطلبی تحت عنوان “Memoptimized Fast Ingest در اوراکل 19c“، سعی کردیم به طور مفصل این قابلیت را شرح دهیم. اوراکل در نسخه 23c بهبودهایی را در این زمینه ایجاد کرده است که موضوع این مستند خواهد بود.
پشتیبانی از Partitioning
در نسخه 19c و 21c امکان تنظیم MEMOPTIMIZE FOR WRITE برای جداول پارتیشن شده وجود نداشت:
Connected to Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 SQL> create table TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000), 5 mydate date 6 ) 7 SEGMENT CREATION IMMEDIATE 8 partition by range ( mydate ) 9 interval ( numtoyminterval(1,'MONTH')) 10 ( 11 PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-2015', 'DD-MM-YYYY')) 12 ); Table created
SQL> ALTER TABLE tbl1 MEMOPTIMIZE FOR WRITE; ORA-62165: MEMOPTIMIZE FOR WRITE cannot be enabled on table with specified partitioning type.
این قابلیت در نسخه 23c اضافه شد:
Connected to Oracle Database 23c Free, Release 23.0.0.0.0 SQL> create table TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000), 5 mydate date 6 ) 7 SEGMENT CREATION IMMEDIATE 8 partition by range ( mydate ) 9 interval ( numtoyminterval(1,'MONTH')) 10 ( 11 PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-2015', 'DD-MM-YYYY')) 12 ); Table created
SQL> ALTER TABLE tbl1 MEMOPTIMIZE FOR WRITE; Table altered
پشتیبانی از Compression
در نسخه 19c و 21c امکان تنظیم MEMOPTIMIZE FOR WRITE برای جداول compress شده وجود نداشت:
Connected to Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 SQL> create table TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000) 5 ) 6 SEGMENT CREATION IMMEDIATE 7 MEMOPTIMIZE FOR WRITE 8 COMPRESS; ORA-62146: MEMOPTIMIZE FOR WRITE feature cannot be used with COMPRESS option.
در نسخه 23c این قابلیت به وجود آمد:
Connected to Oracle Database 23c Free, Release 23.0.0.0.0 SQL> create table TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000) 5 ) 6 SEGMENT CREATION IMMEDIATE 7 MEMOPTIMIZE FOR WRITE 8 COMPRESS; Table created
پشتیبانی از LOB در نسخه 21c و 23c
در نسخه 19c امکان تنظیم قابلیت Fast Ingest برای جداولی که از LOBها استفاده می کردند وجود نداشت:
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 19 15:36:02 2023 SQL> create table usef.TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000), 5 PIC BLOB 6 ) 7 SEGMENT CREATION IMMEDIATE 8 MEMOPTIMIZE FOR WRITE; ORA-62152: MEMOPTIMIZE FOR WRITE feature cannot be enabled on table with LOBs.
این قابلیت در نسخه 23c به وجود آمد:
Connected to Oracle Database 23c Free, Release 23.0.0.0.0 SQL> create table usef.TBL1 2 ( 3 id NUMBER not null, 4 text VARCHAR2(3000), 5 PIC BLOB 6 ) 7 SEGMENT CREATION IMMEDIATE 8 MEMOPTIMIZE FOR WRITE; Table created