PDA

نسخه کامل مشاهده نسخه کامل : چند عمل I/O انجام می شه؟



قله بلند
26-10-2010, 00:27
سلام دوستان
سوالی که دارم یه سوال پایگاه داده ای هست ولی عملی که انجام می شه و محاسبه ای که باید صورت بگیره به ورودی/ خروجی یا همون I/O مربوط می شه.

فرض کنید سه جدول با نام های S، P و SP داریم.

1-S جدولی با کلید اصلی S# است که حاوی رکوردهایی برای مشخصات عرضه کنندکان قطعات است. این جدول حاوی 100 رکورد است و مثلاً در فایل A ذخیره شده است.

2-P جدولی با کلید اصلی P# است که حاوی رکوردهایی برای مشخصات قطعات است. (مورد مساله ما نیست)

3-SP جدول رابطه بین این دو جدول پایه است و حاوی کلیدهای S# و P# است. این جدول مثلاً در فایل B ذخیره شده است و حاوی 10000 رکورد است.

مساله: ما می خواهیم این دو جدول را با هم join کنیم. پس باید آنها را از فایل خواندهو به حافظه اصلی بیاوریم پس باید 10000+100 عمل ورود به حافظه انجام دهیم. حالا سوال من اینجاست که برای عمل الحاق که 10000*100 عملیات باید انجام شود، عدد 10000*100 هم جزو اعمال I/O است؟ در اینجا مگر دو جدول در حافظه بار گیری نشده اند پس دیگر عملیات I/O انجام نمی شود ولی در کتاب این عملیات را به عنوان عملیات I/O در نظر گرفته است. چرا؟

عین متن کتاب:
الحاق SP و S روی S#: این مرحله شامل خواندن 10000 حمل است؛ خواندن هر 100 عرضه کننده به تعداد 10000 بار(یک بار به ازای هر 10000 بار حمل)؛ با ساختن نتیجه میانی شامل 10000 چندتایی الحاق شده و نوشتن آن 10000 چندتایی الحاق شده بر روی دیسک است.یعنی در حالی که جدول S در فایل هست ما یکی یکی رکوردهایش را می خوانیم و با 10000 رکورد جدول SP که در حافظه اصلی قرار دارد، مقایسه می کنیم؟ یعنی ما جدول S را به حافظه اصلی بار نمی کنیم؟