در این مقاله قصد داریم Oracle TimesTen و Oracle Database را از لحاظ کارایی (Performance) و از دیدگاه بهینه بودن در پایگاه داده اوراکل مقایسه نماییم.دانستن تفاوت میان موتور های پایگاه داده در این مقطع بسیار مهم است.
۱- Oracle Database
اطلاعات با ساختار back-end data warehouse یا OLTP را نگهداری می کند
۲- Oracle TimesTen
به عنوان Middle Ware در حافظه اصلی و به صورت cache عمل می کند.
این معماری چند مساله مانند سوالات زیر برای برنامه نویسان تداعی می کند:
• آیا Times Ten سریعتر از Oracle DataBase است؟
• چه زمانی دیتا را در TimesTen و چه زمانی در DataBase ذخیره کنیم؟
در راستای پاسخ به این سوالات یک سری آزمایشات جهت تست Performance و مقایسه بین Times Ten و Oracle DataBase انجام پذیرفته است، این مقایسه با ابزار Oracle Enterprise Manager و برای دو سرور با امکانات سخت افزاری مشابه و با اطلاعات یکسان ( ۱۰ میلیون رکورد بر روی یک جدول واقعی و بر روی جداول سه بعدی) انجام شده است.
این تست بر روی انواع مختلف query ها با فیلتر کردن اطلاعات بر روی جداول ( که از ۱۰۰۰ رکورد شروع و تا ۱۰ میلیون رکورد ادامه پیدا کرد).صورت گرفته است
چون Times Ten طوری است که در حافظه اصلی گنجانده میشود از این موضوع میبایستی اطمینان حاصل گردد که کلیه اطلاعات ۱۰۰% cache شده باشند- در نتیجه هیچ query به سمت دیسک نمی رود. این وضعیت نقاط حساس و گلوگاههای هر دو دیتابیس را در یک شرایط یکسان از لحاظ استفاده از CPU و RAM مشخص می کند. برای Times Ten جهت بالا بردن کارایی Columnar Compression را فعال نمودیم.
نتایج بسیار جالبی حاصل شد:
تمامی آزمایشات در شرایط برابر از لحاظ الگوی Performance انجام گرفت:
Times Ten در ابتدا سریع تر بود، ولی در query های با size بالاتر Oracle database پیشی گرفت و بیشترین سرعت را در query های حجم بالا به خود اختصاص داد.
نمودار زیر مقایسه Performance در هر دو دیتابیس را نمایش می دهد:
سه نقطه کلیدی در شکل بالا وجود دارد:
۱- در query های با حجم پایین Times Ten بسیار سریعتر است، در تست بالا در تحلیلی که در حجم کاری پایین انجام شده است، Times Ten به ویژه در مورادی که Columnar Compression فعال بود ۹ برابر سریعتر بود.
۲- دیتابیس اوراکل در ابتدا کند عمل می کرد، اما بعد از آنکه Plan های خود ( مانند parallel query و hash join) را فعال نمود بهبود پیدا کرد.
۳- اوراکل DB در نهایت برای query با حجم بالا بهتر عملکرد است.
در شکل به وضوح می توان تفاوت دیتابیسها در الگوریتمهای بهینه سازی مشاهده نمود.
بهینه سازی Oracle Database بسیار پیچیده است، شاید به این دلیل باشد که در query های حجم پایین کند است و مهمتر از آن اینکه در query های با حجم بالا نتیجه بهتری (با استفاده از parallel query و hash join) حاصل می شود.
به نظر می رسد Times Ten استراتژی بهینه سازی آسان تری داشته باشد، و همین یکی از دلایل واکنش سریع آن به query های با حجم پایین است. از سویی دیگر با وجود اینکه بهینه سازی در query های با حجم پایین آسان است به دلیل خطی بودن نمودار واکنش Times Ten ، در query های با حجم بالا نیز از همین Plan استفاده می کند که کارساز نیست.
سوالی که در اینجا پیش می آید این است که:
در چه نقطه ای اوراکل سریعتر از بقیه است؟
پاسخ دقیق به این سوال مستلزم دانستن موارد زیر است:
• سرعت دیتابیس و مقدار دیتایی که در حافظه cache میشود.
• مقدار parallel query های که دیتابیس شما می تواند استفاده کند (Times Ten از parallel query ها استفاده نمی کند)
• سهم Times Ten از columnar compression (در تست ما هر چقدر میزان compress دیتا بیشتر باشد در Times Ten نتیجه بهتری حاصل می گردد)
با این وجود از اطلاعات بالا می توان این استفاده را کرد:
• Times Ten برای query های کوتاه که به صورت همزمان اجرا میشوند و به منظور جمع آوری اطلاعات جهت داشبوردها استفاده می شود عملکرد بسیار خوبی دارد.
• Oracle DataBase برای query های با حجم بالا که در آن از Parallel نیز استفاده می شود، بسیار مفید است.
• در Times Ten اندازه جدولی که از آن پرس و جو می شود مهم نیست بلکه مقدار اطلاعاتی که در خواست می شود (query data) مهم است.
• همیشه در Times Ten سعی کنید از columnar compression استفاده کنید.