SQL Server
3.95K subscribers
19 photos
7 videos
36 files
168 links
حمید رضا صادقیان

🔴طراح‌ومشاوربانک های اطلاعاتیSQLSERVER
⚫️مدرس دوره های آموزشیDatabase

ارتباط با من:
@Hamidreza_Sadeghian

گروه تبادل نظر:
https://t.me/+uIc1qhv58gU0NWQ0
Download Telegram
با عرض سلام خدمت همه عزیزانم.
امیدوارم حال همه شما خوب باشه
میخوام درمورد تجربه امروزم باهاتون صحبت کنم.
امروز برای مشاوره Performance به یک سازمانی رفته بودم و داشتم بررسی های اولیه رو انجام میدادم. این سازمان یک دیتابیس داره که 40 GB هست و تقریبا 600 کاربر همزمان داره.
شخصی که مسئولیت DBA اونجا رو به عهده داشت اطلاعات خیلی کمی داشت و تازه داشت با آموزش زیرنظر یک آموزشگاه معتبر دوره Administration رو می گذروند. وسط کارهام به من گفت مهندس به ما گفتن که سعی کنید کل دیتابیس رو ببرید توی Ram سرعتتون خیلی خوب میشه!!!!.
من یک لحظه شوک شدم گفتم چی؟؟؟؟؟؟؟ گفت کل دیتابیس رو به RAM ببریم. گفتم ببخشید این که گفتین یعنی چی؟ میشه بهم بگید کدش چی میشه؟ اول گفت دستور DBCC Checkdb که گفتم این همچین کاری نمیکنه و صحت و سلامت دیتابیستون رو چک میکنه. بعد تو دفترش گشت این دستورو گفت
sp_MsforeatchTable 'select * from ?'

گفتم میدونید این دستور چیکار میکنه؟؟؟ بعضی از جداولشون 20 میلیون رکورد داشت. گفتم تورو خدا از این کارهای عجیب غریب نکنید حداقل تاوقتی من دارم روی سیستم های شما کار میکنم. گفتن اخه یکی دو روز خوب شد. گفتم بله شاید یکی دو روز اول سرعتتون خوب باشه. خوب به جاش بیاین یک بار SQL Server رو Restart کنید دفعه اول اجرای کدها کنده ولی بعدش شاید سرعتتون موقت خوب بشه. اخه این چه کاریه؟ چه روشیه. میزان IO دارید به شدت افزایش میدین بعد فکر کردین مثلا دیتابیس شما به صورت In-Memory هست؟ الان دارید به گفته استادتون کل دیتابیس رو به RAM منتقل می کنید؟
بعد بهشون توضیح دادم که اینکار چه عواقبی رو براشون رقم میزنه و اجازه بدن دقیقتر روی بحث Performance حرکت کنیم.
امیدوارم روزی برسه که اکثر سازمانها به این دید برسن به جای اینکه نیروهاشونو به کلاسهای معمولی بفرستن و مسئولیت سرورهای یک سازمان بزرگ و مهم رو دستشون بدن از افراد حرفه ای در این زمینه استفاده کنند و در کنار اون افراد ، نیروهای خودشون هم تربیت کنند که به یک شخص یا یک شرکت وابسته نباشند.

ارادتمند
#حمیدرضا_صادقیان
ID : @Hamidreza_Sadeghian

SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg

