PDA

View Full Version : سوال: به جدول با 30 فیلد می تونه جول بهینه شده به حساب بیاد و زیر بار کم نیاره؟



i-php-i
چهارشنبه 04 تیر 1393, 22:11 عصر
یه جدول innodb دارم که 30 فیلد داره، هیچ کدوم از فیلدها در هیچ حالتی خالی نمی مونن و حتما مقدار خواهند داشت.

15 تا از فیلدها از نوع int و tiny int هستن، 9 تا از فیلدها از نوع varchar با طول کمتر از 10 کاراکتر هستن، 4 تا فیلد از نوع varchar با طول بین 50 تا 300 کاراکتر و فقط یه فیلد longtext دارم.

البته یه جدول دیگه هم دارم که داده های اختیاری رو ذخیره می کنه و برای هر محصول حدود 50 رکورد از جدول رو به خودش اختصاص می ده اما این داده ها موقع صفحه بندی محصولات نمایش داده نمی شن و فقط وقتی نمایش داده می شن که کاربر صفحه نمایش محصول رو باز کرده باشه. برای بازیابی این محصولات از یه کوئری اضافه استفاده می کنم.

آیا این جدول ها می تونن وقتی تحت فشار قرار گرفت بدون مشکل کار کنه؟

i-php-i
پنج شنبه 05 تیر 1393, 12:59 عصر
نظرتون در این مورد چیه؟

pejman_view
جمعه 06 تیر 1393, 01:16 صبح
سلام

این سوال خیلی کلی بهتر بگم تعداد فیلدها اگر توسط یک نفر با تجربه در این زمینه ساخته شده باشد پس دلیل داشته که 30 ستون تعریف کرده که چه بسا در بعضی موارد خیلی بیشتر از این ها هم تعریف می شود و جای نگرانی ندارد.
آمدم توضیح بدم 10 خط نوشتم پشیمان شدم همه اش را پاک کردم دوباره نوشتم واقعاً موارد بسیار زیادی در اینکه بگویید دیتابیس جوابگو هست یا نه دخیل است:
بصورت کلی:
1- سخت افزارهای مورد استفاده (از هارد گرفته تا رم و سی پی یو)
2- بهینه سازی کانفیگ دیتابیس مطابق با نیازهای دیتابیست
3- بهینه سازی اسکریپت مورد استفاده
این موارد را بایستی در نظر داشت اگر خودتان اسکریپت را ننوشتید یا نوشتید شاید دانش کافی در این زمینه را نداشته باشید در اینجا توصیه می کنم از یک System Administrator L3 تقاضا کنید اینکار را برای شما انجام دهد البته L2 هم اینکار را خواهد کرد.

با آرزوی موفقیت.

i-php-i
جمعه 06 تیر 1393, 01:49 صبح
اینکه 15 تا از فیلدها از نوع int و tiny int هستن بخاطر این بوده که راهی دیگه نداشتم و همه این فیلدها اجباری هستن.

نظرتون در این مورد اینکه این جدول رو به دو بخش تقسیم کنم چیه؟ ولی در این حالت باید از LEFT JOIN استفاده کنم

Mahdi-563
جمعه 06 تیر 1393, 23:23 عصر
اگه نمی تونی جدولت را تغییر بدی بهتر تنظیمات MYSQL را بهینه کنی

درصورتی که تعداد رکورد هات زیاد باشه ریسور زیادی مصرف می کنه

ضمنا اگه بتونی برای این جدول ار MANGO استفاده کنی خیلی بهنره

i-php-i
شنبه 07 تیر 1393, 02:20 صبح
یعنی mysql نمی تونه از پس یه جدول با 30 فیلد بر بیاد؟! البته می تونم این جدول رو به دو بخش تقسیم کنم ولی در این صورت باید از LEFT JOIN استفاده کنم. نظرتون در مورد تقسیم جدول به دو بخش چیه؟

shpegah
شنبه 07 تیر 1393, 07:56 صبح
جداول شما باید براساس نوع درخواستهایی که شما از اطلاعات دارید شکسته بشه مثلا اگر گزارشی نیاز دارید که باید تمام این فیلدها در آن نمایش داده بشند وبه همین دلیل است که این جدول را ایجاد نموده اید شکستن جدول کاررا بدتر میکند در این صورت مجبورید تعداد رکوردهایی که در هر لحظه میخونید کم کنید ومشکلی هم برایتان پیش نخواهد آمد ولی اگر چنین نیست ونیازی به نمایش همه فیلدها در گزارشتان ندارید بهتر است جدول را بشکنید وهر بار نیاز شد از left join استفاده کنید که در آن صورت هم معمولا تعداد رکورد کمتری مورد در خواست است نه همه رکوردها در نتیجه باتوجه به اینکه تعداد کمتری رکورد در عمل left join مشارکت میکنند بار وفشار نیز کمتر خواهد شد ومشکلی پیش نخواهد آمد در ضمن برای اتصال دوجدول هم دقت کنید که حتما کلید اصلی را به کلید خارجی در جدول دوم که ایندکس دارد متصل نمایید
یک مورد دیگه هم اینکه بسته به نوع کار برد شاید بهتر باشه به بیشتر از دوجدول آن را بشکنید مثلا چند تا از فیلدها ممکن است در مواردی خیلی خاصتر نیاز به استفاده داشته باشد آنها را هم نیاز نیست همیشه داشته باشید پس بهتر است در جدولی جداگانه داشته باشید که رابطه بین جدول اصلی و این جداول همه یک به یک است