نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
ما کلا یک Buffer داریم که اونهم به این صورت عمل میکنه که Page های فایل Data رو خوانده و در RAM نگهداری میکند . اونهم برای سرعت عمل بیشتر. اگر قرار باشه SQL Server برای نوشتن با RAM کار کنه که مشکل ساز خواهد شد. تمام عملیات نوشتن در فایل LOG ذخیره میشه و اگر Transaction کامل انجام بشه دستورات Commit شده و در فایل data نوشته می شوند در غیر اینصورت برگشت داده خواهند شد.
حالا شما وقتی دارید درون یک Transaction یک عملیاتی رو انجام میدید معمولا جدول Lock میشه (البته میتونید نوع قفل شدن رو نیز مشخص کنید) و در Select کردن کاربر میتونه Data رو به همون روشی که عرض کردم بخونه.
موفق باشید
ولی برای نوشتن از RAM هم استفاده میشه،پس وظیفه Database Writer process چیست؟
datafile ها که در RAM قرار دارند اگر تغییر کنند مگر در همون datafile ها update نمی شند و بعد توسط writer در database ذخیره میشند.
موردی که میزان Insert یا Update بیش از حجم Buffer ها تعریف شده باشه،درست، برای نوشتن یک راست میره سراغ hard،دستورات توسط log writer از Log Buffer بروی Log نوشته می شود،وما بدون اینکه داده ای در Database ذخیره شده باشد پیغام Commit Successfully را می بیینیم،بعد بمرور زمان اطلاعات روی دیتابیس ذخیره میشود یا Rollback میشند.