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

مهدی شیشه بری شیشه بری

مهدی شیشه بری

خوب به‌خاطر دارم، اوایل دهه هفتاد که سال سوم دبیرستان بودم درسی اختیاری داشتیم با عنوان کامپیوتر و مبانی انفورماتیک. در یکی از جلسات همان کلاس، معلم‌مان وقتی داشت درباره بانک‌های اطلاعاتی صحبت می‌کرد رسید به فاکس‌پرو. خیلی متوجه حرف‌هایش نشدم اما از اسم فاکس‌پرو خیلی خوشم آمده بود! آن وقت‌ها مثل الان نبود که برای رفع ابهام سوالات، تنها با چند کلیک بشود جواب آن را از توی اینترنت پیدا کرد. تابستان آن سال کلی پرس و جو کردم و کلاس آموزش فاکس‌پرو را پیدا کردم. آدم‌های توی کلاس، همه حسابدار شرکت‌های مختلف بودند و از سر اجبار آمده بودند و حضور من با آن سن و سال کم برای‌شان جای تعجب داشت. هنوز جزوه آن روزها را به یادگار نگه داشته‌ام. بعدها که وارد دانشگاه شدم، علاوه بر برنامه‌نویسی با دنیای SQL Server هم آشنا شدم تا این‌که بالاخره فهمیدم باید از میان آن‌ها یکی را انتخاب کنم و بازی روزگار این چنین مرا به دنیای بانک‌های اطلاعاتی کشاند ...

12 Comments

  1. abdollahzadeh.b

    abdollahzadeh.b

    با سلام خدمت آقای شیشه بری

    من مجموعه مقاله هایتان را با عنوان قاتلین ایندکس پیگیری می کردم. باید بگم که مقاله های خوب و ارزشمندی اند. انتخاب عنوان خوب و متن ساده و روان. من این مطالب را در کتاب SQL Server Performance Tuning فصل یازدهمش خوانده بودم.

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

    با احترام

    پاسخ دادن
  2. amir

    amir

    با عرض سلام و خسته نباشید خدمت همه دوستان و مدیران و استادان این سایت خیلی خوب و مفید.
    Sql server کلید اصلی جدول را به عنوان Clustered Index تعریف میکنه و من یه جدولی تو DataBase دارم که واکشی اطلاات از آن جدول را فقط از طریق کلید اصلی می خونم.
    آیامیتونم کلید اصلی جدول که Clustered Index است، به عنوان NonClustered Index هم تعریف کنم؟
    اصولا اینکار درست هست یا نه؟ و در سرعت واکشی کوئری هاتاثیری خواهد داشت؟

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

      مسعود طاهری

      بلی کلید اصلی را می توان به صورت Unique NonClustered تعریف کرد در این حالت باید حتما یک فیلد یا ترکیب یک فیلد را به عنوان Clustered Index تعریف کرد.

      در خصوص افزایش سرعت با تعریف مناسب کلاستر ایندکس به ازای فیلدها می توان به سرعت مناسبی دست یافت
      ما در دوره Performance & Tuning در SQL Server 2017 این موارد را به خوبی بررسی خواهیم کرد.
      برای کسب اطلاعات بیشتر می توانید به این لینک مراجعه کنید
      https://nikamooz.com/product/course-performance-tuning-sql-server/

      پاسخ دادن
  3. amir

    amir

    خیلی ممنون مهندس واقعا سایتتون خیلی مفیده

    پاسخ دادن
  4. amir

    amir

    سلام خسته نباشين آقاي مهندس. بنده تو بعضي از سايت ها ديدم که نوشتن اگه تو SqlServer رايگان ، حجم پايگاه داده بيشتر از ۸ گيگابايت شد. بمرور زمان پايگاه داده دچار مشکل ميشود. آيا اين حرف درست است يا نه؟
    اگر درست باشد چه راهکاري وجود دارد؟
    خیلی ممنون

    پاسخ دادن
    1. آرزو محمدزاده

      آرزو محمدزاده

      با سلام و عرض ادب

      به نقل از مهندس مسعود طاهری

      خیر دیدگاه اشتباهاتی است
      اگر نسخه شما SQL Server Express Edition باشد بلی
      یه سری محدودیت ها مثل تعداد CPU Core , RAM و… دارید
      اگر نسخه SQL Server Express 2016 SP1 باشه اواضاع کمی بهتر است
      البته توجه داشته باشید ما در ایران بحث کپی رایت و… فعلا نداریم پیشنهاد من برای شما این است که در صورت امکان Enterprise Edition را استفاده کنید تا بتوانید از حداکثر امکانات سخت افزاری بهره بگیرید …..

      کندی یک بانک اطلاعاتی عوامل زیادی دارد
      – مثل طراحی بد جداول
      – عدم وجود ایندکس
      – بلاکینگ طولانی
      – وجود deadlock
      – عدم وجود کویری های بهینه
      و…
      شما باید عوامل کندی را در بانک اطلاعاتی با استفاده از ابزارهایی مثل profiler و extended event پیدا کنید و مشکلات را رفع و رجوع کنید
      نیک آموز برای این کمظور دوره ای به نام performance tuning در SQL server دارد که این موارد در اون دوره به صورت حرفه‌ای بررسی شده است

      برای کسب اطلاعات بیشتر درباره این دوره بر روی لینک زیر کلیک کنید

      https://nikamooz.com/product/course-performance-tuning-sql-server/

      پاسخ دادن
      1. amir

        amir

        چشم حتما خیلی ممونم از جوابتون.

  5. حسن ضرابی

    حسن ضرابی

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

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

    تو توضیحاتتون اشاره به این کردید که در بخش where تبدیل ضمنی صورت گرفته و همین موجب افزایش IO میشه
    حالا اگه بیاییم برروی فیلدی از جنس DateTime این کوئری رو بزنیم باز هم با مشکل مواجه میشیم؟
    DECLARE @NOW DATE=(SELECT GETDATE())
    SELECT Id FROM dbo.tbSubmittedRank A WHERE CAST(A.DateResult AS DATE)=@NOW

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

      مسعود طاهری

      کوئری که شما نوشتید نمی تواند به سمت Index Seek هدایت شود از Function در قسمت Where Condition استفاده کرده اید.
      در دوره Performance & Tuning تمامی این نکات به دقت بررسی شده است

      پاسخ دادن
  7. Helia

    واقعا مجموعه مقالات مفیدی بود استاد
    خیلی از شما ممنونم

    پاسخ دادن

ارسال نظر

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

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