افزايش سرعت insert در ديتابيس mysql - تفاوت موتورهاي InnoDB و MyISAM و عمليات Bulk Insert
چه عنوان هيبريدي شد ! .
خلاصه و مفيد :
وقتي يه تيبل ميسازيد هميشه مواظب باشيد كه موتور ذخيره سازي مناسب با كاري كه اون تيبل ميخواد انجام بده رو انتخاب كنيد
اگر با phpmyadmin (حفظ الله من التحريم) كار ميكنيد و ديفالت روي InnoDB هست مواظب باشيد كه چيكار داريد ميكنيد كلي مقاله خوب و خلاصه در نت هست ميتونين بخونين كه كجا بايد از اين استفاده كنيد كجا از MyISAM
حالا منم اينجا يه چندتا فرقش رو ميگم
در MyISAM بحث كليد خارجي يا ترنزكشن وجود نداره كه البته خيلي مهمه اما
سرعت كار اون بسيار بيشتر از نوع Innodb هست .
همچنين بر خلاف InnoDB كه قفل كردن اون
ركورد بيس هست ايشون
تيبل بيس هستند ! يعني براي هر عمليات اينسرت يا اپديت كل تيبل قفل ميشه تا ايشون كارش رو انجام بده بعد دوباره تيبل در دسترس كوري هاي بعدي قرار ميگيره يعني اگر همزمان 10 يوزر بخوان يه چيزي رو در تيبل شما درج كنند بايد برن توي صف تا دونه دونه كارشون انجام بشه در حالي كه در innodb فقط ركورد مربوطه قفل ميشه و اگر اون 10 درخواست مربوط به يك ركورد خاص نباشن هر 10 تا همزمان انجام ميشن
همچنين در MyIsam تعداد ركوردهاي يك جدول
ذخيره ميشه و شما در دستور select count(*) كه استفاده ميكنيد اين موتور هر بار ركوردها رو شمارش نميكنه بلكه تعدادش رو ذخيره كرده و به شما پس ميده (خوبه !)
اما در انواع ديگر موتور ها هر بار بايد سرشماري بشه :
نقل قول:
MyISAM stores row count. Other storage engines like InnoDB do not store row counts and will count all rows each time. – The Scrum Meister
|
اما تفاوت اصلي بعدي
FULLTEXT indexing هست كه در MyISAM ساپورت ميشه اما در Innodb ساپورت نميشه (ميتونيد بخونيد كه فول تكست سرچ چيه ) .
در پست بعدي تجربه خودم رو مينويسم در مورد اين دو
همچنين بالك اينسرت