TGViewer
کدهالیک | codehalic کدهالیک | codehalic @codehalics · 4.15K subscribers
Post #733 595
کدهالیک | codehalic چه راهی وجود داره که اسیر این داستان نشیم دقیقا متضاد این عمل رو انجام بدیم که بهش میگن Claim-Then-Act اول تصاحب کن، بعد انجام بده برای حل این مشکل، ما باید قانون بازی رو عوض کنیم. به جای اینکه فقط «نگاه کنیم»، باید تو همون نگاه اول صندلی رو «رزرو و قفل»…
بچه‌ها، شاید بپرسید وقتی دو تا درخواست تو یک نانوثانیه به دیتابیس می‌رسن، دیتابیس چطور جادو می‌کنه که همزمانی (Concurrency) پیش نمیاد؟ راز دیتابیس در دو کلمه خلاصه می‌شه: B-Tree Index و Latches

وقتی ما یک ستون رو یونیک می‌کنیم، دیتابیس تو پس‌زمینه یک ساختار درختی (B-Tree) براش می‌سازه. وقتی دو درخواست کاملاً همزمان می‌خوان یک کلید (مثلاً شماره تراکنش) رو تو این درخت ثبت (Insert) کنن، موتور دیتابیس (مثل InnoDB در MySQL) برای اینکه درختش به هم نریزه، از قفل‌های بسیار سبک و فوق‌سریعی در سطح حافظه (RAM) استفاده می‌کنه که بهشون میگن Latch یا Mutex.

این قفل‌ها اونقدر پایین‌رده هستن که مستقیماً با دستوراتِ سخت‌افزاریِ CPU (مثل پردازش‌های Compare-And-Swap) کار می‌کنن. یعنی در سطح فیزیکیِ پردازنده، محاله دو تا Thread بتونن همزمان یک خانه از حافظه رو تغییر بدن.

درخواست اول با اختلاف یک کلاکِ پردازنده (Clock Cycle) قفل (Latch) رو می‌گیره، کلید رو تو درختِ ایندکس می‌نویسه و قفل رو ول می‌کنه. درخواست دوم که پشت این گیتِ سخت‌افزاری منتظر مونده بود، وقتی وارد می‌شه می‌بینه کلید همون یه لحظه پیش نوشته شده؛ پس عملیاتش رو لغو می‌کنه و خطای Duplicate Key میده!»

پس در نهایت اتمیک بودن در دیتابیس یک مفهوم بیشتر سخت افزاریه تا نرم افزاری خیلی اینو تو مصاحبه ها میبینم میپرسن ! به یادتون بسپارید لطفا

@codehalics | کدهالیک
  • ❤ 3
More from @codehalics
  1. Oct 7, 2026این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه ! اول DIP (مع…
  2. Oct 7, 2026توی NestJS اینکه چند تا پوشه مثل Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چ…
  3. Oct 7, 2026توی نسخه جدید 16.4 نکس‌جی‌اس، مهم‌ترین خبر اینه که مدل جدید Cache Components بالاخره کامل…
  4. Oct 5, 2026یه اتفاق جالب افتاده: یه برنامه‌‌نویس موقع ساخت پروژه دات‌نت با Claude متوجه شده هوش مصنوع…
  5. Oct 5, 2026دوره جامع معماری نرم‌افزار منتشر شد. در این آموزش ۴ ساعته و فشرده، مباحث Clean Architectur…
  6. Oct 4, 2026این پروژه خیلی جالب بود یه نفر نرم افزار مدیریت انبار رو از یه کار خشک و تکراری به یه بازی…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →