PDA

View Full Version : آنومالی دیتابیس سرعت سایت رو پایین می یاره؟



idocsidocs
چهارشنبه 08 شهریور 1391, 10:25 صبح
یه جدول دارم که باید حداکثر اطلاعات 10 سفارش رو ذخیره کنه.

قبلا همه سفارشها رو توی یه ردیف ذخیره می کردم و موقع خوندن سفارش ها با یه کوئری اطلاعات 10 سفارش رو بدست میاوردم.

اما وقتی جدول رو به فرم اول آنومالی تبدیل کردم باید خوندن اطلاعات همه سفارشها باید از یه حلقه استفاده کنم تا بتونم اطلاعات 10 سفارش رو بدست بیارم و نمایش بدم.

لطفا بگید این کار توی بازدیدهای بالا، باعث کاهش سرعت سایت نمی شه؟

Unique
پنج شنبه 09 شهریور 1391, 11:09 صبح
آنومالی به هیچ وجه باعث افت سرعت نمیشه بلکه رعایت نکردن باعث اعمال یکسری فرآیند های غیر ضروری میشه که سرعت را پائین میاره ! میشه توضیح بدین چطور یک 10 سفارش را توی یک ردیف ثبت میکردین ! چون این کار یکی از ضعیف ترین سناریو هایی هست که شنیدم !

idocsidocs
پنج شنبه 09 شهریور 1391, 12:43 عصر
میشه توضیح بدین چطور یک 10 سفارش را توی یک ردیف ثبت میکردین !
فقط اسم کالا رو توی فیلدها ذخیره می کردم.

اون موقع با یه کوئری می شد همه سفارشها رو بدست آورد ولی بعد از آنومالی باید یه حلقه while ایجاد کنم و سطرهای جدول رو بخونم.

بنظرتون استفاده از حلقه while بجای یه کوئری ساده سرعت رو کاهش نمی ده؟

بهزاد علی محمدزاده
پنج شنبه 09 شهریور 1391, 13:30 عصر
سلام . شما اینها رو چرا در بخش پایگاه داده مطرح نمی کنید ؟

آنومالی یه مفهوم در پایگاه داده است به این معنا :

1 - عدم امکان انجام یک عمل، که منطقا باید قابل انجام باشد، مثلا عدم امکان درج "اطلاع" مورد نظر کاربر . ( عدم درج رکورد که باید بشه ولی نمیشه )

2- بروز پیامد نامطلوب در پی انجام یک عمل ، مثل حذف اطلاع نا خواسته بعد از حذف یک فقره اطلاع خواسته . ( یعنی یه رکورد و حذف کنی ، ولی یه رکورد دیگه هم باهاش حذف بشه )

3- بروز فزورنکاری در انجام یک عمل .

( منبع : مفاهیم پایگاه داده روحانی رانکوهی )

اگر اینها در طراحی پایگاه باشه ، به اصطلاح میگن که پایگاه شما آنومالی داره . اون چیزی که شما میگید احتمالا نرمال سازیه . و بهتره که سوال و اول در بخش مربوطه ، و بعد با نشون دادن یا نمودار database یا جدول ، و query و بعد مطرح کردن مشکل بذارید ، تا دوستان بهتر بتونن راهنمایی تون کنن .

Unique
پنج شنبه 09 شهریور 1391, 14:29 عصر
فقط اسم کالا رو توی فیلدها ذخیره می کردم.
شما با اسم کالا چطور مبلغ کل و اطلاعات دیگه را بر میداشتین یعنی یکبار سبد خرید را پردازش و همه اطلاعات را توی یک رکورد می ریختین ؟
اگه این کاریه که انجام میدادین اصلا اصولی نیست ! معمولا یک جدول برای سبد خریدها دارند و اطلاعات مربوط به سبد خرید و یک جدول دیگه برای اقلام سبد که یک فیلد خارجی از کالا ها داره و میشه براحتی هر اطلاعاتی که بخواین با یک join ساده استخراج کرد ! در م.رد while هم 10 یا 30 یا حتی 100 رکورد زمان خاصی نمیگیره !