اوراکل 23c – قابلیت Automatic SQL Transpiler

همانطور که می دانید استفاده از تابع در یک دستور sqlای، context switch بین SQL engine و PL/SQL engine را در پی خواهد داشت و رخ دادن متعدد context switch می تواند اثرات منفی بر روی performance دیتابیس داشته باشد.

اوراکل در نسخه 21c برای افزایش سرعت اجرای این دسته از پرس و جوها، SQL Macros را معرفی کرده است که با استفاده از این قابلیت، متن پرس و جوی حاوی function به فرم ساده و بدون استفاده از function بازنویسی می شود.

در نسخه 23c هم اوراکل قابلیت Automatic SQL Transpiler را در این زمینه معرفی کرده است که در صورت تنظیم پارامتر sql_transpiler به مقدار ON، به صورت خودکار و بدون مداخله کاربر، تابع استفاده شده در متن دستور SQL «در صورت امکان» به SQL expression تبدیل خواهد شد تا از سربار ناشی از اجرای function در SQL کاسته شود.

تابع زیر را در نظر بگیرید:

create or replace function sal_func(sal_param  number)
  return number
is
begin
  return sal_param +60 ;
end;
/
Function created.

در صورت استفاده از این تابع به صورت زیر، در حالت پیش فرض تبدیلی اتفاق نمی افتد:

SQL> select sal from person where sal_func(sal)=570;

 

اما اگر از قابلیت Automatic SQL Transpiler استفاده کنیم، execution plan فوق تغییر خواهد کرد و تابع sal_func به عبارت SAL+60 تبدیل خواهد شد:

SQL>  alter session set sql_transpiler = 'ON';
Session altered.
SQL> select sal from person where sal_func(sal)=570;

با تریس پرس و جوی فوق هم این مسئله قابل اثبات است:

*این قابلیت برای توابعی که در package تعریف شده اند کاربرد ندارد.

 

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

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

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