نمایش نتایج 1 تا 40 از 40

نام تاپیک: دیتابیس بهینه

  1. #1
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    دیتابیس بهینه

    سلام دوستان
    من قرار پایگاه داده ایی طراحی کنم که حداقل 5 میلیون رکورد داره و بعدا هم بیشتر میشه شاید 7 میلیارد خلاصه قرار خیلی سنگین بشه . راه کار های زیادی هم پیدا کردم گفتم باهاتو به اشتراک بزارم
    از دوستان حرفه ایی میخام که کمکم کنن و نکاتی بگن که تو بهینه طراحی کردن کمکم کنه و مرجعی بشه برای بهینه سازی .
    در ادامه راهکار ها رو میزارم برای تبادل سطح علمی خودم و دوستان .
    چند مورد شنیدم که Index گذاری کن فیلد هایی که جستجو زیاد میشه و index multi هم استفاده کن که من index multi رو بلد نیستم راهنماییم کنید؟؟
    فیلد هایی که قرار جستجو به صورت like انجام بدی انجام نده و از full text استفاده کن که اگه میشه بهم یاد بدید بلد نیستم !!
    آخرین ویرایش به وسیله under22 : پنج شنبه 22 خرداد 1393 در 17:01 عصر

  2. #2
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    اگه میلیاردی هست برو سراغ Nosql

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    من شنیدم برای کار با php بهترین پایگاه داده mysql هست ولی mongodb هم هست که عالیه حتی facebook هم از اون استفاده میکنه ولی متاسفانه افراد کمی هستن که بتونن ازش استفاده کنن منجمله من !

  4. #4
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    فکر کنم facebook از mysql و nosql استفاده می کنه.البته هر کی یه چیزی میگه.
    بهترین گزینه برای php، mysql است. ولی برای دیتابیس های حجیم به این بزرگی جواب نمیده.

  5. #5

    نقل قول: دیتابیس بهینه

    از نظر insert هر تعداد رکورد را میشه در mysql ثبت کرد ولی همه دردسر ها سر سرچ ها و Select ها پیش میاد شما باید اول شرح بدید این رکورد ها قراره چه استفاده ای ازش بشه ؟

  6. #6
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    حجم دیتابیس که خیلی زیاده . اما از نظر جستجو و ارتباطات باید بگم که جستجو دونش زیاد میشه هم ترکیبی هم تک فیلدی مثل یه فروشگاه آنلاین مثل دیجی کلا.
    join های زیادی هم قرار زده بشه .
    الآن من نمیدونم دیتابیس رو چطوری بسازم که بهینه ترین حالت رو داشته باشه

  7. #7

    نقل قول: دیتابیس بهینه

    مشابه سوال شما اینجا مطرح شده :
    http://serverfault.com/questions/168...s-192-trillion
    http://www.sitepoint.com/forums/show...urn-of-results

    اطلاعات فنی مثل نوع تیبل ( MyISAM و InnoDB و... ) داده شده است و همچنین نوع ایندکس گذاری .
    ولی یک راه کار مناسب برای تیبل ها که تعداد رکورد ها واقعا بالایی دارند ( چند میلیارد به بالا ) این است که اطلاعاتی که خواستگاه زیادی دارد و ممکن از در روز 2 یا 3 بار بیشتر سرچ شوند در یک تیبل دیگه نگهداری شود ممکن از در نگاه اول این کار باعث شود که اطلاعات یکپارچگی خود را از دست بده ولی در سرچ های اول فشاری که به سرور میاره را خیلی کم میکنه اگر کد در تیبل کوچک نتیجه را پیدا نکرد شروع به سرچ در جدول بزرگ تر میکنه . ( مشابه اش را عمدتا دیدید در سایتهایی که قسمت آرشیو دارند یا سرچ پیشرفته هست )

    راه کاری های فنی زیادی برای این کار موجود که باید از اهل فنش که تخصص کافی در دیتابیس دارد سوال کنید .

  8. #8

    نقل قول: دیتابیس بهینه

    منم برای طراحی سایتی با تعداد رکورد بالا نیاز به راهنمایی و بدست آوردن اطلاعات بیشتر دارم، احتمالا حداکثر 25 میلیون رکورد توی دیتابیس ذخیره بشه. اگر به نتیجه رسیدید لطفا توی این تاپیک عنوان کنید. ممنون

  9. #9
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    من مقداری تحقیق کردم فقط به چند تا نتجیه رسیدم یکی ایندکس گذاری تک فیلدی با ایندکس گذاری ترکیبی .
    نوشتن دستورات بهینه sql . برای مثال از عملگر between و like حدال امکان استفاده نشه یا معادلش به صورت بهینه نوشته بشه .
    کش کردن دیتا بیس (اگه از فریمورک php استفاده می کنید خیلی سادس)
    تعریف بهینه فیلد ها . برای مثال اگه میخواهید 0 یا 1 رو ذخیره کنید از نوع tinyint که فقط اندازه یک بیت از استفاده بشه .
    اگه دوستان راحل دیگه دارن پیشنهاد کنن
    آخرین ویرایش به وسیله under22 : شنبه 17 خرداد 1393 در 11:26 صبح دلیل: اشتباه تایپی

  10. #10

    نقل قول: دیتابیس بهینه

    این مباحث در اصل مباحث پایه ای بهینه سازی هست، با رعایت این نکات تونستید روی لوکال 5 میلیون رکورد رو به سادگی ایجاد و مدیریت کنید؟ موقع صفحه بندی یا جستجو سایت کند نمی شه؟
    آخرین ویرایش به وسیله i-php-i : شنبه 17 خرداد 1393 در 03:56 صبح

  11. #11
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    من هنوز دیتابیس رو طراحی نکردم ولی کلا اگه این نکته هایی که میگم رعایت mysql تا میلیارد رکورد هیچ مشکلی نداره .
    استفاده از stored procedure (وقتی از این استفاده می کنید برای دفعه اول کوئری رو کش میکنه و سرعت رو تا 45% بیشتر میکنه)
    یکی ایندکس گذاری تک فیلدی با ایندکس گذاری ترکیبی .
    نوشتن دستورات بهینه sql . برای مثال از عملگر between و like حدال امکان استفاده نشه یا معادلش به صورت بهینه نوشته بشه .
    کش کردن دیتا بیس (اگه از فریمورک php استفاده می کنید خیلی سادس)
    تعریف بهینه فیلد ها . برای مثال اگه میخواهید 0 یا 1 رو ذخیره کنید از نوع tinyint که فقط اندازه یک بیت از استفاده بشه .

  12. #12

    نقل قول: دیتابیس بهینه

    من هنوز دیتابیس رو طراحی نکردم ولی کلا اگه این نکته هایی که میگم رعایت mysql تا میلیارد رکورد هیچ مشکلی نداره .
    اگر نسخه رایگان و عمومی mysql بتونه این کار رو انجام بده که عالیه، منبع معتبری برای این مطلب سراغ ندارید؟
    آخرین ویرایش به وسیله i-php-i : شنبه 17 خرداد 1393 در 14:07 عصر

  13. #13
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    منابع این مطالب تو خود سایت Mysql هست . خیالتون راحت اگه اون موارد بالا رو رعایت کنید اصلا چند میلیاردم داده داشته باشید هیچ مشکلی پیش نمیاد .
    فقط تو مواردی می تونیم بگیم که باز هم موارد بال رو انجام بدیم مشکل داریم که هم داده ها خیلی خیلی زیاد باشن (برای مثال از 10 میلیاردم بیشتر باشن) هم اینکه داده ها حجیم باشن که اون موقع باید برای دیتابیس یه سرور جدا تهیه کرد .
    تازه اگه شما از stored procedure استفاده کنید غیر از این که وقتی کوئری رو دفعه دوم درخواست کنید 45% سریعتره که اینکار حمله sql injection رو صفر میکنه . (منبعش تو سایت Mysql) دو تا مزیت عمده داره

  14. #14
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    در حالت عادی با این حجم mysql جوابگو نخواهد بود.امتحان این موضوع خیلی سخت نخواهد بود.50-60 میلیون رکورد اینسرت کنید و بعدش انتخاب و....
    ببینید جواب میده یا خیر.

    در حالت غیر معمول که سراغ بحث های دیگه باید بریم که فکر کنم هزینه بر خواهد بود.وقتی یک دیتابیس رایگان عملکرد بهتری در این زمینه داره چرا از ابتدا درست انتخاب نکنید؟

    nosql واقعا ساخته شده برای دیتابیس های بزرگ.زمان بازدهی اصلا قابل مقایسه با بیشتر دیتابیس ها نیست.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    شما اشتباه می کنید . چند میلیون رکورد اصلا چیزی واسه mysql نیست تو میلیارد رکوردم اگه بهینه طراحی کرده باشید بازم جوابگو هست .
    اگه داده هاتوت دیگه از خیلی زیاد باشه مثلا بیشتر از میلیارد باید مثله فیسبوک و کلوپ اون رو رو سرور های جدا اجرا کنید تا بتواند از همه سیستم ایتفاده کنه و جوابگو باشه .
    فیسوک و کلوپ از Mysql استفاده می کنند البته فیسبوک بخشیش از Mysql هست (بیشترش با mysql هست)
    من با فردی صحبت کردم که تجربه ذخیره میلیون تو Mysql رو داشته و هیچ مشکلی نداشته
    چرا mysql رو اینقدر ضعیف جلوه می دید
    nosql برای مواقعی خوبه که طول داده ما خیلی متغییر باشه برای مثال معلوم نیست داده ما 10 میشه ی 10 مگابایت و داده های ما خیلی سنگیه البته این سنگنی از لحاظ کلی نه از لحاظ فیلدی مقادیر ما خیلی زیاد باشه

  16. #16
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    من با فردی صحبت کردم که تجربه ذخیره میلیون تو Mysql رو داشته و هیچ مشکلی نداشته
    یکی دیگه از کسایی در حال حاضر داره از mysql (در شبکه خارج از نت) ذخیره میلیونی رکورد داره خود منم!فکر کنم دیتابیس عمرش به 9-10 سالی میرسه تقریبا ازش راضیم.فکر کنم تعداد رکورد به 30 به بالا که رسید برای جستجوی ساده تا چندها دقیقه زمان میبرد مجبور شدم از هزار راه برای سبک کردن بار دیتابیس استفاده کنم و هر روز که بار دیتابیس سنگین تر میشه روز از نو روزی از نو....

    به نظر من برای به نتیجه رسیدن بحث یکی از دوستان یک جدول تک فیلدی در mysql و nosql ایجاد کنم.مقدار زیادی رکورد اینسرت کنه بعد زمان ها بزاره.

  17. #17

    نقل قول: دیتابیس بهینه

    منم مشکلم همینه حجم زیاد رکوردها هستش


    با یک فیلد فکر نکنم جواب دقیق تری بشه پیدا کرد ولی خوب یک جدول با چند میلیون رکورد


    این کوئری رو یک بار اجرا کنید :
    CREATE TABLE `table1` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

    INSERT INTO table1(id)VALUES(""),(""),(""),(""),(""),(""),("") ,(""),(""),(""),(""),(""),(""),(""),(""),(""),("") ,(""),(""),("");;



    حالا این کوئری رو 17 بار اجرا کنید تا تعداد رکوردها به 2.5 میلیون برسه
    INSERT INTO table1(id)(
    SELECT "" from table1
    )



    الان که تست میکنم روی لوکال با 2.6 میلیون رکورد برای رسیدن به آخرین رکورد زمان زیر رو دارم
    Showing rows 2621430 - 2621439  ( 2,621,440 total, Query took 1.5437 sec)


    اینم روی هاست اشتراکی تست گرفتم
    Showing rows 2621425 - 2621439 (2621440 total, Query took 1.8466 sec)




    درباره دیتابیس nosql هم اطلاعاتی ندارم

  18. #18
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    شما اگه موارد بالا رو رعایت کنید این زمان خیلی کم میشه .
    مشا تایپیک های بالا رو بخونید .
    برای مثال شما تو ساخت جدولتون اصلا index تعریف نکردید .
    وقتی ایندکس تعریف می کنید فایل ها اون فیلد به صورت شاخص گذاری ذخیره میشه که این کمک میکنه برای مثال تو 70 میلیون با 6 یا 7 مقایسه رکود مورد نظر شما رو پیدا میکنه .
    حالا غیر از ایندکس بقیه موارد رو هم رعایت کنید عالی میشه اصلا 2 یا 10 میلیون رکورد برای mysql هیچی نیست اگه بهینه طراحی کنید

  19. #19

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط under22 مشاهده تاپیک
    شما اگه موارد بالا رو رعایت کنید این زمان خیلی کم میشه .
    مشا تایپیک های بالا رو بخونید .
    برای مثال شما تو ساخت جدولتون اصلا index تعریف نکردید .
    وقتی ایندکس تعریف می کنید فایل ها اون فیلد به صورت شاخص گذاری ذخیره میشه که این کمک میکنه برای مثال تو 70 میلیون با 6 یا 7 مقایسه رکود مورد نظر شما رو پیدا میکنه .
    حالا غیر از ایندکس بقیه موارد رو هم رعایت کنید عالی میشه اصلا 2 یا 10 میلیون رکورد برای mysql هیچی نیست اگه بهینه طراحی کنید
    دوست عزیز تا اونجا که من میدونم برای فیلدی که خودش کلید هستش نیازی به ایندکس گذاری نداره (چون خودش ایندکس هست )
    موارد بالا رو هم که هی میگی اگه نگاه کنی می بینی که فقط یک فیلد هستش فقط یک فیلد که اونم اتونامبر هستش و کلید هم هستش و نوع موتور هم InnoDB هستش

  20. #20
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط nazanin_asadi_1 مشاهده تاپیک
    دوست عزیز تا اونجا که من میدونم برای فیلدی که خودش کلید هستش نیازی به ایندکس گذاری نداره (چون خودش ایندکس هست )
    موارد بالا رو هم که هی میگی اگه نگاه کنی می بینی که فقط یک فیلد هستش فقط یک فیلد که اونم اتونامبر هستش و کلید هم هستش و نوع موتور هم InnoDB هستش
    شما راست می گی من حواسم نبود .
    خب فکر کنم این نزدیک به 2 ثانیه یا 1.8 ثانیه زمان خوبی باشه به خصوص که وقتی این رو کش کنید دفعه دوم زیر نیم ثانیه بهش دسترسی پیدا می کنید و اگه این رو با stored procedure استفاده کنید بهترم میشه و یک دفعه هم تو خود Mysql کش میکنه اینطوری دو دفعه کش صورت میگیره .
    تو تالار PHP آقا رضا که سایت های بزرگی رو با بازدید بالا زدن با Mysql زدن من هم باهاشون حرف زدم میگفت تا 5 میلیون رکورد داشته دیتابیسش ولی با رعایت اصول که گفتم و یک سرور خوب با کانفیگ mysql خوب تا میلیارد رو جواب میشه داد مثل این سایت که آقار رضا زده و 5 میلیون رکورد داره . http://jahanpay.com/

  21. #21

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط under22 مشاهده تاپیک
    شما راست می گی من حواسم نبود .
    خب فکر کنم این نزدیک به 2 ثانیه یا 1.8 ثانیه زمان خوبی باشه به خصوص که وقتی این رو کش کنید دفعه دوم زیر نیم ثانیه بهش دسترسی پیدا می کنید و اگه این رو با stored procedure استفاده کنید بهترم میشه و یک دفعه هم تو خود Mysql کش میکنه اینطوری دو دفعه کش صورت میگیره .
    تو تالار PHP آقا رضا که سایت های بزرگی رو با بازدید بالا زدن با Mysql زدن من هم باهاشون حرف زدم میگفت تا 5 میلیون رکورد داشته دیتابیسش ولی با رعایت اصول که گفتم و یک سرور خوب با کانفیگ mysql خوب تا میلیارد رو جواب میشه داد مثل این سایت که آقار رضا زده و 5 میلیون رکورد داره . http://jahanpay.com/
    این شد یه چیزی سعی کن تا متن رو نخوندی جواب ندی تا اینجوری سوتفاهم پیش نیاد

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

    الان همین جدولی که ایجاد کردم توی پست 17 خوب اگه از کش بخوای استفاده کنی یعنی باید به اعزای هر درخواست یک بار کش صورت بگیره تا از دفعه دیگه از اون کشها استفاده کنه خوب حالا وقتی تعداد INSERT رکوردها بیشتر میشه اونم زمانی که داده های ثبت شده توی چند جدول مربوط به یک کالا یا شخص هستش (داده ها توی چند جدول ثبت میشه ) باز یه سری مشکلات هستش

    الان همین یک جدول رو با همون یک فیلد رو بهینش کن نتیجش رو ببینیم حالا فقط صفحه بندیش هست جستجوش و JOIN شدنش با جدولهای دیگه که بماند

  22. #22
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط nazanin_asadi_1 مشاهده تاپیک
    این شد یه چیزی سعی کن تا متن رو نخوندی جواب ندی تا اینجوری سوتفاهم پیش نیاد

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

    الان همین جدولی که ایجاد کردم توی پست 17 خوب اگه از کش بخوای استفاده کنی یعنی باید به اعزای هر درخواست یک بار کش صورت بگیره تا از دفعه دیگه از اون کشها استفاده کنه خوب حالا وقتی تعداد INSERT رکوردها بیشتر میشه اونم زمانی که داده های ثبت شده توی چند جدول مربوط به یک کالا یا شخص هستش (داده ها توی چند جدول ثبت میشه ) باز یه سری مشکلات هستش

    الان همین یک جدول رو با همون یک فیلد رو بهینش کن نتیجش رو ببینیم حالا فقط صفحه بندیش هست جستجوش و JOIN شدنش با جدولهای دیگه که بماند
    ببنید کش تو PHP میاد دفعه اول کل کوئری رو کش میکنه بعد ما یک کوئری خیلی سبکتر از کوئری اول بهش میدیم و دفعه بعد میاد اون کوری سبکه رو اجرا میکنه اگه تغییری داده نشده باشه میاد از کش میخونه اگه تغییری داده شده باشه کش رو پاک میکنه و کوئری بزرگه رو اجرا میکنه و دوباره کشش میکنه . برای مثال ما یک کوئری سنگین داری که یک join هم داره ما این رو کش میکنیم و کوئری کوچیک رو اینطوری می نویسیم
    SELECT MAX(update_time) from tb_product

    خب معلومه این کوئری خیلی خیلی سبکتره از کوئری اصلیه هست و هر دفعه این کوئری اجرا میشه تا اینکه بیاد بزرگه رو اجرا کنه اگه تغییری ایجاد نشده باشه .
    من اگه بخام این کوئری شما رو بهینه کنم اول میاد این کوئری رو تو Mysql به صورت stored procedure می نویسم و تو برنامه PHP هم میاد صداش می کنم و کشش می کنم و شرط کش هم اینگونه می نویسم . اینطوری دو دفعه کش میشه
    SELECT MAX(id) from tb_product

    به نظره بنده این میتونه بهینه باشه و تا 1 میلیاردو جوابگو هست اگه هم بیشتر شد باید خود کوئری بهینه بشه که باید با یک فرد خبره مشورت بشه
    آخرین ویرایش به وسیله under22 : چهارشنبه 21 خرداد 1393 در 15:25 عصر

  23. #23
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    برای مثال این کوئری نثبت به کوئر پایین خیلی بهینه تره و خودش رو تو حجم های بالا نشون میده
    SELECT id,name from tb_product

    این کوئری سریعتر از کوئری پایینی است .
    SELECT * from tb_product

    این یه مثال ساده بود

  24. #24

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط under22 مشاهده تاپیک
    برای مثال این کوئری نثبت به کوئر پایین خیلی بهینه تره و خودش رو تو حجم های بالا نشون میده
    SELECT id,name from tb_product

    این کوئری سریعتر از کوئری پایینی است .
    SELECT * from tb_product

    این یه مثال ساده بود
    دوست عزیز این مباحثی که شما مطرح کردید مباحث پیش پا افتاده هستش که حداقل کسایی که توی این تایپیک دارن پست میدن بیشتر این موارد رو بلد هستن


    الان من 5242880 رکورد دارم که توی همون جدولی هستش که ساختارش رو توی پست 17 گذاشتم و فقط یک فیلد داره با نام ID که هم کلیده هم ایندکس هم اتونامبره

    الان وقتی میخوام به آخرین رکورد هاش با phpmyadmin برم 5 ثانیه زمان میبره حالا اگه اینو بخوام JOIN کنم با جدول های دیگه و سطرهای دیگه هم بهش اضافه بشه دیگه باید به فکر یه سرور (یا چند سرور ) باشیم ساختار پیچیده ای نیست

  25. #25
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

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

  26. #26

    نقل قول: دیتابیس بهینه

    تیبل که در پست 17 ساخته شده در بهینه ترین حالت است و از نظر تکتنیک ساخت تیبل دیگه بهتر از این ممکن نیست !

    ولی برای افت سرعت باید راهکار پیدا کنیم .
    بهترین راه :
    کش کردن .
    کش کردن چندین نوع دارد .یک نوع ساده که اکثرا استفاده می کنند یک خروجی از دیتابیس را روی هارد نگه داری میکنند در این نوع کشها چون عملیات پردازشی mysql و تعداد کانکشن ها به دیتابیس کم شده و عملیات خواندن از فایل انجام میشود به مراتب سرعت اجرا می تواند بالا رود ( در هاستینگ های معتبر سرور mysql از سرور هاست جداست در این گونه موارد سروری که برای mysql در نظر گرفته اند از هارد های ssd استفاده می کند پس ممکن است کش کردن سرعت را کمتر نیز کند !!) .
    نوع بعدی کش ها : کش در رم RAM نمونه بارز Memcached . این گونه کش ها که نسبتا زمان کمتر از نوع اول ، کوئری را ذخیره می کنند ( زمان دست برنامه نویس است ولی عمدتا 1 دقیقا تا 1 ساعت در نظر گرفته میشود به دلایل خاص که اگر نیاز بود توضیح داده میشود ) ساختار این کش به دلیل استفاده از جدول هش و ذخیره در رم سرور سرعت را به مراتب خیلی خیلی بالا تر می برد .

    کتابخانه های وجود دارند که به accelerators معروف هستند . کاربرد اینگونه شتاب دهنده ها پیچیده است و بهترین بازدهی را از سرور دارند . یک بخش مهم در یک accelerator کش است که استفاده از آن خیلی بهینه تر از کش ها دیگر است . بخصوص http://eaccelerator.net/

    بعد از این توضیحات در خصوص سوال نحوه بهینه کردن تیبل بعد از join باید بگم که شما نتیجه پردازش شده ( یعنی عملیات تاریخ یا هر کار دیگه ای که قرار است با نتایج کوئری مذکور انجام شود ) را به صورت کش نگهداری کنید .

    در کل تا معماری کد ها و سیستم شما مشخص نشود نمیشود راهکاری مناسبی پیشنهاد داد .
    آخرین ویرایش به وسیله us1234 : پنج شنبه 22 خرداد 1393 در 15:16 عصر

  27. #27

    نقل قول: دیتابیس بهینه

    من الان همین جدولی که در پست 17 گفتم رو روی سرور هم ایجاد کردم و الان تعداد رکوردهاش رو با اجرای اون کوئری به 5 میلیون رسوندم الان بازه زمانیش برای رسیدن به آخرین صفحه از رکوردها (از داخل phpmyadmin) ما بین 3 تا 4 ثانیه هستش

    حالا این فقط یک جدول و یک فیلد هستش وای به روزی که فیلدهای دیگه ای هم باشه و JOIN هم استفاده شده باشه اون موقع فکر کنم به قول بچه ها اینتر رو بزنی بری یه دور شهر رو بگردی بیایی ببینی نتیجه استخراج شده

    هر چند باید این نکته رو هم در نظر داشت که هر که بامش بیش برفش بیشتر . اگه کسی تعداد رکوردهاش به 5 میلیون میرسه دیگه نباید روی هاست های اشتراکی بمونه (البته با توجه به کاربرانش ) باید بره سمت سرور مجازی بعد خود سرور و ...

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

    برای مثال من فکر کنم اگه به جای هاست اشتراکی از سرور مجازی استفاده کنم نتیجه حاصل شده به مراتب بهتر از این نتیجه ای خواهد بود که الان دارم

  28. #28
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: دیتابیس بهینه

    سلام به همگی
    میشه در رابطه با stored procedure یه توضیحی بدین ؟؟؟
    با تشکر

  29. #29
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط Restlesa مشاهده تاپیک
    سلام به همگی
    میشه در رابطه با stored procedure یه توضیحی بدین ؟؟؟
    با تشکر
    وقتی از stored procedure استفاده می کنید علاوه بر اینکه خطر حمله sql injection صفر میشه وقتی برای بار دوم اون رو صدا می زنید دیگه نمیاد کوئری رو اجرا کنه بلکه دفعه اول اون رو داخل خود mysql کش میکنه و باعث میشه حدودا 45% سریعتر باشه .
    اگه باز هم تو سرعت مشکل داشته باشید باید کش کنید کش تو PHP انواع زیادی سریعترینشون apc cache , memchache هست که واسه ساتی های خیلی بزرگ استفاده میشه .

  30. #30
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: دیتابیس بهینه

    طریقه استفاده از stored procedure و memchache به چه صورته ؟؟؟

  31. #31
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط Restlesa مشاهده تاپیک
    طریقه استفاده از stored procedure و memchache به چه صورته ؟؟؟
    برای استفاده از stored procedure باید اون رو مثل یک فانکشن php تو خود Mysql تعریف کنید .
    این کتاب آموزشش هست .
    لینک
    memcache اکثرا تو یک سرور جدا استفاده میشه ولی apc طبق مقایسه ها و الگوریتم هایی که داره از memcache سریعتر حدودا 3 برابر سریعتره . کلا سریعترین کشی هست که وجود داره .
    برای استفاده از هر جفتشون باید تو سرورتون نصب باشه

  32. #32
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: دیتابیس بهینه

    یه منبع آموزشی سراغ نداری برام قرار بدی ؟؟؟
    بر فرض مثال memcache و یا apc بر روی سرور نصب هستن. حالا چه طوری باید ازشون استفاده کرد ؟؟؟ آیا کلاس خاصی برای اینکار وجود داره ؟؟؟

  33. #33
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    من اول بهتون apc کش رو پیشنهاد می کنم چون هم سریعتر و هم نیاز خیلی زیاد به رم نداره چون memcache خیلی رم میخواد .
    دوم اینکه سعی کنید خودتن رو درگیر یادگیری یا نوشتن کلاسش نکنید وقتتون رو سعی کنید تا یک فریمورک PHP رو یاد بگیرید اون موقع شما فقط کش رو هر جا احتیاج داشته باشید بنویسید اون موقع فقط تو کانفیگ نوع کش رو عوض می کنید به همین راحتی .
    اکثر هاست های اشتراکی apc , memcache رو فعال نمی کنن نمی کنن ولی هاست های بریتینا apc رو براتون فعال می کنن .
    بهترین فریمورک هم برای یادگیری فعلا Yii هست . شما فقط به بازدهیش با apc و بدون apc نگاه کنید .
    لینک
    شما اگه اصول رو رعایت کنید و کش هم استفاده کنید هیچ مشکلی پیش نمیاد . من خودم چون پروژه هام خیلی سنگین نیست از کش فایل استفاده می کنم که همه هاست ها ساپورت میکنه و بازدهی خوبی هم داره ولی نه مثل کش هایی که قبلا گفته بودم .

  34. #34
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    فکر کنم خواندن این تاپیک برای همه خالی از لطف نباشه
    https://barnamenevis.org/showthread.p...A7%D8%B3%D8%AA!

  35. #35
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط under22 مشاهده تاپیک
    من اول بهتون apc کش رو پیشنهاد می کنم چون هم سریعتر و هم نیاز خیلی زیاد به رم نداره چون memcache خیلی رم میخواد .
    دوم اینکه سعی کنید خودتن رو درگیر یادگیری یا نوشتن کلاسش نکنید وقتتون رو سعی کنید تا یک فریمورک PHP رو یاد بگیرید اون موقع شما فقط کش رو هر جا احتیاج داشته باشید بنویسید اون موقع فقط تو کانفیگ نوع کش رو عوض می کنید به همین راحتی .
    اکثر هاست های اشتراکی apc , memcache رو فعال نمی کنن نمی کنن ولی هاست های بریتینا apc رو براتون فعال می کنن .
    بهترین فریمورک هم برای یادگیری فعلا Yii هست . شما فقط به بازدهیش با apc و بدون apc نگاه کنید .
    لینک
    شما اگه اصول رو رعایت کنید و کش هم استفاده کنید هیچ مشکلی پیش نمیاد . من خودم چون پروژه هام خیلی سنگین نیست از کش فایل استفاده می کنم که همه هاست ها ساپورت میکنه و بازدهی خوبی هم داره ولی نه مثل کش هایی که قبلا گفته بودم .
    تو برنامه ای که من دارم می نویسم از هیچ فریم ورک php استفاده نکردم و دستورات خام php هستش . حال اگه بخوام از کش apc استفاده کنم باید چی کار کنم ؟؟؟

  36. #36
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: دیتابیس بهینه

    یه سوال دیگه برای فیلدهایی که تنها 5 عدد 1 تا 5 رو می گیرن از نوع enum استفاده بشه بهتر و بهینه تر یا از tinyint ؟؟؟ برای فیلدهایی که بصورت boolean هستن چه طور ؟؟؟

  37. #37

    نقل قول: دیتابیس بهینه

    بچه ها با سلام
    میشه به سوال منم جواب بدین؟
    میشه از طریق صفحات php اتصال به سرور ویندوزی کرد

  38. #38

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط meysam7972 مشاهده تاپیک
    بچه ها با سلام
    میشه به سوال منم جواب بدین؟
    میشه از طریق صفحات php اتصال به سرور ویندوزی کرد
    سوال شما اصلا ربطی به این تایپیک نداره رعایت کنید خواهشان

    درباره سوالت هم با php چطوری میخوای به سرور وصل بشی ؟ اصلا قضیه چیه سوالتو توی یه تایپیک جدید کامل توضیح بده اینجا دیگه کامنت نزار

  39. #39
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: دیتابیس بهینه

    نقل قول نوشته شده توسط Restlesa مشاهده تاپیک
    یه سوال دیگه برای فیلدهایی که تنها 5 عدد 1 تا 5 رو می گیرن از نوع enum استفاده بشه بهتر و بهینه تر یا از tinyint ؟؟؟ برای فیلدهایی که بصورت boolean هستن چه طور ؟؟؟
    متاسفانه بنده نمی دونم که اگه دستی خودمو بخواهیم از apc استفاده کنیم به چه صورت هست ولی میتونی تو سایت خود Php.net بری بخونی .
    برای انتخاب درست نوع فیلدت یه نگاه به لینک زیر بکن خودت متوجه میشی .
    لینک
    در ضمن اگه چیزی که میخای ذخیره کنی به صورت رشته بود و طولش تقربا همیشه یکی بود و یکی یا دو تا حرف بالا پایین بود حتما از char استفاده کن . چون char طولش ثابته و متغییر نیست بخاطر همین یه خورده حجم دیتابیست زیاد میشه ولی در عوض سرعتت میره بالا تر نسبت به varchar

  40. #40
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: دیتابیس بهینه

    یه سوال دیگه برای فیلدهایی که تنها 5 عدد 1 تا 5 رو می گیرن از نوع enum استفاده بشه بهتر و بهینه تر یا از tinyint ؟؟؟ برای فیلدهایی که بصورت boolean هستن چه طور ؟؟؟
    تست سرعت enum,tinyint,bit

    Avg 100 iteration time, 10,000 inserts (lower better)
    data type myisam memory innodb
    enum 0.9934 0.8971 tba
    bit 1.009 0.9056 tba
    tinyint 1.0335 0.8987 tba
    Avg 100 iteration 10k ins Inserts/Second (higher better)
    data type myisam memory innodb
    enum 10066.4385 11147.02932 tba
    bit 9910.8028 11042.4028 tba
    tinyint 9675.8587 11127.1837 tba

تاپیک های مشابه

  1. طراحی و ساخت یک دیتابیس بهینه
    نوشته شده توسط Sir-Programmer در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 13 اردیبهشت 1393, 19:42 عصر
  2. حرفه ای: چند سوال برای ایجاد دیتابیس بهینه
    نوشته شده توسط idocsidocs در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 13 مرداد 1391, 19:48 عصر
  3. پاسخ: 0
    آخرین پست: پنج شنبه 22 بهمن 1388, 13:12 عصر
  4. بهینه سازی در یک موضوع مربوط به دیتابیس(؟)
    نوشته شده توسط koosha system در بخش ASP.NET Web Forms
    پاسخ: 23
    آخرین پست: سه شنبه 09 بهمن 1386, 13:53 عصر
  5. نمونه دیتابیس بهینه شده
    نوشته شده توسط ealireza در بخش SQL Server
    پاسخ: 3
    آخرین پست: جمعه 05 مرداد 1386, 23:28 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •