مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۲ دقیقه·۵ ماه پیش

بهینه‌سازی پایگاه داده Oracle 23ai برای مدیریت پارتیشن‌ها


Oracle 23ai  با اضافه کردن دو ستون جدید به نمای ALL_TAB_PARTITIONS، فرآیند نمایش اطلاعات پارتیشن‌ها را بسیار ساده‌تر و بهینه‌تر کرده است. این ستون‌ها HIGH_VALUE_CLOB و HIGH_VALUE_JSON هستند که دسترسی به داده‌های با ارزش بالا را راحت‌تر می‌کنند.

مشکل

ما یک جدول پارتیشن‌بندی شده با چهار پارتیشن ایجاد می‌کنیم:

drop table if exists part_tab purge;

create table part_tab (

created_date  date          not null,

some_data     varchar2(100) not null

)

partition by range (created_date) (

partition part_2021 values less than (to_date(‘2022-01-01′,’YYYY-MM-DD’)),

partition part_2022 values less than (to_date(‘2023-01-01′,’YYYY-MM-DD’)),

partition part_2023 values less than (to_date(‘2024-01-01′,’YYYY-MM-DD’)),

partition part_2024 values less than (to_date(‘2025-01-01′,’YYYY-MM-DD’))

);

برای بررسی مرزهای پارتیشن‌ها، باید مقدار ستون HIGH_VALUE را از نمای USER_TAB_PARTITIONS جستجو کنیم:

set linesize 140 long 100 longchunksize 100

column partition_name format a20

column high_value format a85

select partition_name,

high_value

from   user_tab_partitions

where  table_name = ‘PART_TAB’

order by 1;

این روش در SQL*Plus به خوبی کار می‌کند، اما کار با انواع داده‌های LONG می‌تواند مشکل‌ساز باشد، چرا که از زمان Oracle8i 8.1.6 منسوخ شده‌اند.


راه‌حل

Oracle 23ai ستون‌های HIGH_VALUE_CLOB و HIGH_VALUE_JSON را به نماهای {PDB|DBA|ALL|USER}_TAB_PARTITIONS اضافه کرده است. این کار دسترسی به داده‌های با ارزش بالا را ساده‌تر کرده و استفاده برنامه‌ریزی شده از آن‌ها را راحت‌تر می‌کند.

ابتدا ستون HIGH_VALUE_CLOB را که یک نوع داده CLOB است پرس و جو می‌کنیم:

column high_value_clob format a85

select partition_name,

high_value_clob

from   user_tab_partitions

where  table_name = ‘PART_TAB’

order by 1;

سپس ستون HIGH_VALUE_JSON را که یک نوع داده JSON است، پرس و جو می‌کنیم:

column high_value_json format a40

select partition_name,

high_value_json

from   user_tab_partitions

where  table_name = ‘PART_TAB’

order by 1;

SQL*Plus می‌داند چگونه یک نوع داده JSON را مدیریت کند، اما برای ابزارهای دیگر ممکن است نیاز به سریال‌سازی داده‌های JSON یا استخراج مقدار به عنوان یک نوع داده معتبر باشد. برای مثال، می‌توانیم مقدار را استخراج کرده و به عنوان یک نوع داده DATE برگردانیم:

alter session set nls_date_format=’DD-MON-YYYY HH24:MI:SS’;

column high_value_json format a40

column high_value_date format a20

select partition_name,

json_serialize(high_value_json) as high_value_json,

json_value(high_value_json, ‘$.high_value’ returning date) as high_value_date

from   user_tab_partitions

where  table_name = ‘PART_TAB’

order by 1;

نتیجه‌گیری

این تغییرات در Oracle 23ai باعث بهبود کارایی و ساده‌سازی مدیریت پارتیشن‌ها شده و مشکلات ناشی از استفاده از داده‌های LONG را برطرف کرده است. این به‌روزرسانی‌ها برای برنامه‌نویسان و مدیران پایگاه داده بسیار مفید است و به بهینه‌سازی فرآیندهای کاری کمک می‌کند.

منبع مستند

oracle databaseاوراکل
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید