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

مسعود طاهری

مسعود طاهری

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

16 دیدگاه

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

    جامع و کامل ممنون

    پاسخ
  2. سید عماد آرمون

    سید عماد آرمون

    سلام
    ضمن تشکر از توضیحات خوبتون
    لطفاً توضیح بدهید که در یک جدول خاص، چه فیلدهایی باید در یک Non Clustured Column Store Index ذخیره بشوند و چه فیلدهایی در ایندکس های جداگانه ذخیره بشوند؟
    مثلاً در مثال شما سه فیلد با هم در یک ایندکس بودن. این چه معنی میده؟

    پاسخ
  3. سعید حر

    سعید حر

     سلام

    توی query هاتون دیدم که جداولی با عنوان Employees_RowBased یا Employees_ColumnBased داشتید.
    آیا راهی وجود دارد که مشخص کنیم که داده ها به صورت RowBase  یا ColumnBase ذخیره گردد.
    پاسخ
    1. مسعود طاهری

      مسعود طاهری

       سلام

      آیا راهی وجود دارد که مشخص کنیم که داده ها به صورت RowBase  یا ColumnBase ذخیره گردد.
      بله، زمانی که شما یک جدول عادی ایجاد می کنید ذخیره داده ها در آن جدول به صورت Row Based است 
      در صورتیکه SQL Server 2014 به بالا داشته باشید می توانید یک جدول Heap (فاقد کلاستر ایندکس) ایجاد کنید و پس از آن بر روی آن یک Clustered Column Store Index بر روی آن ایجاد نمایید در این حالت جدول به صورت Column Based خواهد بود
      در SQL Server 2016  داستان کمی فرق کرده کلی امکانات جدید برای Column Store Index معرفی شده است.
      موفق باشید
      پاسخ
  4. ساناز احمدی

    ساناز احمدی

     سلام
    ضمن تشکر
    از مقاله خوبتون خواستم بدونم کدوم فیلم آموزشی سایت در این زمینه کمک بیشتری به من میکنه؟
    متشکرم

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

      مسعود طاهری

       سلام

      این موضوع در محصول آموزشی وب سایت نیک آموز (جنون سرعت در SQL Server) بررسی شده است.
      ضمنا در محصولات و دوره های زیر حالت های مختلف و کاربردی آن در دنیای واقعی بررسی شده است ( Using Columnstore Index in Data Warehouse ,Clustered Columnstore Index)
      پاسخ
  5. مرتضی رضایی

     با سلام

    با تشکر از زحماتتون . مطلبه جالبی بود .

     تو  قسمت     

    “ولی در کوئری دوم با توجه به معماری ذخیره‌سازی اطلاعات صرفاً Pageهای مورد نیاز برای واکشی اطلاعات اسکن شود. بنابراین کوئری دوم عملیات IO کمتری نسبت به کوئری اول خواهد داشت.

    لازم به ذکر است مطابق Plan اجرایی هزینه کوئری اول (ColumnBased) به کوئری دوم (RowBased) 79 به ۲۱ است. بنابراین هزینه کوئری دوم به مراتب کمتر از کوئری اول می‌باشد.”

    کوئری اول  RowBased       و کوئری دوم    ColumnBased  هست .

    بازم ممنون

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

      مسعود طاهری

      سلام

       بلی فرمایش شما درست است. این موضوع در مقاله اصلاح شد

      متشکرم
      پاسخ
  6. سعید شکری

    سعید شکری

     سلام
    به طور کلی index بر روی هارد ذخیره میشه یا بر روی رم؟
    با توضیحات شما من برداشتم اینه که بر روی هارد ذخیره میشه و فقط برای مرتب سازی و افزایش سرعت دست یابی به اطلاعات استفاده میشه اما یکی به من گفته بود که index ها در رم نگه داری میشن، index ای داریم که در رم ذخیره بشه؟

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

      مسعود طاهری

       سلام

      همه ایندکس ها به جزء ایندکس های  مربوط به جداول Memory Optimized در دیسک ذخیره می شوند.
      ایندکس های جداول  Memory Optimized صرفا در RAM ایجادشده و ساختار (Schema) آنها در دیسک ذخیره می شود.
      زمانیکه کوئری شما تصمیم به استفاده از ایندکس می گیرد. صفحات مربوط به ایندکس (Index Page ) + صفحات داده (Data Page) در حافظه RAM لود شده و مورد استفاده قرار می گیرند.
      پاسخ
  7. محمدرضا احمدی

    محمدرضا احمدی

     سلام

    ممنون عالی بود
    خسته نباشید
    پاسخ
  8. حسن دهیاری دهیاری

    حسن دهیاری دهیاری

        با سلام

    ضمن تشکر از مطالب و آموزشهای مفیدتون

    لطفا تفاوت بین Clustered Index San با Clustered Index Seek که در Execution Plan گزارش می شود را توضیح دهید
    ممنونم
    پاسخ
    1. مسعود طاهری

      مسعود طاهری

          سلام

      برای این موضوع با ساختار Btree باید کمی آشنا باشید در اینترنت این موضوع را سرچ کنید اما اگر تعریف ساده و ابتدایی بخواهم بگم
      ایندکس اسکن : یعنی بررسی کلیه Pageهای مربوط به جدول 
      ایندکس Seek : بررسی بخشی از Pageهای ایندکس 
      در این تعریف سطوح ایندکس و… سانسور شده چون سوال شما خودش یه مقاله است 
      اما یکی از محصولات مفید سایت به شما خیلی خوب می تواند کمک کند
      جنون سرعت در SQL Server  جواب سوال شما به خوبی در آن بررسی شده است 
      پاسخ
      1. حسن دهیاری دهیاری

        حسن دهیاری دهیاری

            سپاسگزارم جناب طاهری

  9. جواد

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

    خیلی خیلی ممنون بابت سایت بسیار خوبتون

    ببخشید یک سوال داشتم وقتی میخواهم بین دوتا سرور replication برقرار کنم
    که یکی سیستم محلی خودم است و اون یکی یک هاست از راه دور است وقتی میخواهم
    تنظیمات سرور از راه دور را انجام بدم این خطا رو میده

    TITLE: Configure Distribution Wizard

    ——————————

    SQL Server is unable to connect to server ”.

    SQL Server replication requires the actual server name to make a
    connection to the server. Specify the actual server name, ‘ACADEMY-PC2’.
    (Replication.Utilities)

    نام سرور رو هم تغییرمیدم ولی بازهم جواب نمیده

    خیلی ممنون

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

      مسعود طاهری

      دوست عزیز سوال شما به این بخش هیچ ارتباطی ندارد

      1-  دو دستور زیر را اجرا کنید هر دو باید خروجی یکسانی داشته باشند
      SELECT SERVERPROPERTY(N’servername’)
      SELECT @@SERVERNAME
      GO
      2- اگر خروجی یکسان نبود دستورات زیر را اجرا کنید
      SELECT @actualname = CONVERT(NVARCHAR(100), SERVERPROPERTY(N’servername’))
      SELECT @currentname = @@SERVERNAME
      EXEC sp_dropserver @currentname
      EXEC sp_addserver @actualname, local
      GO
      3- حالا دو دستور زیر را اجرا کنید هر دو باید خروجی یکسانی داشته باشند
      SELECT SERVERPROPERTY(N’servername’)
      SELECT @@SERVERNAME
      GO
      پاسخ
  10. امیر موحدیان

    سلام جناب طاهری
    آقا دمت گرم عالی بود

    پاسخ

ارسال یک نظر

نشانی ایمیل شما منتشر نخواهد شد.

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

ثبت نام دوره آموزشی SQL Server ویژه برنامه نویسان به صورت اقساطی
ثبت نام در دوره
close-image