PDA

View Full Version : ایندکس گذاری روی جدولی شبیه به انبار داده



hamid_hr
یک شنبه 08 مهر 1397, 13:32 عصر
سلام
من یک جدول دارم که داده های داشبود داخلش ریخته میشه
تعداد Column ها زیاد هست و امکان داره هر نوع شرطی روی این داده ها زده بشه(دست کاربر هست)
وقتی اطلاعات من زیاد میشه واکشی خیلی زمان بر هست.
به نظر شما روی این نوع جداول ایندکس گذاری کنیم تغییری ایجاد میشه؟ چون کوئری ها داینامیک هست و امکان داره برای هر ستون شرط ایجاد بشه هست

farhad_shiri_ex
یک شنبه 08 مهر 1397, 13:59 عصر
سلام
من یک جدول دارم که داده های داشبود داخلش ریخته میشه
تعداد Column ها زیاد هست و امکان داره هر نوع شرطی روی این داده ها زده بشه(دست کاربر هست)
وقتی اطلاعات من زیاد میشه واکشی خیلی زمان بر هست.
به نظر شما روی این نوع جداول ایندکس گذاری کنیم تغییری ایجاد میشه؟ چون کوئری ها داینامیک هست و امکان داره برای هر ستون شرط ایجاد بشه هست

اینکه ایندکس گذاری کنید شک نکنید در واکشی اطلاعات تاثیر گذار هست!
منتهی مراتب سطح نرمال سازی دیتابیس و همچنین نحوه نوشتن کوئری هم خیلی تاثیر گذار خواهد بود(ترتیب نوشتن بانکها و فیلدها و Join هاو...) بهتره از ابزار Profiler استفاده کنید و estimated cost plan و actual cost plan کوئری ها را در هر دو روش ایندکس دار و بدون ایندکس تهیه کنید خودتون متوجه خواهید شد.
البته یک روش هم این هست که ایندکس کردن را هم داینامیک کنید البته می تونید با یک JOBسرویس ویا یک DTS این کار را انجام بدید. که البته شاید در صورت داشتن تعداد رکورد های بالا در زمان ساختن اولین بار کلید های ایندکس کمی معطلی داشته باشید ولی در دفعات بعد که ایندکس ها را به روز میکنید زمان زیادی نخواهد برد.
البته

hamid_hr
یک شنبه 08 مهر 1397, 14:25 عصر
اینکه ایندکس گذاری کنید شک نکنید در واکشی اطلاعات تاثیر گذار هست
ممنون
مشکل اینه که کاربر توسط صفحه شرط ها رو مشخص میکنه یعنی کوئری ما داینامیک هست.
در مورد ایندکس داینامیک یکم توضیح میدید؟

hosseinruzi
پنج شنبه 11 دی 1399, 23:49 عصر
من بهتون پیشنهاد میکنم از in memory استفاده کنید البته اگه رم بالایی داشته باشه سرورتون یا جدول تعداد رکورد زیاد نداشته باشه

bitasoft.ir
چهارشنبه 22 شهریور 1402, 21:27 عصر
اول از همه باید عرض کنم که کار با داده های خیلی زیاد و دیتابیس های سنگین کار خیلی خیلی دشوار و زمانبری هست. اینطوری نیست که بگیم می خوام ایندکس بزارم و بعدش با یه حرکت کار تموم بشه. دوستانی که با رکورد های بالا و مشکلات آنها دست و پنجه نرم کر ده اند می دانند که واقعا تصمیم گیری در این مورد برای اینگونه دیتابیس ها سخت است.
ایندکس‌گذاری (Indexing) می‌تواند بهبود قابل توجهی در عملکرد جستجوها و فیلترینگ‌ها در جداول داشته باشد، اما در صورتی که داده‌ها به صورت پویا و تغییر پذیر باشند و شرایط جستجوی کاربران متنوع باشند، باید با دقت به ایندکس‌گذاری نگریست. در اینجا تعدادی نکته مهم در مورد ایندکس‌گذاری در جداولی با داده‌های پویا و شرایط داینامیک را مطرح می‌کنم:
تأثیر ایندکس بر عملکرد:
ایندکس‌گذاری می‌تواند تأثیر مثبتی بر عملکرد کوئری‌های جستجویی داشته باشد، اما همچنین به همراه خود دارای هزینه‌های نگهداری می‌آید.
ایندکس‌های زیاد ممکن است منجر به افزایش حجم دیسک و مصرف فضای فیزیکی شود. بنابراین، قبل از ایجاد هر ایندکس، باید ارزیابی دقیقی از نیازهای کوئری و مصرف منابع انجام داد.
انتخاب ستون‌های مناسب برای ایندکس:
ایندکس‌ها باید بر روی ستون‌هایی که در کوئری‌ها به عنوان شرط جستجو استفاده می‌شوند، ایجاد شوند. به عنوان مثال، اگر یک ستون به نام "تاریخ" (Date) برای جستجو مهم است، این ستون را باید ایندکس‌گذاری کنید.
مدیریت ایندکس‌های ترکیبی:
در صورتی که کوئری‌ها شرایط مختلفی برای فیلترینگ اطلاعات دارند، ممکن است نیاز به ایجاد ایندکس‌های ترکیبی باشد که برای ترکیب ستون‌ها و شرایط مختلف ایجاد می‌شوند.
تغییرات در داده‌ها:
اگر داده‌ها به صورت مداوم تغییر کنند، ایندکس‌ها باید مداوم به‌روزرسانی شوند که ممکن است به کارایی سیستم آسیب بزند. در این مورد، باید با فراهم آوردن برنامه‌های به‌روزرسانی ایندکس‌ها و مدیریت مصرف منابع برای این فرآیند مواجه شوید.
پایش و بهینه‌سازی مداوم:
باید قابلیت پایش و بهینه‌سازی مداوم ایندکس‌ها را داشته باشید. این به منظور شناسایی ایندکس‌هایی که دیگر لازم نیست و حذف آنها، یا ایجاد ایندکس‌های جدید برای نیازهای جدید کوئری‌هاست.
استفاده از ابزارهای مدیریتی:
ابزارهای مدیریتی SQL Server مانند SQL Server Management Studio (SSMS) امکاناتی برای تحلیل و مدیریت ایندکس‌ها را فراهم می‌کنند. از این ابزارها برای ایجاد، به‌روزرسانی و حذف ایندکس‌ها استفاده کنید.
در نهایت، برای تصمیم‌گیری در مورد ایجاد ایندکس‌ها، نیاز به بررسی دقیق نیازهای کوئری و میزان اثربخشی ایندکس‌گذاری بر روی عملکرد دیتابیس دارید. همچنین باید هزینه‌ها و مزایای ایجاد هر ایندکس را در نظر بگیرید.





