eshpilen
دوشنبه 31 شهریور 1393, 19:58 عصر
فرض کنید یک کوئری خواندن (select) و یک کوئری نوشتن (update) بطور همزمان به MySQL داده میشن (فرضا از جانب دو پراسس جداگانه) که هر دو روی یک رکورد یکسان عمل میکنن. فرضا کوئری update مقدار تمام فیلدهای رکورد مورد نظر رو تغییر میده.
سوال اینه که، فرض اصلا با احتمال یک در میلیون، آیا ممکنه کوئری update در اطلاعاتی که کوئری select میخونه موجب خرابی بشه؟
منظورم اینه که طوری بشه که رکوردی که کوئری select میخونه مقدار چند فیلدش برابر مقدارهای اونا قبل از اجرای کوئری update باشه و مقدار چند فیلد دیگرش برابر مقدارهای بعد از اجرای کوئری update باشه.
ضمنا نوع انجین/جدول استفاده شده میتونه MyISAM باشه (MyISAM از ترنزکشن پشتیبانی نمیکنه و ACID compliant نیست).
البته منطق و اطلاعات من تا همینجا میگه که چنین چیزی به احتمال زیاد غیرممکنه و MySQL خودش همیشه و بطور خودکار با مکانیزم هایی مثل قفل های درونی که داره از اجرای همزمان/تداخل اینطور کوئری ها جلوگیری میکنه، ولی در این زمینه 100% مطمئن نیستم و سند و دلیل قاطع ندارم و سرچ هم کرم و چند منبع خوندم و حتی در «اینجا (http://dba.stackexchange.com/questions/76990/is-reading-a-single-record-always-an-atomic-operation)» هم مطرح کردم ولی پاسخ دقیق و روشن و قاطع و سند تردیدناپذیری رو که میخواستم هنوز پیدا نکردم. بخاطر همین گفتم اینجا هم این سوال رو به اشتراک بذارم.
سوال اینه که، فرض اصلا با احتمال یک در میلیون، آیا ممکنه کوئری update در اطلاعاتی که کوئری select میخونه موجب خرابی بشه؟
منظورم اینه که طوری بشه که رکوردی که کوئری select میخونه مقدار چند فیلدش برابر مقدارهای اونا قبل از اجرای کوئری update باشه و مقدار چند فیلد دیگرش برابر مقدارهای بعد از اجرای کوئری update باشه.
ضمنا نوع انجین/جدول استفاده شده میتونه MyISAM باشه (MyISAM از ترنزکشن پشتیبانی نمیکنه و ACID compliant نیست).
البته منطق و اطلاعات من تا همینجا میگه که چنین چیزی به احتمال زیاد غیرممکنه و MySQL خودش همیشه و بطور خودکار با مکانیزم هایی مثل قفل های درونی که داره از اجرای همزمان/تداخل اینطور کوئری ها جلوگیری میکنه، ولی در این زمینه 100% مطمئن نیستم و سند و دلیل قاطع ندارم و سرچ هم کرم و چند منبع خوندم و حتی در «اینجا (http://dba.stackexchange.com/questions/76990/is-reading-a-single-record-always-an-atomic-operation)» هم مطرح کردم ولی پاسخ دقیق و روشن و قاطع و سند تردیدناپذیری رو که میخواستم هنوز پیدا نکردم. بخاطر همین گفتم اینجا هم این سوال رو به اشتراک بذارم.