PDA

View Full Version : بهترین راه برای نوشتن کوئری رو داده های خیلی زیاد



مهدی رحیم زاده
شنبه 05 فروردین 1391, 23:16 عصر
با سلام خدمت تمام دوستان عزیز
ما یک بانک اطلاعاتی خیلی بزرگ داریم که توی یکی از تیبل های اون حدود 40میلیون رکورد تو گام اول درج شده و این تا حدود 150 میلیون رکورد هم میرسه
حالا ما وقتی که میخواییم روی این تیبل کوئری بنویسیم زمان زیادی طول می کشه تا داده های مورد نیاز رو بدست بیاریم
مثلا یک Count گرفتن حدود 36 ثانیه زمان میبره و یا یک سلکت رو کل داده ها زدیم در حدود 8.30 دقیقه طول کشید که خیلی زمان زیادیه
میخواستم بدونم که بهترین راه ها برای بالا بردن سرعت دریافت اطاعات از این حجم اطلاعات چیه
با تشکر

lastmory
یک شنبه 06 فروردین 1391, 10:09 صبح
یکی از راهها Index گذاری هستش

اما واقعا احتیاج داری به نشون دادن 150 میلیون رکورد؟؟؟

مهدی رحیم زاده
یک شنبه 06 فروردین 1391, 10:50 صبح
با سلام و تشکر دوست من

یکی از راهها Index گذاری هستش
میشه یکم بیشتر در این مورد برام توضیح بدید

اما واقعا احتیاج داری به نشون دادن 150 میلیون رکورد؟؟؟
نه لزوما همه داده ها رو
اما ممکنه که چند ده میلیون از این داده ها نیاز باشه که نمایش داده بشه و یا اینکه ازشون گزارش تهیه بشه.
با تشکر

علیرضا حسن زاده
یک شنبه 06 فروردین 1391, 10:50 صبح
بهترین راه برای نوشتن کوئری رو داده های خیلی زیاد
فکر نمی کنم ربطی به نوع کوئری گرفتن داشته باشه(البته در حالت هایی که گفتین) برای افزایش کارایی باید از روشهایی استفاده کنید که Performance دیتابیس بالا بره ضمنا برای این حجم اوراکل مناسب تره (شاید هم از اوراکل استفاده می کنید)
و صد التبه سخت افزار سیستم بخصوص سرعت و اندازه رم + سرعت هارد دیسک هم در افزایش سرعت برای چنین مواقعی خیلی چشمگیر هست
اگر داده هاتون زود به زود Insert یا Update نمیشن استفاده از نماهای ایندکس شده هم افزایش سرعت چشمگیری خواهد داشت(االبته نماهای ایندکس شده تو SqlServer نمی تونن از جداول Join شده استفاده کنن یعنی اگه تو عبارت SQLتون از Join استفاده کرده باشین حالت Index نما از بین میره و نمیشه Index گذاری بشه )

baktash.n81@gmail.com
یک شنبه 06 فروردین 1391, 12:25 عصر
سلام

مشکل شما با استفاده از پارتیشن ها حل می شه ... شما هم می تونید جداول رو پارتیشن کنید و هم می تونید index ها رو پارتیشن کنید که اگه این دو منطبق بر هم باشه بهترین پرفرمنس رو خواهد داشت ...

در موردش مقداری جستجو کنید ... اگه سئوالی بود بپرسید ...

اما شما نیاز دارید که اطلاعات بر اساس مقدار یک فیلد (فیلدی که معمولا در شرط Select استفاده می کنید) تیکه تیکه بشه ... مثلا اگه روی جدولتون فیلد تاریخ دارید ... فرض کنید اطلاعات مربوط به هر سال داخل یک پارتیشن قرار می گیره و وقتی شما توی Select یک تاریخ رو ذکر می کنه SQL مستقیم میره سراغ همون پارتیشن و با بقیه رکورد ها کاری نداره ... در نتیجه سرعتتون بیشتر می شه ....

p.yazdkhasti
یک شنبه 13 فروردین 1391, 19:19 عصر
سلام
در صورتی که درست متوجه شده باشم شما از این اطلاعات بیشتر برای گزارش گیری استفاده می کنید و حجم به روز رسانی در Table ذکر شده زیاد نمی باشد. من با راه حل ارائه شده در پست قبلی موافقم ولی راه حل اصلی شما ساخت یک Data Warehouse از اطلاعات موجود در این پایگاه داده (ها) و سپس ساخت Cube ها به منظور گزارش گیری می باشد. در محیط های مشابه شما برای گزارش گیری با حجم داده های بسیار بیشتر از این راه حل استفاده می شود زیرا همان طور که می دانید پایگاه داده رابطه ای برای انجام عملیات CRUD با حجم کم و تعداد بالا می باشد و برای گزارش کیری در حجم اطلاعات زیاد بهینه نشده است. به منظور بررسی بیشتر مطالب مرتبط با Analysis Services را مطالعه نمایید.

مهدی رحیم زاده
یک شنبه 13 فروردین 1391, 21:37 عصر
سلام
در صورتی که درست متوجه شده باشم شما از این اطلاعات بیشتر برای گزارش گیری استفاده می کنید و حجم به روز رسانی در Table ذکر شده زیاد نمی باشد. من با راه حل ارائه شده در پست قبلی موافقم ولی راه حل اصلی شما ساخت یک Data Warehouse از اطلاعات موجود در این پایگاه داده (ها) و سپس ساخت Cube ها به منظور گزارش گیری می باشد. در محیط های مشابه شما برای گزارش گیری با حجم داده های بسیار بیشتر از این راه حل استفاده می شود زیرا همان طور که می دانید پایگاه داده رابطه ای برای انجام عملیات CRUD با حجم کم و تعداد بالا می باشد و برای گزارش کیری در حجم اطلاعات زیاد بهینه نشده است. به منظور بررسی بیشتر مطالب مرتبط با Analysis Services را مطالعه نمایید.
با سلام
ممنون بابت جوابتون دوست عزیز
کاملا درست فرمودید اینجا هدف گزارش گیری از این اطلاعاته و به روز رسانی زیادی روی این اطلاعات نداریم. ممنون میشم برای این مباحثی که فرمودید منابع هم معرفی کنید به بنده
با تشکر

baktash.n81@gmail.com
دوشنبه 14 فروردین 1391, 08:29 صبح
مباحثی که دوستمون گفت مربوط BI می شه ... می تونید این کتاب رو مطالعه کنید .

Smart Business Intelligence Solutions with Microsoft SQL Server 2008