SQL Server Channel : @SQL_Server
بعضی اوقات SQL CLR باعث افت شدید بازدهی دیگر Query ها می شود. با خواندن این مقاله یادمیگیرید که چگونه SQL CLR را مونیتور و بهینه سازی کنید.
سلام و عرض ادب خدمت دوستان گرامی
امروز میخوام از یک تجربه استرس زای دیگه باهاتون صحبت کنم.
وقتی شما به عنوان DBA یک سازمان مشغول فعالیت هستید پس دارای مسئولیتی سنگین هستید و ممکنه هر لحظه از مدیرعامل سازمان تا مدیران دیگه تا مابقی کارمندان با شما تماس بگیرند و از مشکلات کندی و کار نکردن سیستم ها به شما شکایت کنند. خوب شما در این شرایط چیکار می کنید؟ با چندین نرم افزار مختلف و تیم های نرم افزاری مختلف درگیر هستید و همه به نوعی میخوان مشکلات رو سمت شما پاس بدن و شما و تنظیمات سرور و کار شما رو مقصر اصلی داستان بدونند و دست به هر حیله ای میزنند تا شمارو زیر سوال ببرند.
یک DBA خوب قبل از دانش فنی باید دانش نوشتاری و گزارشی خوب داشته باشه. اگر نمیتونید گزارشات دقیق بنویسید و مشکل رو دقیقا نشون بدین پس پیشنهاد می کنم حداقل تاوقتی این مهارت رو فرانگرفتید این شغل رو رها کنید.
دومین مورد این هست که یک DBA باید همیشه ابزارهای مانیتورینگ و کنترلی دقیقی داشته باشه که حالا میتونه از ابزارهای آماده استفاده کنه یا اینکه خودش اونها رو تهیه کنه . ولی اگر این ابزارها نباشه شما به هیچ وجه نمیتونید یک گزارش دقیق رو ارائه بدیدو مشکلات رو مشخص کنید.
سومین بحث و اساسی ترین نکته این هست که باید بتونید زیر فشار روانی فراوان ، و اینکه 15 نفر بالا سر شما ایستاده باشند و تلفن هم بدون وقفه تماس بگیره و موبایلتون هم به شدت زنگ بخوره و همه شکایت کنند و کار بسیار حاد بشه ، کارتون رو انجام بدین و به نظرات دیگران اهمیت ندین. سعی کنید اگر در بین اون افراد شخص مسلطی هست ازش مشورت بگیرین در غیر اینصورت فقط شنونده حرفها باشین و به دانش خودتون اکتفا کنید و کاری که فکر میکنید صحیحه حتی موقت انجام بدین. این باعث میشه فشارها کاهش پیدا کنه. در اون لحظه نباید دنبال راه حل های طولانی باشید. حتی اگه شده با kill کردن چندتا Process یا Stop کردن Job های Backup ، موقت فشار رو از روی سرور بردارید . برنامه هایی که مدنظر هستند رو Monitor کنید و ببینید الان چه Process هایی بر روی اونها جاری هست و اگر چیزی Lock شده یا دستوری باعث ایجاد Deadlock شده سعی کنید اونو برطرف کنید.
و در نهایت باید بعد از گذراندن طوفان بوجود آمده ، حتما یک گزارش از وضعیت رخ داده شده ، کارهایی که انجام دادین ، تدابیری که اتخاذ کردین برای اینکه اون مشکلات پیش نیان یا حداقل بتونید جلوشونو بگیرید رو تهیه کرده و به مدیران مورد نظرتون ارسال کنید.
اگر تا الان هم یک Baseline تهیه نکردین از شرایط خوب سرور، حتما فردا اولین کاری که میکنید یک Baseline ایجاد کنید که بتونید در شرایط بحرانی وضعیتهای مختلف رو باهم بررسی کنید و خیلی سریعتر به مشکل برسید و شناسایی کنید.

امیدوارم این تجربه دیدی به شما داده باشه .

ارادتمند شما
#حمیدرضا_صادقیان
ID : @Hamidreza_Sadeghian
SQL Server Channel :@SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
با عرض سلام و ادب خدمت عزیزان گرامی
امیدوارم که حال همگی خوب باشه و لبتون خندون باشه.
اعیاد گذشته و اعیاد پیش رو ، را به همه شما عزیزانم تبریک عرض میکنم.
میخوام در مورد تجربه یک مشاوره باهاتون صحبت کنم.
چند وقتیه خدمت یکی از دوستانم در شرکتشون هستم از من خواستن که به عنوان مشاور روی دیتابیس و بحث Performance کنارشون باشم.
من از وقتی به شرکت رفتم ، جلساتی رو با حضور خود مدیرعامل شرکت و مدیران پروژه شروع کردم و دیتابیس و Application رو بررسی کردیم. مواردی رو من مطرح کردم و به عنوان پیشنهاد طرحش کردم. هم در خصوص بحث Performance هم در خصوص مدیریت سورس ها و استفاده از Database Project . وقتی جلسه بعد که تقریبا بعد از 5 روز بود من مراجعه کردم درکمال ناباوری دیدم همه تغییراتی که گفتم تقریبا انجام شده بود و حتی دیتابیس هم با Database Project راه اندازی شده بود. نکته جالبش این بود که تو همین یک هفته خود تیم قشنگ تغییرات سرعتی رو حس کردن و راحتی در کار با Database Project رو لمس کردن. من از چابکی تیم ، و اینکه مدیران پروژه بدون اینکه ذره ای گارد بگیرن در مقابل تغییرات ، به راحتی روش رو عوض کردن و با من همراه شدن. چون تابه حال اکثر جاهایی که مشاوره دادم افراد برنامه نویس ، یا مدیران پروژه ها، یا مدیران IT به شدت در مقابل تغییرات و بهبود سیستم مقاومت کردن فقط من نمیدونم چرا بابت مشاوره هزینه می کردن؟ فکر کنم میخواستن مطمئن بشن که به حرف هیچکس گوش نمیدن و خودشونو محک بزنن😂😂
امیدوارم اکثر تیمهای نرم افزاری این چابکی رو درون خودشون داشته باشن و اگر از مشاوری استفاده میکنند حداقل بهش اطمینان کنند و باهاش حتی به صورت تستی همراه بشن تا تغییرات رو لمس کنند.

شب برهمگان خوش

