Posts tagged with: database

Using T-SQL Window Functions and Framing to Improve Performance

Window Function در SQL Server 2005 معرفی شد و در SQL Server 2012 ارتقا پیدا کرد و قابلیت framing نیز به آن اضافه شد. با به کار بردن Window Function می توان کوئری هایی به مراتب بهینه نوشت و با استفاده درست از framing نیز کوئری را بهینه تر کرد. در لینک زیر Kathi Kellenberger به خوبی و با مثال هایی توضیح می دهد که Window Function ها چطور کار میکنند و در یک مثال فوق العاده نشان می دهد که چطور می توان با framing میزان logical reads را کم کرد. در این مثال مشاهده خواهید کرد که مقایسه کارایی نوشتن کوئری با تکنیک های متفاوت مانند

Window function with default frame, Correlated sub-query, Cursor solution و Window function with ROWS

چگونه خواهد بود و قطعا شگفت زده خواهید شد.

https://www.red-gate.com/simple-talk/sql/t-sql-programming/t-sql-window-functions-and-performance/


System-Versioned using SQL Server 2016

امکان Temporal یکی از ویژگی‌های بانک اطلاعاتی رابطه‌ای است که در سال 2011 توسط ANSI SQL معرفی شد. ولی شرکت مایکروسافت در سال 2016 و پس از پنج سال آن را با عنوان Temporal Table که با نام System-Versioned نیز شناخته می شود، به SQL Server اضافه کرد. Temporal Tables را نباید با Temporary Tables اشتباه گرفت، این دو هیچ ربطی به هم ندارند. این ویژگی جدید، این امکان را فراهم می کند تا SQL Server 2016 بصورت خودکار تاریخچه اطلاعات را نگهداری کند. البته باید این موضوع را در نظر گرفت که با استفاده از این ویژگی رشد اطلاعات بسیار زیاد خواهد بود و شما را مجبور خواهد کرد تا برای Storage هزینه کنید.
لینک زیر سناریوهایی که می توان با استفاده از این تکنولوژی پیاده سازی نمود را شرح می دهد.

https://msdn.microsoft.com/en-us/library/mt631669.aspx


Multi-Tenant Application in SQL Server 2016

پیاده سازی Multi-Tenant Application و مدیریت داده‌های مشتریان مختلف در یک بانک اطلاعاتی، پیچیدگی‌های فراوانی دارد. در نسخه SQL Server 2016 امکانی به نام (RLS (Row-Level Security اضافه شده که این موضوع را بسیار ساده‌تر کرده است. لینک زیر توضیح می‌دهد که چگونه با استفاده از این امکان می‌توان امنیت داده‌ها را در سطح رکورد فراهم کرد. با استفاده از این قابلیت‌ می‌توان برنامه‌هایی برای چندین مشتری که اطلاعات آنها در یک بانک اطلاعاتی نگهداری می شوند، تولید کرد.

https://www.mssqltips.com/sqlservertip/4004/sql-server-2016-row-level-security-introduction