مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rewrew

عضویت از 1397/03/08

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

  • دوشنبه 9 دی 1398
  • 13:25
تشکر میکنم

با عرض سلام و خسته نباشید خدمت اساتید گرامی، من یک صفحه دارم که شامل دو بخش و یک دیتابیس هست و با 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 تغییر بدم ؟

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)