ارادتمند
#حمیدرضا_صادقیان
ID : @hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
با عرض سلام و ادب خدمت دوستان گرامی
همونطور که میدونید ما دونوع Lookup در Execution Plan داریم. یک نوع RID Lookup هست و یک نوع Keylookup . اولی زمانی رخ میده که شما بر روی جدولتون PK نداشته باشید و دومی نیز زمانی رخ میده که در جدول شما PK داشته باشید. حال اینکه دقیقا چه اتفاقی میافته که این اجزا به پلن شما اضافه میشن رو بذاریم برای بعد.
ولی نکته قابل توجه بحث مقایسه Performance این دو موجود هست. که به صورت کلی عرض کنم که RID Lookup برای Read خیلی خوب عمل میکنه ولی د رعوض در عملیات Insert,Update کندتر خواهد بود و Key lookup نیز دقیقا برعکس این داستانه.
حال پیشنهاد میکنم با این توضیح اولیه مقاله زیر رو مطالعه بفرمایید.

http://sqlperformance.com/2016/05/t-sql-queries/rid-lookup-faster-key-lookup?utm_content=28600981&utm_medium=social&utm_source=facebook

ارادتمند
#حمیدرضا_صادقیان

ID : @hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
فیلم آموزشی درباره SQL Server In-Memory - موضوع فیلم عملیات داخلی سیستم و تکنیکهای بهینه سازی In-Memory Table ها. (فارسی)
فیلم اموزشی درباره فشار حافظه در SQL Server به زبان فارسی
با عرض سلام و ادب خدمت دوستان عزیزم
امیدوارم حال همگی خوب و خوش باشه.
تصمیم دارم فیلم های آموزشی مربوط به C.J.Date رو براتون قرار بدم. در این فیلمها با مفاهیم Relational Theory و Temporal Data آشنا خواهید شد. تعداد فیلمها زیاده و حجمشون هم زیاده .سعی میکنم در پستهای آتی فیلمها رو قرار بدم.
بعد از مشاهده فیلمها ، اگر سوالی یا ابهامی براتون وجود داشت میتونید در گروه SQL Server که آدرسش در انتهای پست من قرارداره بپرسید.

ارادتمند همه عزیزان
#حمیدرضا_صادقیان
ID : @hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
سلام و عرض ادب خدمت عزیزان گرامی.
شب بر همگان خوش
شاید بارها براتون پیش اومده باشه که نیاز داشته باشید شرطهای داینامیک رو بسازید. مثلا یک فرمی کاربر داره که میتونه نتیجه رو براساس فیلدهای مختلف فیلتر کنه. در این مواقع چیکار میکنید؟ یا اینکه نیاز داشته باشه براساس فیلدهای مختلف نتیجه رو مرتب کنه.
بهتون توصیه میکنم حتما مقاله زیر رو در این رابطه بخونید.
یک دید وسیعی رو بهتون در این زمینه میده و راهکار مناسب و با Performance خیلی خوب رو بررسی میکنه و همچنین کدهای نوشته شده رو ا زلحاظ امنیتی و SQL Injection نیز بررسی میکنه.

http://sommarskog.se/dyn-search.html


اراداتمند
#حمیدرضا_صادقیان

ID : @hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg
پیشرفتهایی که در SQL Server 2016 در قسمت Optimizer رخ داده است https://blogs.msdn.microsoft.com/sqlserverstorageengine/2016/05/23/query-optimizer-additions-in-sql-server/
در این مقاله شما متوجه می شوید که چگونه SQL Server In-Memory OLTP بدن استفاده از Lock و Latch تراکنشها را در یک زمان و بر روی یک سطر از داده انجام می دهد. http://fard-solutions.com/sql-server-memory-multi-version-concurrency-control/
دوستان توجه کنید!
نصب CU6 برای SQL Server 2014 SP1 یک مشکل دارد، ان هم این است که موقع استفاده از دستور NOLOCK در Select باعث بلاک شدن دستور Select میشود. البته مایکروسافت اعلام کرده این مشکل به زودی حل میشه.
با عرض سلام خدمت دوستان گرامی
امیدوارم حال همگی خوب باشه
برای دانلود نسخه رویایی SQL Server 2016 میتونید از لینک زیر اقدام کنید.
سریال های نسخ مختلف رو هم براتون قرار میدم امیدوارم لذت ببرید.

SQL Server 2016 Web: BXJTY-X3GNH-WHTHG-8V3XK-T8243
SQL Server 2016 Standard: B9GQY-GBG4J-282NY-QRG4X-KQBCR
SQL Server 2016 Enterprise Core: TBR8B-BXC4Y-298NV-PYTBY-G3BCP
SQL Server 2016 Enterprise: MDCJV-3YX8N-WG89M-KV443-G8249

http://care.dlservice.microsoft.com/dl/download/F/E/9/FE9397FA-BFAB-4ADD-8B97-91234BC774B2/SQLServer2016-x64-ENU.iso

با احترام
#حمیدرضا_صادقیان

ID : @hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j-IxIAOKHWwVg