سلام
من یک جدول دارم که داده های داشبود داخلش ریخته میشه
تعداد Column ها زیاد هست و امکان داره هر نوع شرطی روی این داده ها زده بشه(دست کاربر هست)
وقتی اطلاعات من زیاد میشه واکشی خیلی زمان بر هست.
به نظر شما روی این نوع جداول ایندکس گذاری کنیم تغییری ایجاد میشه؟ چون کوئری ها داینامیک هست و امکان داره برای هر ستون شرط ایجاد بشه هست

bitasoft.ir
چهارشنبه 22 شهریور 1402, 21:30 عصر
استفاده از حافظه داخلی (In-Memory) در انبار داده (Database) وابسته به موارد مختلفی است که در طراحی و استفاده از سیستم می‌بایست در نظر گرفته شود. این تکنولوژی به کمک بهبود عملکرد و کارایی برخی بخش‌های دیتابیس در موارد خاص می‌آید، اما نیاز به ارزیابی دقیق ترافیک، حجم داده، نوع دستورات، و نیازهای کاربران دارد. برخی موارد کاربردی برای استفاده از In-Memory در انبار داده عبارتند از:


کارایی بالا: در مواردی که نیاز به پاسخگویی سریع به دستورات و جستجوها دارید (به ویژه در برنامه‌هایی با بار ترافیک بالا)، استفاده از حافظه داخلی می‌تواند بهبود چشمگیری در کارایی دیتابیس داشته باشد. این تکنولوژی اجازه می‌دهد داده‌ها به سرعت در حافظه بازیابی و به‌روزرسانی شوند.
کاهش زمان دسترسی به دیسک: In-Memory دسترسی به داده‌ها را از طریق حافظه داخلی فراهم می‌کند که سرعت بالاتری نسبت به دسترسی به دیسک دارد. این کاهش زمان دسترسی می‌تواند به خصوص در عملیات‌های خواندن موثر باشد.
پشتیبانی از تراکنش‌های سریع: In-Memory به تراکنش‌های سریع و با پایداری بالا اجازه می‌دهد. این ویژگی به کاربرانی که نیاز به انجام تراکنش‌هایی با حجم بالا در واحدهای زمانی کوتاه دارند، کمک می‌کند.
کاهش تاثیر قفل‌های همزمانی: In-Memory از قفل‌های همزمانی کمتری استفاده می‌کند، که می‌تواند از مسائل همگام‌سازی و قفل‌گذاری در تراکنش‌ها کاسته و کارایی را بهبود دهد.
پردازش همزمان بالا: In-Memory به پردازش همزمان بالا اجازه می‌دهد و کاربران می‌توانند به صورت همزمان به داده‌ها دسترسی داشته باشند.

اگر نیاز به تسریع در عملکرد دیتابیس و دسترسی به داده‌ها دارید و معماری سیستم شما اجازه می‌دهد، استفاده از حافظه داخلی معقول و مفید است. اما باید به این نکته توجه داشته باشید که:

استفاده از In-Memory ممکن است به هزینه‌های بیشتری از نظر سخت‌افزاری نیاز داشته باشد.
باید به دقت معماری و نیازهای سیستم خود را ارزیابی کنید و از تست‌ها و تجربیات دقیقی برای اعمال این تکنولوژی استفاده کنید.
اگر داده‌ها به صورت مداوم تغییر می‌کنند، باید مدیریت به‌روزرسانی In-Memory را در نظر داشته باشید.
تنظیمات آن بسیار پیچیده است و گاهی اوقات نیاز به نصب سیستم عامل و نرم افزار مدیریت پایگاه داده مجدد دارد.

به عنوان مثال، SQL Server 2014 به بالا قابلیت In-Memory OLTP را دارا است که می‌تواند در مواردی از بهبود عملکرد بسیار مفید باشد.


من بهتون پیشنهاد میکنم از in memory استفاده کنید البته اگه رم بالایی داشته باشه سرورتون یا جدول تعداد رکورد زیاد نداشته باشه