Forwarded from Deleted Account
استفاده از جداول موقت در بانک اطلاعاتی و تاثیرات آن بر سرعت بازدهی و استفاده بیش از حد منابع پردازنده.
http://fard-solutions.com/sql-server-temporary-table-performance-impact/
http://fard-solutions.com/sql-server-temporary-table-performance-impact/
Fard-Solutions
SQL Server Temporary Tables and Performance Impact | Fard Solutions
It's been a while, that I did not write up any blog post. So as the title mentions, I would like to write about Temporary Tables in SQL Server and how those objects can reduce the overall performance.You might seen or used Temporary Tables in stored procedures…
BI Design from A to Z; by Shahriar Nikkhah. 26th of Jan 2017. 2:30pm Tehran Time. Register here:
http://globalpersian.sqlpass.org/
http://globalpersian.sqlpass.org/
globalpersian.sqlpass.org
Global Persian > Home
The Global Persian Virtual Chapter is an online gathering place for all Microsoft Data Platform and Business Intelligence professionals speaking the Persian language.
انجام عملیات بکآپ گیری از بانکهای اطلاعاتی مهم هستند اما مطمئن شدن آنها از اینکه در مواقع نیاز میتوان آنهای را بازگردانی کرد مهمتر است! این عملیات تست بازگردانی باید به صورت معمول و بعد از هر بار بکآپ گیری کامل بانک اطلاعاتی در یک سرور دیگر انجام شود. این مطلب شما را با نحوه پیاده سازی این عملیات به صورت اتوماتیک آشنا میکند. http://fard-solutions.com/database-backup-verification-policy/
BI Design from A to Z : Global Persian Virtual Chapter
Thursday 26th of Jan 3:30 pm
http://globalpersian.sqlpass.org/
Thursday 26th of Jan 3:30 pm
http://globalpersian.sqlpass.org/
globalpersian.sqlpass.org
Global Persian > Home
The Global Persian Virtual Chapter is an online gathering place for all Microsoft Data Platform and Business Intelligence professionals speaking the Persian language.
Forwarded from Deleted Account
مدیریت SQL Server با استفاده از Powershell (قسمت اول)
http://fard-solutions.com/sql-server-administration-powershell-part-1/
http://fard-solutions.com/sql-server-administration-powershell-part-1/
Fard-Solutions
SQL Server Administration by Powershell (Part 1) | Fard Solutions
Powershell is a new modular command-line tool from Microsoft, by using this tool you are able to perform whatever you can do by GUI. most of Microsoft products have Powershell module which you may need to import it manually.In this blog, I am going to share…
Forwarded from Deleted Account
همه مدیران بانک اطلاعاتی SQL Server فکر می کنند که هر دفعه که SQL Server ریستارت میشود بانک اطلاعاتی TempDB هم دوباره ساخته میشود. اما این تفکر اشتباه است! برای اطلاعات بیشتر مطلب زیر را مطالعه کنید.
http://fard-solutions.com/tempdb-recreation-myth/
http://fard-solutions.com/tempdb-recreation-myth/
Fard-Solutions
TempDB Recreation Myth! | Fard Solutions
Most SQL Server DBAs believes that TempDB always recreated once SQL Server service is restarted and makes a clean copy of TempDB database. therefore, it came to my mind if we configure TempDB data file size to 120GB and log file to 45GB, we might have some…
با عرض سلام و شب بخیر خدمت دوستان گرامی
شب بر همگان خوش
کتاب ارزشمند Power BI توسط دوست عزیزم جناب رضا راد به صورت رایگان منتشر شده است.
مطالعه این کتاب رو به شدت توصیه میکنم.
برای دانلود این کتاب ارزشمند ، از لینک زیر اقدام به دانلود بفرمایید.
ارادتمند
حمیدرضا صادقیان
http://radacad.com/download-free-power-bi-book-pdf-format
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
شب بر همگان خوش
کتاب ارزشمند Power BI توسط دوست عزیزم جناب رضا راد به صورت رایگان منتشر شده است.
مطالعه این کتاب رو به شدت توصیه میکنم.
برای دانلود این کتاب ارزشمند ، از لینک زیر اقدام به دانلود بفرمایید.
ارادتمند
حمیدرضا صادقیان
http://radacad.com/download-free-power-bi-book-pdf-format
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
وبینار Shopping Basket Analysis امروز. ارائه دهنده آقای سعید یوسفی. برای شرکت، اینجا ثبت نام کنید: http://globalpersian.pass.org/
globalpersian.pass.org
Global Persian VG > Home
The Global Persian Virtual Group is an online gathering place for all Microsoft Data Platform and Business Intelligence professionals speaking the Persian language.
سلام و عرض ادب خدمت دوستان گرامی
امیدوارم حال همه عزیزان خوب و خوش باشه
امشب میخوام کتاب Execution Plan رو براتون قرار بدم
این کتاب به شما دید خواهد داد چطوری یک Execution Plan رو تحلیل کنید ، با اجزای مختلف اون آشنا بشید و اینکه چطوری میتونید مشکلات رو از روی Plan متوجه بشید.
امیدوارم مورد استفاده شما قرار بگیره
ارادتمند
حمیدرضا صادقیان
ID : @Hamidreza_Sadeghian
امیدوارم حال همه عزیزان خوب و خوش باشه
امشب میخوام کتاب Execution Plan رو براتون قرار بدم
این کتاب به شما دید خواهد داد چطوری یک Execution Plan رو تحلیل کنید ، با اجزای مختلف اون آشنا بشید و اینکه چطوری میتونید مشکلات رو از روی Plan متوجه بشید.
امیدوارم مورد استفاده شما قرار بگیره
ارادتمند
حمیدرضا صادقیان
ID : @Hamidreza_Sadeghian
سلام و عرض ادب خدمت شما
اميدوارم سالي كه گذشته با همه تلخي ها، براي شما سالي سرشار از شادي ، موفقيت، لحظات زيبا رقم خورده باشه.
از خداوند منان خواهانم سال جديد براي شما سالي سرشار از موفقيت، رسيدن به اهداف و آرزوها، رقم خوردن زيباترين لحظات زندگي و سلامتي براتون باشه و جز زيباترين سال هاي عمرتون ثبت بشه
پيشاپيش اين عيد باستاني رو خدمت شما تبريك عرض مي كنم.
عمرتان مستدام
ارادتمند
حميدرضا صادقيان
اميدوارم سالي كه گذشته با همه تلخي ها، براي شما سالي سرشار از شادي ، موفقيت، لحظات زيبا رقم خورده باشه.
از خداوند منان خواهانم سال جديد براي شما سالي سرشار از موفقيت، رسيدن به اهداف و آرزوها، رقم خوردن زيباترين لحظات زندگي و سلامتي براتون باشه و جز زيباترين سال هاي عمرتون ثبت بشه
پيشاپيش اين عيد باستاني رو خدمت شما تبريك عرض مي كنم.
عمرتان مستدام
ارادتمند
حميدرضا صادقيان
Forwarded from Deleted Account
در بعضی مواقع نیاز است که تنظیمات Statistics در بانک اطلاعاتی غیر فعال شود و به صورت زمانبندی شده آمارها به روز رسانی شوند. در حین اجرای بروز رسانی ممکن است که اختلال در سیستم بوجود آید! حال چطور می توان آمارهای جداول را بدون اینکه اختلالی ایجاد کند بروز رسانی کرد؟ در این مقاله به این مورد با روش و تکنیکی غیر معمول این کار را انجام میدهیم. http://fard-solutions.com/update-sql-server-statistics-heavy-workload-database/
Fard-Solutions
How to Update SQL Server Statistics in Heavy Workload Database | Fard Solutions
Sometimes we do need to disable AUTO_STATS_UPDATE or AUTO_STATS_UPDATE_ASYNC due to many reasons such as database performance impact in heavy workload environment. Updating statistics based on regular schedule also takes long time and impact the database…
Forwarded from شرکت تحلیلگران دادههای آینده(تدآ)
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه و روز بسیار خوبی رو شروع کرده باشین
دیروز بحثی رو در مورد نگهداری بانکهای اطلاعاتی مطرح کردم که میخوام امروز اونو باز کنم و درموردش بهتون توضیح بدم.
احتمالا اکثر شما عزیزان هر 6 ماه یک بار به دکتر مراجعه می کنید و یک چکاپ کلی از خودتون میگیرید. آزمایشهای دوره ای کلی انجام میدین تا مطمئن بشین
خدایی نکرده مشکل خاصی نباشه و اگر مسئله ای در حال رخ دادن هست بتونید خیلی سریع جلوشو بگیرید.
آیا همین روند رو در سازمان یا شرکتتون برای بانک های اطلاعاتی خودتون دارید؟
اگر همین امروز سرور مالی شما دچار مشکل بشه و خدایی نکرده از بین بره، تا چه زمانی اطلاعات شما از دست خواهد رفت؟
چه مدت زمانی طول خواهد کشید که سیستم شما دوباره به چرخه کار برگرده و شروع به فعالیت بکنید؟
این مدت زمانی که وقفه در کار شما ایجاد شده ، آیا هزینه های مستقیم و غیر مستقیم اون رو حساب کردین؟ و آیا اصلا بهش فکر کردین؟
بذارید یک مثال ملموس از شرکتهای هواپیمایی براتون بزنم.
در شرکت های هواپیمایی یکی از مهم ترین سیستم ها که باعث درآمد مستقیم سازمان میشه ، نرم افزارهای رزرواسیون هست.
تمامی بلیط ها چه اینترنتی چه از طریق آژانسها چه از طریق فروش خود شرکت ، به واسطه این سیستم انجام میشه.
حالا فرض کنید، کارمندان شرکت ساعت 8 صبح به محل کاراومدن و متوجه شدن سیستم در دسترس نیست.
چند روز آینده نیز تعطیلاتی پیش روست که مردم تمایل دارن برای سفر بلیط تهیه کنند.
میان وارد سایت شرکت بشن ، با خطای عدم دسترسی مواجه میشن.
چندین بار سعی میکنن متاسفانه دسترسی حاصل نمیشه.
پس به ناچار یک ایرلاین دیگه رو انتخاب میکنن و سفرشون رو انجام میدن.
در همین مدتی که این سیستم از دسترس خارج شده عملا میلیون ها تومان فروش از دست شرکت رفته و مشتریان زیادی رو در همین بازه کوتاه از دست داده.
پس باعث کاهش درآمد شده.
به جز این ، هزینه های غیرمستقیم ، مثل هزینه های پرسنلی رو شرکت داره پرداخت میکنه. پرسنلی که در حال حاضر کاری ندارن و منتظرن تا سیستم وصل بشه. به این هزینه ها، هزینه های آب و برق و تلفن و ... هم اضافه کنید.
پس به غیر از اینکه فروشی نداشته کلی هم هزینه اضافی این مدت داشته که در ازاش هیچ بازدهی نداشته.
خوب حالا اگر یک سرور جایگزین این وسط بود و به محض از دسترس خارج شدن این سیستم، سریع به سیستم دوم منتقل میشد، چه اتفاقی میافتاد؟
مسافران میتونستن خیلی راحت بلیط رو رزرو کنن.
کارمندان بیکار نبودن و هزینه های جاری به ازای یک درآمدی در حال ایجاد شدن بود.
خوب همینطور که در این سناریو ملاحظه کردین با یک سرور جایگزین میشه مشکل رو حل کرد.
شاید خیلی از شما عزیزان با خودتون بگید خوب ما روی هارد اکسترنال بکاپ داریم هفته ای یک بار هم روی CD داریم رایت میکنیم و آرشیو میکنیم.
چقدر مطمئن هستید در موقع لزوم ، این بکاپ ها کار خواهند کرد؟
آیا تست دوره ای براش در نظر گرفتید؟
اگر سرور جایگزین نداشته باشید و اطلاعات شما نیز از بین بره، تا چقدر از اطلاعاتتون رو میتونید از دست بدین بدون اینکه به کسب و کارتون صدمه وارد بشه؟
فرض کنید آخرین بکاپ اطلاعاتی شما برای روز قبل از حادثه هست. و بعد از رخ دادن حادثه شما اون اطلاعات رو میخواهید برگردونید.
حالا شما بعد از آخرین بکاپ ، 12 ساعت نیز کار کردین. و هیچ پشتوانه ای هم از این 12 ساعت ندارید.
خوب با این اوصاف، اطلاعات این 12 ساعت اخیر شما از بین خواهد رفت. این برای شما مهم نیست؟ اثری در سازمان یا شرکت شما نخواهد گذاشت؟
یکی از کارهایی که ما انجام میدیم دقیقا همین هست.
کنار شما خواهیم بود و خیال شما رو از بابت نگهداری اطلاعاتتون راحت خواهیم کرد.
این پست ادامه خواهد داشت
اگر این مطالب برای شما جذاب و مورد استفاده است ، لطفا با دیگر دوستانتان به اشتراک بگذارید.
منتظر شنیدن نظرات شما عزیزان هستیم.
ارادتمند شما
حمیدرضا صادقیان
Channel Name : @HighPerformanceOrganization
ID : @Hamidreza_Sadeghian
امیدوارم حالتون خوب باشه و روز بسیار خوبی رو شروع کرده باشین
دیروز بحثی رو در مورد نگهداری بانکهای اطلاعاتی مطرح کردم که میخوام امروز اونو باز کنم و درموردش بهتون توضیح بدم.
احتمالا اکثر شما عزیزان هر 6 ماه یک بار به دکتر مراجعه می کنید و یک چکاپ کلی از خودتون میگیرید. آزمایشهای دوره ای کلی انجام میدین تا مطمئن بشین
خدایی نکرده مشکل خاصی نباشه و اگر مسئله ای در حال رخ دادن هست بتونید خیلی سریع جلوشو بگیرید.
آیا همین روند رو در سازمان یا شرکتتون برای بانک های اطلاعاتی خودتون دارید؟
اگر همین امروز سرور مالی شما دچار مشکل بشه و خدایی نکرده از بین بره، تا چه زمانی اطلاعات شما از دست خواهد رفت؟
چه مدت زمانی طول خواهد کشید که سیستم شما دوباره به چرخه کار برگرده و شروع به فعالیت بکنید؟
این مدت زمانی که وقفه در کار شما ایجاد شده ، آیا هزینه های مستقیم و غیر مستقیم اون رو حساب کردین؟ و آیا اصلا بهش فکر کردین؟
بذارید یک مثال ملموس از شرکتهای هواپیمایی براتون بزنم.
در شرکت های هواپیمایی یکی از مهم ترین سیستم ها که باعث درآمد مستقیم سازمان میشه ، نرم افزارهای رزرواسیون هست.
تمامی بلیط ها چه اینترنتی چه از طریق آژانسها چه از طریق فروش خود شرکت ، به واسطه این سیستم انجام میشه.
حالا فرض کنید، کارمندان شرکت ساعت 8 صبح به محل کاراومدن و متوجه شدن سیستم در دسترس نیست.
چند روز آینده نیز تعطیلاتی پیش روست که مردم تمایل دارن برای سفر بلیط تهیه کنند.
میان وارد سایت شرکت بشن ، با خطای عدم دسترسی مواجه میشن.
چندین بار سعی میکنن متاسفانه دسترسی حاصل نمیشه.
پس به ناچار یک ایرلاین دیگه رو انتخاب میکنن و سفرشون رو انجام میدن.
در همین مدتی که این سیستم از دسترس خارج شده عملا میلیون ها تومان فروش از دست شرکت رفته و مشتریان زیادی رو در همین بازه کوتاه از دست داده.
پس باعث کاهش درآمد شده.
به جز این ، هزینه های غیرمستقیم ، مثل هزینه های پرسنلی رو شرکت داره پرداخت میکنه. پرسنلی که در حال حاضر کاری ندارن و منتظرن تا سیستم وصل بشه. به این هزینه ها، هزینه های آب و برق و تلفن و ... هم اضافه کنید.
پس به غیر از اینکه فروشی نداشته کلی هم هزینه اضافی این مدت داشته که در ازاش هیچ بازدهی نداشته.
خوب حالا اگر یک سرور جایگزین این وسط بود و به محض از دسترس خارج شدن این سیستم، سریع به سیستم دوم منتقل میشد، چه اتفاقی میافتاد؟
مسافران میتونستن خیلی راحت بلیط رو رزرو کنن.
کارمندان بیکار نبودن و هزینه های جاری به ازای یک درآمدی در حال ایجاد شدن بود.
خوب همینطور که در این سناریو ملاحظه کردین با یک سرور جایگزین میشه مشکل رو حل کرد.
شاید خیلی از شما عزیزان با خودتون بگید خوب ما روی هارد اکسترنال بکاپ داریم هفته ای یک بار هم روی CD داریم رایت میکنیم و آرشیو میکنیم.
چقدر مطمئن هستید در موقع لزوم ، این بکاپ ها کار خواهند کرد؟
آیا تست دوره ای براش در نظر گرفتید؟
اگر سرور جایگزین نداشته باشید و اطلاعات شما نیز از بین بره، تا چقدر از اطلاعاتتون رو میتونید از دست بدین بدون اینکه به کسب و کارتون صدمه وارد بشه؟
فرض کنید آخرین بکاپ اطلاعاتی شما برای روز قبل از حادثه هست. و بعد از رخ دادن حادثه شما اون اطلاعات رو میخواهید برگردونید.
حالا شما بعد از آخرین بکاپ ، 12 ساعت نیز کار کردین. و هیچ پشتوانه ای هم از این 12 ساعت ندارید.
خوب با این اوصاف، اطلاعات این 12 ساعت اخیر شما از بین خواهد رفت. این برای شما مهم نیست؟ اثری در سازمان یا شرکت شما نخواهد گذاشت؟
یکی از کارهایی که ما انجام میدیم دقیقا همین هست.
کنار شما خواهیم بود و خیال شما رو از بابت نگهداری اطلاعاتتون راحت خواهیم کرد.
این پست ادامه خواهد داشت
اگر این مطالب برای شما جذاب و مورد استفاده است ، لطفا با دیگر دوستانتان به اشتراک بگذارید.
منتظر شنیدن نظرات شما عزیزان هستیم.
ارادتمند شما
حمیدرضا صادقیان
Channel Name : @HighPerformanceOrganization
ID : @Hamidreza_Sadeghian
Forwarded from شرکت تحلیلگران دادههای آینده(تدآ)
سلام و عرض ادب خدمت شما سروران گرامی
در این پست میخوام در مورد شرکت و مجموعه فعالیت هایی که انجام میدیم خدمتتان توضیح ارائه بدم
شرکت تحلیل گران داده های آینده(تدآ) ، در زمینه های زیر فعالیت می کند:
- آموزش های تخصصی در حوزه بانک های اطلاعاتی SQL Server به تیم های نرم افزاری ، و سازمانها جهت تربیت نیروهای متخصص DBA جهت نگهداری صحیح بانک های اطلاعاتی
- نگهداری و خدمات تخصصی در حوزه بانک های اطلاعاتی SQL Server که شامل موارد زیر می شود.
- راه اندازی راهکارهای تخصصی بروز نگهداری بانک های اطلاعاتی.
- پیاده سازی راهکارهایی جهت به حداقل رساندن زمان در دسترس نبودن سیستم ها در زمان بروز حادثه
- پیاده سازی امنیت بانک های اطلاعاتی
- مشاوره و پیاده سازی راهکارهایی جهت برطرف شدن کندی سیستم های نرم افزاری سازمان
- طراحی و ارائه راهکارهای سیستم های اطلاعاتی سازمانی جهت پیاده سازی یکپارچه سازی در سازمانها
- مشاوره تخصصی به سازمانها جهت شناسایی پیمانکار و نظارت براجرای مناقصات
اگر در مورد جزئیات این فعالیتها نیز سوالی داشتید با من تماس بگیرید.
ارادتمند شما
حمیدرضا صادقیان
Channel name:@highperformanceOrganization
Id:@hamidreza_sadeghian
در این پست میخوام در مورد شرکت و مجموعه فعالیت هایی که انجام میدیم خدمتتان توضیح ارائه بدم
شرکت تحلیل گران داده های آینده(تدآ) ، در زمینه های زیر فعالیت می کند:
- آموزش های تخصصی در حوزه بانک های اطلاعاتی SQL Server به تیم های نرم افزاری ، و سازمانها جهت تربیت نیروهای متخصص DBA جهت نگهداری صحیح بانک های اطلاعاتی
- نگهداری و خدمات تخصصی در حوزه بانک های اطلاعاتی SQL Server که شامل موارد زیر می شود.
- راه اندازی راهکارهای تخصصی بروز نگهداری بانک های اطلاعاتی.
- پیاده سازی راهکارهایی جهت به حداقل رساندن زمان در دسترس نبودن سیستم ها در زمان بروز حادثه
- پیاده سازی امنیت بانک های اطلاعاتی
- مشاوره و پیاده سازی راهکارهایی جهت برطرف شدن کندی سیستم های نرم افزاری سازمان
- طراحی و ارائه راهکارهای سیستم های اطلاعاتی سازمانی جهت پیاده سازی یکپارچه سازی در سازمانها
- مشاوره تخصصی به سازمانها جهت شناسایی پیمانکار و نظارت براجرای مناقصات
اگر در مورد جزئیات این فعالیتها نیز سوالی داشتید با من تماس بگیرید.
ارادتمند شما
حمیدرضا صادقیان
Channel name:@highperformanceOrganization
Id:@hamidreza_sadeghian
سلام و عرض ادب خدمت دوستان گرامی
امیدوارم حالتون خوب باشه
این فایلی 👆👆 که قراردادم در واقع مراحل قدم به قدم برای بحث Disaster Recovery در SQL Server هست که جناب Paul Randal خیلی کامل و قشنگ این رو به تصویر کشیده.
امیدوارم ازش استفاده کافی رو ببرید
ارادتمند
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
امیدوارم حالتون خوب باشه
این فایلی 👆👆 که قراردادم در واقع مراحل قدم به قدم برای بحث Disaster Recovery در SQL Server هست که جناب Paul Randal خیلی کامل و قشنگ این رو به تصویر کشیده.
امیدوارم ازش استفاده کافی رو ببرید
ارادتمند
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام خدمت شما دوستان عزیز!
موقع نصب SQL Server 2016 و قابلیت In-Database Analytics یکسری کاربر ویندوزی اضافی ساخته میشود و قابل حذف هم نیست! در این بلاگ به این موضوع اشاره شده است. http://fard-solutions.com/mystery-mssqlserver-windows-users-sql-server-2016/
موقع نصب SQL Server 2016 و قابلیت In-Database Analytics یکسری کاربر ویندوزی اضافی ساخته میشود و قابل حذف هم نیست! در این بلاگ به این موضوع اشاره شده است. http://fard-solutions.com/mystery-mssqlserver-windows-users-sql-server-2016/
Fard-Solutions
Mystery of MSSQLSERVER~ Windows Users in SQL Server 2016 | Fard Solutions
I came across to install and configure SQL Server 2016 and found there are many MSSQLSERVER windows users are created in Windows Local Users. Therefore I start to do some Bing search but unfortunately found nothing related to this. I will explain what are…
سلام و عرض ادب خدمت دوستان گرامی
امیدوارم حالتون خوب باشه
یکی از نکاتی که در اکثر دیتابیس هایی که میبینم و بهش برمیخورم عدم رعایت کردن Data Type ها هست
بذارید یک مثال بزنم.
مثلا فرض کنید یک جدول کالا دارید که فیلد کدکالای اون از نوع عددی هست
حالا یک SP نوشتید که بیاد یک کالا رو در این جدول درج کنه یا اینکه یک کالایی رو جستجو کنه.
پارامتر ورودی SP برای کد کالا مثلا از نوع char هست.
کد نوشته شده هم به این شکل هست.
Select * from Tbl_Goods
Where GoodNo = '123245'
این کد با موفقیت اجرا میشه و مشکلی هم نداره.
ولی اگر در Execution Plan نگاه کنید یک Implicit Convert رخ داده.
که باعث میشه از ایندکسها درست نتونه استفاده کنید. Cardinality رو درست نتونه تخمین بزنه و درنهایت سبب ایجاد یک پلن پیچیده و پر هزینه خواهد شد
به عنوان مثال دیشب روی کدی کار میکردم که فیلدهای ID رو از نوع Guid گرفته و چون داخل برنامه از نوع Varchar گرفته همه جا اومده از CAst استفاده کرده و به Varchar تبدیل کرده و همین باعث شده بود که SQL Server با وجود ایندکس نمیتونست از ایندکس درستی استفاده کنه چون دیگه Where Clause شما Sargable نیست و فیلدهای اون ماهیتا تغییر کردن بنابراین یک Index Scan رخ میده.
همین امر باعث شده بود که هزینه پلن نزدیک 30 بود و پلن پارالل شده بود و همچنین 70000 تا Logical Read بر روی جدول فوق داشتیم.
کدهای مربوطه رو اصلاح کردم و به همون شکل Guid نشونش دادم هزینه پلن شد 0.00170 , تعداد Logical REad جدول فوق نیز به 4 رسید و از ایندکسی که گذاشته بودم به راحتی استفاده کرد و یک Index Seek در پلن رخ داد.
لطفا در کدهاتون این مورد رو بسیار بهش دقت کنید و اگر مواردی این تیپی دارید حتما اصلاح کنید.
سعی میکنم در پست بعد کدی که بتونید به واسطه اون این تیپ Warning هارو بدست بیارید رو ارسال کنم.
ارادتمند شما
حمیدرضا صادقیان
@Hamidreza_Sadeghian
امیدوارم حالتون خوب باشه
یکی از نکاتی که در اکثر دیتابیس هایی که میبینم و بهش برمیخورم عدم رعایت کردن Data Type ها هست
بذارید یک مثال بزنم.
مثلا فرض کنید یک جدول کالا دارید که فیلد کدکالای اون از نوع عددی هست
حالا یک SP نوشتید که بیاد یک کالا رو در این جدول درج کنه یا اینکه یک کالایی رو جستجو کنه.
پارامتر ورودی SP برای کد کالا مثلا از نوع char هست.
کد نوشته شده هم به این شکل هست.
Select * from Tbl_Goods
Where GoodNo = '123245'
این کد با موفقیت اجرا میشه و مشکلی هم نداره.
ولی اگر در Execution Plan نگاه کنید یک Implicit Convert رخ داده.
که باعث میشه از ایندکسها درست نتونه استفاده کنید. Cardinality رو درست نتونه تخمین بزنه و درنهایت سبب ایجاد یک پلن پیچیده و پر هزینه خواهد شد
به عنوان مثال دیشب روی کدی کار میکردم که فیلدهای ID رو از نوع Guid گرفته و چون داخل برنامه از نوع Varchar گرفته همه جا اومده از CAst استفاده کرده و به Varchar تبدیل کرده و همین باعث شده بود که SQL Server با وجود ایندکس نمیتونست از ایندکس درستی استفاده کنه چون دیگه Where Clause شما Sargable نیست و فیلدهای اون ماهیتا تغییر کردن بنابراین یک Index Scan رخ میده.
همین امر باعث شده بود که هزینه پلن نزدیک 30 بود و پلن پارالل شده بود و همچنین 70000 تا Logical Read بر روی جدول فوق داشتیم.
کدهای مربوطه رو اصلاح کردم و به همون شکل Guid نشونش دادم هزینه پلن شد 0.00170 , تعداد Logical REad جدول فوق نیز به 4 رسید و از ایندکسی که گذاشته بودم به راحتی استفاده کرد و یک Index Seek در پلن رخ داد.
لطفا در کدهاتون این مورد رو بسیار بهش دقت کنید و اگر مواردی این تیپی دارید حتما اصلاح کنید.
سعی میکنم در پست بعد کدی که بتونید به واسطه اون این تیپ Warning هارو بدست بیارید رو ارسال کنم.
ارادتمند شما
حمیدرضا صادقیان
@Hamidreza_Sadeghian
سلام خدمت دوستان عزیز
امیدوارم حالتون خوب باشه
یکی از دوستان از من سوال کرد که برای طراحی دیتابیس بهتره چه مواردی رعایت بشه.
من لیستی رو نوشتم که به نظرم اومد ، گفتم با شما هم به اشتراک بذارم امیدوارم به دردتون بخوره و کارساز باشه.
اگر نکته یا مطلبی در این خصوص دارید ممنون میشم به آیدی من ارسال کنید.
1 - دیتابیس باید تا حد امکان نرمال طراحی بشه
2- تعداد فیلدهای جدول نباید زیاد باشه
3- دیتا تایپ ها باید درست انتخاب بشه
4- هنگام نوشتن کدها باید حتما دیتا تایپها مشابه هم باشن
5- هنگام نوشتن کدهای SP و توابع باید حتی المقدور از Casting خودداری بشه
6- فقط داده هایی برگرده که بهش نیاز داریم
7- حتما کدها به صورت Set Based نوشته بشه
8- از توابع Scalar و MSTVF حتی المقدور کم استفاده بشه ( حداقل تا نسخه 2016)
9- به جای تریگرها حتی المقدور از Check Constraint ها استفاده بشه
10- کلیدها بهتره از نوع Int باشن
11- کلیدها وابسته نباشن و نیازی نباشه هنگام Update مقدار اونها عوض بشه
12- شرط ها به صورت Sargable Argument نوشته بشه که ایندکس ها درست روش اعمال بشن
13- بر روی هرجدول بیش از 2-3 تا ایندکس نباید باشه
14- تمام کوئری ها باید زیر 3 ثانیه جواب برگردونن که Locking و Blocking به حداقل برسه
15- برای درج داده ها به صورت دسته ای بهتره از SP با پارامترهای Table Parameter استفاده بشه و یک SP بارها صدا زده نشه
16- مدت زمانی که یک Transaction باز هست به حداقل برسه و تعداد لاک ها به حداقل برسه که عملیات lock escalation رخ نده ( البته این مورد به خودی خودش اشکال نیست و DB Engine انجام میده ولی با تکنیک های کدنویسی میشه مانع رخ دادنش شد که احتمال Blocking رو کاهش بده)
ارادتمند شما
حمیدرضا صادقیان
ID :@Hamidreza_Sadeghian
امیدوارم حالتون خوب باشه
یکی از دوستان از من سوال کرد که برای طراحی دیتابیس بهتره چه مواردی رعایت بشه.
من لیستی رو نوشتم که به نظرم اومد ، گفتم با شما هم به اشتراک بذارم امیدوارم به دردتون بخوره و کارساز باشه.
اگر نکته یا مطلبی در این خصوص دارید ممنون میشم به آیدی من ارسال کنید.
1 - دیتابیس باید تا حد امکان نرمال طراحی بشه
2- تعداد فیلدهای جدول نباید زیاد باشه
3- دیتا تایپ ها باید درست انتخاب بشه
4- هنگام نوشتن کدها باید حتما دیتا تایپها مشابه هم باشن
5- هنگام نوشتن کدهای SP و توابع باید حتی المقدور از Casting خودداری بشه
6- فقط داده هایی برگرده که بهش نیاز داریم
7- حتما کدها به صورت Set Based نوشته بشه
8- از توابع Scalar و MSTVF حتی المقدور کم استفاده بشه ( حداقل تا نسخه 2016)
9- به جای تریگرها حتی المقدور از Check Constraint ها استفاده بشه
10- کلیدها بهتره از نوع Int باشن
11- کلیدها وابسته نباشن و نیازی نباشه هنگام Update مقدار اونها عوض بشه
12- شرط ها به صورت Sargable Argument نوشته بشه که ایندکس ها درست روش اعمال بشن
13- بر روی هرجدول بیش از 2-3 تا ایندکس نباید باشه
14- تمام کوئری ها باید زیر 3 ثانیه جواب برگردونن که Locking و Blocking به حداقل برسه
15- برای درج داده ها به صورت دسته ای بهتره از SP با پارامترهای Table Parameter استفاده بشه و یک SP بارها صدا زده نشه
16- مدت زمانی که یک Transaction باز هست به حداقل برسه و تعداد لاک ها به حداقل برسه که عملیات lock escalation رخ نده ( البته این مورد به خودی خودش اشکال نیست و DB Engine انجام میده ولی با تکنیک های کدنویسی میشه مانع رخ دادنش شد که احتمال Blocking رو کاهش بده)
ارادتمند شما
حمیدرضا صادقیان
ID :@Hamidreza_Sadeghian