درباره نویسنده

مسعود طاهری

مسعود طاهری

عاشق علیرضا (پسرم) و همسرم. در ضمن SQL Server را هم دوست دارم.

12 Comments

  1. داوود طاهرخانی

     ممنون مهندس

    خیلی خیلی جامع و روشن بود
    پاسخ دادن
  2. علی یگانه مقدم

    علی یگانه مقدم

    ممنون آموزش خوبی بود و خیلی ساده بیانش کرده بودید و کاربرد عملی زیادی هم داره

    پاسخ دادن
  3. عاطفه حسن پور

    عاطفه حسن پور

     ممنون جناب طاهری اموزش خوبی بود

    پاسخ دادن
  4. سعید شکری

    سعید شکری

     سلام
    این مبحث isolation level خیلی مبحث جالبیه و میتونه تا حدودی جلوی deadlock رو بگیره
    اگر ما یه جدول خیلی پرکاربرد داشته باشیم و isolation level رو روی حالت uncommited بزاریم مشکلی پیش میاد؟
    اگر  phantom read اتفاق بیفته مشکلی داره؟

    پاسخ دادن
    1. مسعود طاهری

      مسعود طاهری

      بله استفاده مناسب از Isolation Level می تواند جلوی Deadlock را بگیرد. در ضمن یادتون باشه از Isolation Level نوع Uncommitted استفاده کنید تمامی مشکلات همزمانی را خواهید داشت.

      فیلم مسابقه و جواب آن را نگاه کنید. در کوئری مربوط به آن از With (NoLock) استفاده کرده ایم عملکرد آن دقیقا مثل Isolation Level نوع Uncommitted می باشد. 
      بهترین حالت برای پروژه ها 
      1- ReadCommitted
      2-SnapShot (با توجه به اینکه از TempDB زیاد استفاده می شود. بهتر است که تنظیمات اصولی برای TempDB انجام شود.)
      به زودی یک دوره 4 جلسه ای در زمینه افزایش سرعت کوئری ها برگزار خواهیم کرد. در این دوره این موارد را به خوبی بررسی خواهیم کرد.
      پاسخ دادن
  5. MEHDI

    MEHDI

      سلام
    ضمن تشکر از مقاله خوبتون.مقاله ای هم در باب نرمال سازی داده ها در sql ارائه کنید

    پاسخ دادن
  6. پیام

       سلام مهندس
    واقعا ممنون
    من چند روزه دارم دنبال این مطالب میگردم
    هیچ جا این جو راحت و صریح توضیح ندادن
    واقعا مرسی

    پاسخ دادن
  7. حسن ضرابی

    حسن ضرابی

       با سلام و خسته نباشید

    مطالب خیلی خوب توضیح داده شده بود

    از بابت این آموزش بسیار بسیار مفید خیلی مچکرم

    پاسخ دادن
  8. علی

    خیلی عالی بود منون از شما

    پاسخ دادن
  9. علی

    سلام مطالب سایتتون رو دیدم. فوق العاده س توی سایتای فارسی. واقعا تبریک میگم که همچین سایت تخصصی و موفقی دارید.
    و یک سوال هم از خدمتتون دارم :
    دو تا جدول داریم مثلا فاکتور و ریزخرید(اینطور فرض کنید چون توضیح جداول اصلی خیلی زمان بره). با صدور فاکتور، به تعداد مشخص و با آیدی های متوالی، ریزخرید توی جدول خودش ایجاد میشه. میخوایم طوری باشه که این توالی حفظ بشه! فاکتور حاوی “تعداد، ابتدا و انتها” واسه ریزخریدهاش هست. واسه همین باید این توالی حفظ بشه.
    سوالی که از خدمتتون دارم اینه که چطور باید اینکار رو کرد؟ بیشتر دغدغه م روی همزمانی درخواستها به دیتابیس هست.(موقع اینزرت و البته احتمالا حذف. البته ریزخریدها ثابت هستن و حذف و اضافه شدنشون تابع خود فاکتور هست! یعنی تقریبا میشه گفت ثابت هستن به ازای یک فاکتور)
    از اونجایی که تخصص روی SQL ندارم، روش ابتدایی که به ذهنم رسیده بود، یک جدول اضافی با یک فیلد بیتی برای لاک کردن!!! بود که امیدوارم زیاد نخندید بهش! 🙂
    پیشاپیش متشکر از راهنماییتون…

    پاسخ دادن
    1. فرید طاهری

      فرید طاهری

      با سلام و تشکر از نظر شما.

      برای طراحی جدول فاکتور شما باید به روش زیر اقدام کنید:
      1. یک جدول به عنوان Master باید داشته باشید که اطلاعات (ID مشتری، ID فاکتور، تاریخ فاکتور، مبلغ کل فاکتور، شماره فاکتور) داشته باشد.
      2. یک جدول به عنوان Detail باید داشته باشید که اطلاعات ( ID , Detail ID فاکتور، ID کالا، تعداد کالا، مبلغ کالا، مبلغ کل هر سطر (تعداد * مبلغ کالا)) را داشته باشید.

      کلید اصلی در جدول Master عبارت است از ID فاکتور و کلید خارجی در جدول Detail عبارت است از ID فاکتور

      سعی کنید از TVP استفاده کنید تا مشکلات همزمانی و Lock را نداشته باشید.

      موفق باشید.

      پاسخ دادن
  10. محمدحسین فخرآوری

    درود
    عالی

    پاسخ دادن

ارسال نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق مادی و معنوی این وب سایت متعلق به نیک آموز می باشد.
این سایت توسط تیم آموزش برنامه نویسی نیک آموز مدیریت می شود.

دانلود فیلم‌ وبینارهای نوروزی نیک آموز | دانلود کنید، تماشا کنید، لذت ببرید
دانلود تمام فیلم ها بصورت رایگان
close-image