آشنایی با محدودیت ها و پاسخگویی پایگاه داده MySQL

در کنار تعداد ردیف ها، محدودیت های دیگری نیز وجود دارد. برای مثال ممکن است شما از یک هاست با محدودیت منابع استفاده کنید که بسیار در سرعت پایگاه داده MySQL شما تاثیر داشته باشد . به طور مثال شما می توانید یک هارد دیسک یا هاست 300 گیگابایتی داشته باشید که فقط 300 میلیون ردیف را ذخیره کند، اگر هر ردیف 1 کیلوبایت باشد.
حداکثر تعداد سوابق (records) در جدول (database) پایگاه داده MySQL
اگر نوع جدول دیتابیس را را برابر با int قرار دهید می توانید مقدار 4,294,967,295 record را در هر جدول ذخیره کنید . اگر نوع جدول دیتابیس را را برابر با bigint قرار دهید می توانید مقدار 18,446,744,073,709,551,615 record را در هر جدول ذخیره کنید . راه حل های دیگری هم برای استفاده دیتاهای سنگین در دیتابیس MySQL هست ! اما لطفا دقت بفرمایید که شما می توانید بیش از یک ردیف برای ذخیره دیتا های خود استفاده کنید و نیازی نیست که دیتای زیادی را فقط در یک ستون قرار بدهید . و نیازی نیست که کلید هر ستون را عدد قرار دهید می توانید از فرمت CHAR 100 نیز استفاده کنید .
تنها پایگاه داده MySQL را در نظر نگیرید گاهی منبع دیگری نیز در سرعت سهم اند!
در کنار تعداد ردیف ها، محدودیت های دیگری نیز وجود دارد. برای مثال ممکن است شما از یک هاست با محدودیت منابع استفاده کنید که بسیار در سرعت پایگاه داده MySQL شما تاثیر داشته باشد . به طور مثال شما می توانید یک هارد دیسک یا هاست 300 گیگابایتی داشته باشید که فقط 300 میلیون ردیف را ذخیره کند، اگر هر ردیف 1 کیلوبایت باشد. محدودیت های MySQL واقعا کم است برای دیدن منابع بیشتر لینک مقابل را دنبال کنید : MySQL Source-Configuration Options
استفاده از موتور InnoDB یکی از بهترین راه ها و پیشنهاد ما !
موتور ذخیره سازی InnoDB، به نظر نمی رسد محدود به تعداد ردیف ها باشد، اما دارای محدودیتی در اندازه جدول 64 ترابایت است. چند ردیف به این بستگی دارد به اندازه هر ردیف.
مدیریت پیشرفته و بهینه سازی ٬ پایگاه داده MySQL برای متخصصین
ما پیشنهاد می کنیم هرگز داده ها را حذف نکنید. فکر نکنید که جداول بیش از 1000 تا را به طور مثال از آخر جدول دیتابیس خود حذف کنید. شما باید منطق کسب و کار واقعی را در نظر داشته باشید، به طور مثال چه مدت این کاربر غیرفعال یا فعال است. به عنوان مثال، اگر فعالیت کاربر طولانی تر از 1 سال باشد، آنها را در یک جدول دیگر قرار دهید. شما این را می توانید هفتگی یا ماهانه در یک دیتابیس کاملا جداگانه نگهداری کنید . هنگامی که شما در بین بسیاری از ردیف ها در جدول خود قرار می گیرید، باید از جداول و یا پارتیشن بندی جدا شوید و داده های قدیمی را در سال های گذشته مانند users_2011_jan، users_2011_feb قرار دهید یا از شماره های ماه استفاده کنید. برای اینکار می توانید از زمان تاریخ ساخته شدن هر جدول استفاده کنید که به صورت خودکار در ابتدا امر همیشه ایجاد می شود . بدین صورت اگه کاربر بعد دو سال بخواهد از دیتایقدیمی خود استفاده کند شما به راحتی می توانید از دیتابیس ها جداگانه در هاست ها و وسرور های جداگانه فراخوانی کنید . در این موارد نیازی هم نیست که سرعت فراخوانی دیتا شما بسیار بالا باشد 🙂
چند نکته مهم برای استفاده از InnoDB در دیتابیس MySQL
- در InnoDB، با محدودیت در اندازه جدول 64 ترابایت است .
- محدودیت اندازه ردیف MySQL از 65،535، ممکن است 1،073،741،824 ردیف ارتقا پیدا کند .
این دو مورد حداقل تعداد سوابق با استفاده از حداکثر حداکثر اندازه ردیف است. با این حال، اگر ردیف اندازه کوچکتر باشد، می توانید رکوردهای بیشتری اضافه کنید.
آیا بد است که تعداد زیادی جداول در پایگاه داده داشته باشیم؟
آیا بهتر نیست به جای استفاده از تعداد زیادی جدول (tables) از چند دیتابیس استفاده کنیم ؟
در جواب پاسخ این دو سوال باید گفت : استفاده از جدول های (tables) زیاد هیچ مشکلی در بهینه بودن کوئری ها به وجود نمی آورد ! و شما اجازه دارید تا 4 ملیارد جدول ایجاد کنید ! در واقع سرور هیچ محدودیتی برای ایجاد (tables) در دیتابیس ندارد . شما با جدا کردن جداول خود در چند پایگاه داده، کارایی بهینه ای نخواهید داشت. برای اینکه بدانید تا چه تعداد tables عملکرد دیتا بیس شما بهینه است باید گفت تا حدود 40-50 هزار جدول . لینک سایت صفحه رسمی mysql و توضیحات در مورد محدودیت های تعداد Tables در دیتابیس
mysql : # MySQL has no limit on the number of databases. The underlying file system may have a limit on the number of directories. MySQL has no limit on the number of tables. The underlying file system may have a limit on the number of files that represent tables. Individual storage engines may impose engine-specific constraints.
InnoDB
permits up to 4 billion tables.
دیدگاهتان را بنویسید