70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

مدیریت و طراحی جدول در پایگا داده بزرگ در حد 40 میلیون به بالا

سلام دوستان بنده یک جدول دارم با 40 میلیون سطر که تعداد 50 تا ستون داره   و الان دیگه برای هر کوئری میزنم چون شرایطی که تعیین میکنم و تعداد ستون ها زیاد است میزنم دیگه خطا میده و رم پرمیشه و یا ده دیقه ای زمان بر میشه. چطور میتونم این مشکل حل کنم؟

تصیم داشتم که اطلاعات را هر 6ماه در یه جدول ذخیره کنم و  اگر مدیر فروشگاه به اطلاعات قبل نیاز داشت به جدول های قدیمی کوئری بزنه. نظر شما چیست؟  همینجوری یه جدول بسازم که  و اطلاات 6 ماه گذشته  را از جدول فعلی به قدیمی بریزم یا نه sql  سرور خودش امکاناتی دارد که اینکار را بکند هرشب ؟ یا  ....

 

با تشکر

پرسیده شده در 1399/04/22 توسط

2 پاسخ

1

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

پاسخ در 1399/04/23 توسط
1

سلام، وقت بخیر

شما برای جدولتون Index ایجاد کردید؟ بر اساس کوئری هایی که می زنید باید ایندکس ایجاد کنید تا سرعت اجرای کوئری ها بالا بره، بر اساس ستون هایی که توی شرط میاد و در خروجی نمایش داده میشه، شما ایندکس مناسب ایجاد می کنید، فقط اگر تراکنش ها روی جدولتون زیاد هست، باید حتماً ایندکس ها Rebuild و Defrage بشن تا سرعت کوئری ها به مرور کاهش پیدا نکنه.

نکته دیگه ای که باید بهش توجه کنید قابلیت Table Partitioning هست که می تونه تو سرعت کوئری ها تاثیر زیادی داشته باشه. البته Table Partitioning باید بر اساس کوئری ای که میگیرید ایجاد بشه. اگر ساختار دیتابیس و کوئری هایی که میزنید رو داشته باشید بهتر میشه Optimze کرد. Execution Plan رو نگاه کنید تا ببینید چه قسمت هایی بیشترین تاثیر رو روی سرعت دارن. در حتماً staticstics مربوط به io و time رو زمان کوئری فعال کنید تا خروجی رو بهتر تحلیل کنید:

SET IO STATISTICS ON
SET TIME STATISTICS ON

از ابزار Database Engine Tuning Advisor هم استفاده کنید، بر اساس کوئری ای که اجرا می کنید، پیشنهاداتی برای ایجاد Index ها به شما میده تا سرعت کوئری بالاتر بره.

علاوه بر اینها خود کوئری هم باید به صورت Optimze شده نوشته شده باشه، مخصوصاً زمانی که شما اطلاعات رو از چندین جدول میخونید.

پاسخ در 1399/04/22 توسط

پاسخ شما