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

نام تاپیک: سوال در ارتباط با موتور دیتابیس myisam و innodb

  1. #1

    سوال در ارتباط با موتور دیتابیس myisam و innodb

    با عرض سلام و خسته نباشید خدمت اساتید گرامی، من یک صفحه دارم که شامل دو بخش و یک دیتابیس هست و با php و mysqli کار میکنم؛ در این سیستم یک دیتابیس سنگین دارم که تا الان حدود 2 میلیارد رکورد در اون ذخیره شده که شامل پنج ستون هست که به شکل زیر هستند:
    1- فیلد عددی int(10) بصورت Primary و AUTO_INCREMENT و unsigned که یک شناسه عددی به هر رکورد جدید داده میشه بصورت افزایشی خودکار
    2- فیلد عددی int(10) بصورت unsigned که زمان یونیکس 10 رقمی که خروجی تابع time() هست در اون ذخیره میشه و زمان ثبت یا آخرین آپدیت رکورد هست
    3- فیلد عددی int(10) بصورت unsigned که در اون تعداد مرتبه‌ای که رکورد فراخوانی شده رو ثبت میکنم و به ازای هر مرتبه که اون رکورد فراخوانی بشه یک عدد بهش اضافه میشه
    4- فیلد char (39) که یک رشته ترکیبی از حروف و عدد هست که غیر تکراری هست برای هر رکورد و این ستون بصورت index تعریف شده که مبنای جستجوی مقادیر هست برای کاری که انجام میدم
    5- فیلد varchar (13) که یک مقدار آزاد از 4 تا 13 کاراکتر رو تشکیل میده

    ستون چهارم مقدار hash شده متن موجود در ستون پنجم هست؛ نحوه عملکرد این سیستم به این شکل هست که دو بخش اصلی داریم یکی جستجو و یکی درج مقدار جدید؛ عبارت 39 کاراکتری جستجو میشه و اگر در دیتابیس وجود داشت، مقدار ستون پنجم اون رکورد نمایش داده میشه و در ستون سوم یک عدد به تعداد مرتبه فراخوانی اضافه شده و در ستون دوم زمان همون لحظه ثبت میشه؛ بخش دیگر این سیستم درج مقادیر جدید هست که یک متن دلخواه 4 تا 13 کاراکتری دریافت میشه و hash میشه به 39 کاراکتر و در نهایت در دیتابیس ذخیره میشه.


    جهت درک بهتر تناسب اضافه شدن رکورد جدید به خواندن اطلاعات، این تناسب به صورت یک به 25 هست. مثلاً بطور میانگین در هر دقیقه 1 رکورد جدید به سیستم اضافه میشه و 25 رکورد هم در همان یک دقیقه جستجو میشه. قبلاً سرعت دیتابیس بسیار بالاتر بود اما الان مطلوب نیست و تمایل دارم دیتابیس را بهینه تر کنم.

    سوال اول: آیا تعریف نوع ستونها مناسب هست بر اساس کاری که انجام میشه ؟
    سوال دوم: با توجه به اینکه ستون اصلی من ستون چهارم char (39) هست، آیا کار درستی هست که اون رو index کردم؟
    سوال سوم: آیا اینکه یک ستون primary و یک ستون index دارم باعث کند شدن دیتابیس میشه یا برعکس باعث بهبود سرعت میشه؟
    سوال چهارم: با توجه به توضیحات بالا موتور myisam که فعال هست مناسب هست یا باید اون رو به innodb تغییر بدم ؟

  2. #2

    نقل قول: سوال در ارتباط با موتور دیتابیس myisam و innodb

    نقل قول نوشته شده توسط hgfhjgjh مشاهده تاپیک
    با عرض سلام و خسته نباشید خدمت اساتید گرامی، من یک صفحه دارم که شامل دو بخش و یک دیتابیس هست و با php و mysqli کار میکنم؛ در این سیستم یک دیتابیس سنگین دارم که تا الان حدود 2 میلیارد رکورد در اون ذخیره شده که شامل پنج ستون هست که به شکل زیر هستند:
    1- فیلد عددی int(10) بصورت Primary و AUTO_INCREMENT و unsigned که یک شناسه عددی به هر رکورد جدید داده میشه بصورت افزایشی خودکار
    2- فیلد عددی int(10) بصورت unsigned که زمان یونیکس 10 رقمی که خروجی تابع time() هست در اون ذخیره میشه و زمان ثبت یا آخرین آپدیت رکورد هست
    3- فیلد عددی int(10) بصورت unsigned که در اون تعداد مرتبه‌ای که رکورد فراخوانی شده رو ثبت میکنم و به ازای هر مرتبه که اون رکورد فراخوانی بشه یک عدد بهش اضافه میشه
    4- فیلد char (39) که یک رشته ترکیبی از حروف و عدد هست که غیر تکراری هست برای هر رکورد و این ستون بصورت index تعریف شده که مبنای جستجوی مقادیر هست برای کاری که انجام میدم
    5- فیلد varchar (13) که یک مقدار آزاد از 4 تا 13 کاراکتر رو تشکیل میده

    ستون چهارم مقدار hash شده متن موجود در ستون پنجم هست؛ نحوه عملکرد این سیستم به این شکل هست که دو بخش اصلی داریم یکی جستجو و یکی درج مقدار جدید؛ عبارت 39 کاراکتری جستجو میشه و اگر در دیتابیس وجود داشت، مقدار ستون پنجم اون رکورد نمایش داده میشه و در ستون سوم یک عدد به تعداد مرتبه فراخوانی اضافه شده و در ستون دوم زمان همون لحظه ثبت میشه؛ بخش دیگر این سیستم درج مقادیر جدید هست که یک متن دلخواه 4 تا 13 کاراکتری دریافت میشه و hash میشه به 39 کاراکتر و در نهایت در دیتابیس ذخیره میشه.


    جهت درک بهتر تناسب اضافه شدن رکورد جدید به خواندن اطلاعات، این تناسب به صورت یک به 25 هست. مثلاً بطور میانگین در هر دقیقه 1 رکورد جدید به سیستم اضافه میشه و 25 رکورد هم در همان یک دقیقه جستجو میشه. قبلاً سرعت دیتابیس بسیار بالاتر بود اما الان مطلوب نیست و تمایل دارم دیتابیس را بهینه تر کنم.

    سوال اول: آیا تعریف نوع ستونها مناسب هست بر اساس کاری که انجام میشه ؟
    سوال دوم: با توجه به اینکه ستون اصلی من ستون چهارم char (39) هست، آیا کار درستی هست که اون رو index کردم؟
    سوال سوم: آیا اینکه یک ستون primary و یک ستون index دارم باعث کند شدن دیتابیس میشه یا برعکس باعث بهبود سرعت میشه؟
    سوال چهارم: با توجه به توضیحات بالا موتور myisam که فعال هست مناسب هست یا باید اون رو به innodb تغییر بدم ؟
    باسلام ظاهرا نبايد مشكلي داشته باشد اما بهتر است از همان فيلدي كه UNIQUE است رو به عنوان ايندكس و كليد قرار بديد

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

  1. مقاله: تفاوت myISAM و innoDB در موتور ذخیره سازی پایگاه داده !
    نوشته شده توسط pani.khoram در بخش MySQL
    پاسخ: 8
    آخرین پست: یک شنبه 23 شهریور 1393, 14:48 عصر
  2. چرا در موتور innodb در MYsql نمی توان Optimise کرد . ؟
    نوشته شده توسط davood01 در بخش MySQL
    پاسخ: 0
    آخرین پست: شنبه 28 دی 1392, 08:21 صبح
  3. سوال: myisam یا innodb
    نوشته شده توسط lord_viper در بخش PHP
    پاسخ: 24
    آخرین پست: چهارشنبه 10 مهر 1392, 17:37 عصر
  4. بکاپ سریع از دیتابیس های ومپ با انجین innoDB
    نوشته شده توسط M.Rahi در بخش MySQL
    پاسخ: 1
    آخرین پست: دوشنبه 20 شهریور 1391, 20:12 عصر
  5. بکاپ سریع از دیتابیس های ومپ با انجین innoDB
    نوشته شده توسط M.Rahi در بخش PHP
    پاسخ: 5
    آخرین پست: یک شنبه 19 شهریور 1391, 22:09 عصر

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

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

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