Tune applications and databases for optimal performance

Tune applications and databases for optimal performance

รหัสคอร์ส :

 A0001

เนื้อหา : 13 ตอน ( 11 ชม. 16 น. )

ผู้สอน

เอกพงษ์ พรมลา

ราคา

ซื้อทันที หยิบใส่ตระกร้า

รายละเอียดคอร์ส

   คอร์สนี้เกิดขึ้นมาเพื่อแก้ไขปัญหา ระบบช้า ระบบล่ม โดยเฉพาะ โดยมีเนื้อหาที่ครอบคลุมถึงวิธีการหาสาเหตุที่แท้จริง (Root cause) ที่ทำให้ระบบช้า ระบบล่ม รวมถึงวิธีการแก้ไขปัญหา และเป็นการสอนแบบจับมือทำ เมื่อเรียนจบแล้วสามารถแก้ไขปัญหาระบบช้า ระบบล่มได้ทันที

เรียนจบคอร์สแล้วไม่สามารถแก้ปัญหาได้ การันตีคืนเงิน 100% โดยไม่มีคำถามใดๆให้อึดอัดใจ
วิธีขอรับเงินคืน

ส่ง email ถึง chillchillskill@chillchillskill.com เพียงระบุ ชื่อ นามสกุล เลขที่บัญชีธนาคาร ชื่อคอร์ส และระบุ ขอรับเงินคืน โดยไม่ต้องระบุเหตุผลใดๆ
โดยทาง ChillChillSkill จะทำการโอนเงินคืนภายใน 1 วันทำการ (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.) และทำการแจ้งผลการโอนเงินคืนช่องทาง email 
ติดต่อสอบถามสถานะการโอนเงินคืนด่วนได้ที่ช่องทาง 
LINE Official Account : @chillchillskill (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)
เบอร์ติดต่อ 083-935-2442 , 083-925-2442 (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)

 

Tune applications and databases for optimal performance คืออะไร?

    การเพิ่มประสิทธิภาพแอปพลิเคชันและระบบฐานข้อมูลให้ทำงานได้อย่างลื่นไหล ทำให้ผู้ใช้งานแอปพลิเคชัน ใช้งานได้อย่างลื่นไหลดั่งคำว่า Smooth as Silk

ถ้าจะทำให้แอปพลิเคชันและระบบฐานข้อมูลทำงานได้อย่างลื่นไหลเราต้องมีความรู้ความเข้าใจอะไรบ้าง?

  • เข้าใจสาเหตุที่แท้จริงของปัญหา (Root cause) ที่ทำให้ให้ระบบช้า ระบบล่ม ว่ามีสาเหตุมาจากอะไรได้บ้าง
  • มีเทคนิคในการการหาสาเหตุที่แท้จริงของปัญหา (Root cause) ที่ทำให้ให้ระบบช้าระบบล่ม ในสถานะการณ์ต่างๆ ได้เช่น การหาสาเหตุระหว่างที่ปัญหายังคงเกิดขึ้นอยู่ และใครทำให้เกิด หรือการหาสาเหตุโดยปัญหาได้ผ่านพ้นไปแล้ว เช่นผู้ใช้งานแจ้งว่าแอปพลิเคชัน ทำงานได้ช้ามากหรือใช้งานไม่ได้เลยตอน 04:00 น ก็จะใช้วิธีการที่แตกต่างกันไป
  • มีความรู้ความเข้าใจในการอ่าน Execution Plan ของ SQL Statement ที่ Query Optimizer ได้วางแผนมาแล้ว เพื่อใช้ในการ Execution อย่างถ่องแท้ 
  • สามารถหา Operator ที่อยู่ใน Execution Plan ที่ทำให้คำสั่ง SQL Statement นั้นๆ ทำงานช้าและสามารถปรับปรุง Execution Plan ให้อยู่ในสถานะที่ดีที่สุดได้  จากนั้นคำสั่ง SQL Statement ก็จะทำงานได้อย่างรวดเร็ว
  • มีความรู้ความเข้าใจในการแก้ไขปัญหาประสิทธิภาพของแอปพลิเคชันและระบบฐานข้อมูลแบบบูรณาการ โดยมีหัวใจสำคัญ 4 เรื่อง ดังต่อไปนี้

           1.การสะสางปัญหาเก่าที่มีอยู่
           2.อย่าเติม ปัญหาใหม่เข้าไปให้ระบบฐานข้อมูล
           3.อย่าละเลย กับระบบงานรอบข้าง 
           4.การดับไฟ

Tune applications and databases for optimal performance สำคัญอย่างไร?

  • ผู้ใช้งานแอปพลิเคชัน ใช้งานได้อย่างลื่นไหล
  • ค่าใช้จ่ายแบบ Fix cost ขององค์กร ของแผนก Information technology ลดลง หรือคงที่ เนื่องจากไม่ต้องทำการเพิ่ม Spec Database Server ให้สูงขึ้นไป ในกรณีทำการลด Spec Database Server ก็จะประหยัดงบประมาณค่าใช้จ่ายต่อเดือนได้ หมายเหตุ โดยไม่รวมถึงกรณีที่องค์กรมีการขยายจำนวนสาขาเพิ่มขึ้นอย่างมีนัยยะ
  • เพิ่ม KPI ของแผนก Information Technology เนื่องจากระยะเวลาที่แอปพลิเคชันใช้งานไม่ได้ลดน้อยลง
  • ใช้ในการแก้ปัญหาและลดระยะเวลาในการประมวลผลของ ETL หรือ Batch Process ต่างๆ ที่ทำงานค่อนข้างนาน ก่อให้เกิดปัญหาข้อมูลไม่พร้อมสำหรับการใช้งาน
  • ใช้ในการแก้ปัญหาระบบที่มีข้อมูลเพิ่มขึ้นต่อวันค่อนข้างเยอะ ทำให้การประมวลผลช้าลงเรื่อย ๆ

ทำไมองค์กรควรให้ความสำคัญและต้องทำ Tune applications and databases for optimal performance?

   ปัจจุบันมีธุรกรรมมากมายเกิดขึ้นอยู่บนอุปกรณ์ต่าง ๆ ไม่ว่าจะเป็น คอมพิวเตอร์ สมาร์ทโฟน แท็บเล็ต รวมถึงเว็บไซต์ต่าง ๆ สำหรับองค์กรนั้น มีความจำเป็นที่ต้องทำการเพิ่มประสิทธิภาพของแอปพลิเคชันและระบบฐานข้อมูลให้ทำงานได้อย่างลื่นไหล เพื่อป้องกันปัญหาระบบช้า ระบบล่ม ซึ่งผลกระทบและความเสี่ยงต่าง ๆ ที่จะเกิดขึ้นไม่ว่าจะเป็น 

  • สูญเสียทางการเงิน ที่เป็นผลจากการเพิ่ม Spec Database Server ให้สูงขึ้นไป แต่ก็เป็นระเบิดเวลาอยู่ดี เพราะปัญหาที่สำคัญส่วนหนึ่งเกิดจากจำนวนข้อมูลที่เพิ่มขึ้นทุกวัน ทำให้ประสิทธิภาพของแอปพลิเคชันและระบบฐานข้อมูลลดลง พอถึงจุดๆหนึ่งก็จะต้องทำการเพิ่ม Spec Database Server ให้สูงขึ้นไปอีกครั้ง ผลคือ ค่าใช้จ่ายก็เพิ่มขึ้นไปเรื่อยๆ ไม่มีวันจบ
  • สูญเสียความเชื่อมั่น ที่ไม่สามารถรองรับการทำงานของผู้ใช้งานแอปพลิเคชันได้
  • สูญเสียเวลาในการแก้ปัญหา งานโปรเจคก็ต้องทำตามกำหนดเวลาที่ค่อนข้างกระชั้นชิดอยู่แล้ว ยังต้องเสียเวลามานั่งแก้ปัญหาบ่อยๆอีก ส่งผลกระทบต่องานโปรเจคเป็นอย่างมาก

คอร์สออนไลน์ Tune applications and databases for optimal performance

       คอร์สนี้จะสอนการทำ การเพิ่มประสิทธิภาพให้กับแอปพลิเคชันในส่วนที่สำคัญที่สุดคือ คำสั่ง SQL Statement และระบบฐานข้อมูลของทาง Microsoft โดยเนื้อหาในคอร์สนี้จะครอบคลุมชนิดของระบบฐานข้อมูลดังต่อไปนี้

  • SQL Server On-Premises เช่น SQL Server 2022 2019 2017 2016 2012 และ 2008
  • Azure SQL Database แบบ Single database
  • Azure SQL Database แบบ Elastic pool
  • SQL Server on Azure Virtual Machines
  • Azure SQL Database Managed Instance

  โดยสอนตั้งแต่เริ่มต้นทำความเข้าใจข้อแตกต่างระหว่าง Microsoft Azure SQL Database services ในแต่ละชนิดและ SQL Server On-Premises จนถึงขั้นตอนการแก้ไขปัญหาแบบจับมือทำ โดยสามารถแก้ไขปัญหาได้ทันที
  คอร์สนี้ออกแบบหลักสูตรมาเพื่อ นักพัฒนาซอฟต์แวร์ และ ผู้บริหารจัดการระบบฐานข้อมูล ที่ใช้งานระบบฐานข้อมูล Microsoft Azure SQL Database services และ SQL Server On-Premises โดยเฉพาะ

จุดเด่นที่สำคัญของคอร์สนี้

  • สามารถนำหลักการและวิธีการแก้ไขปัญหาระบบช้า ระบบล่ม ในคอร์สนี้ไปปรับใช้งานกับแอปพลิเคชันที่ใช้งานระบบฐานข้อมูลยี่ห้ออื่นๆ ดังต่อไปนี้ได้เช่น Oracle database PostgreSQL MySQL และระบบฐานข้อมูลยี่ห้ออื่นๆ ที่สามารถตรวจสอบ Execution Plan ของ SQL Statement ได้ โดยจะมีข้อแตกต่างกันที่ Feature ของระบบฐานข้อมูลแต่ละยี่ห้อเท่านั้น เช่น SQL server มี Clustered indexes แต่ PostgreSQL ไม่มี Clustered indexes ดังนั้นการ Tuning SQL Statement ของระบบฐานข้อมูลแต่ละยี่ห้อก็จะแตกต่างกันไป เมื่อท่านได้เรียนในบทที่ 11 ในคอร์สนี้แล้ว ท่านก็จะเข้าใจอย่างแจ่มแจ้งเอง
  • เนื่องจากการเพิ่มประสิทธิภาพให้กับแอปพลิเคชันในส่วนที่สำคัญที่สุดคือ คำสั่ง SQL Statement นั้น เราจะใช้วิธีการตรวจสอบ Execution Plan ของ SQL Statement นั้นๆ และทำการตรวจสอบ Operator ที่อยู่ใน Execution Plan ที่มีค่า Estimated Operator Cost สูงๆ และทำการหาสาเหตุว่าทำไม Query Optimizer จึงเลือกใช้งาน Operator นี้ และทำไม Query Optimizer จึงไม่เลือกใช้ Operator อื่นๆ ที่ทำงานได้รวดเร็วกว่า Operator แบบนี้ จากนั้นก็ให้ใช้หลักการที่สอนในคอร์สนี้ทำการแก้ไขปัญหา โดยทำการปรับเปลี่ยนวิธีการให้เข้ากับ Feature ที่ระบบฐานข้อมูลยี่ห้อนั้นๆ มีมาให้ หลังจากนั้นแอปพลิเคชันของท่านก็จะทำงานได้อย่างรวดเร็วอย่างแน่นอน

คอร์สนี้เหมาะสำหรับ

  • องค์กรที่ประสบปัญหาระบบช้า ระบบล่ม อยู่บ่อยๆ และใช้วิธีใช้เงินแก้ปัญหา โดยการเพิ่ม Spec Database Server ขึ้นไป พอใช้ไปได้สักพักปัญหาระบบช้า ระบบล่ม ก็กลับมาสร้างปัญหาให้ปวดหัวอีกครั้ง ทำให้ต้องทำการเพิ่ม Spec Database Server ขึ้นไปอีก แบบไม่จบไม่สิ้น ทำให้มีค่าใช้จ่ายเพิ่มขึ้นเป็นอย่างมาก
  • บริษัท Software House ที่รับพัฒนาแอปพลิเคชันให้กับองค์กรขนาดใหญ่ ที่มีทรานแซคชั่นต่อวันที่เกิดขึ้นเป็นจำนวนมาก ลุกค้าแจ้งว่าประสบปัญหาระบบช้า ระบบล่ม อย่างต่อเนื่อง และต้องการ solution แบบ long term เพื่อแก้ไขปัญหาให้กับลูกค้า
  • นักพัฒนาซอฟต์แวร์ที่พัฒนาแอปพลิเคชันตั้งแต่ขนาดเล็กไปจนถึงขนาดใหญ่ เช่นพัฒนาแอปพลิเคชันให้กับองค์กรขนาดใหญ่ และ/หรือ มีจำนวนสาขาหลายๆ สาขา โดยมีผู้ใช้งานแอปพลิเคชันเป็นจำนวนมาก และมีทรานแซคชั่นต่อวันที่เกิดขึ้นเป็นจำนวนมหาศาล คอร์สนี้มีความจำเป็นสำหรับท่านเป็นอย่างมาก
  • Data Engineer ประโยชน์ที่ท่านจะได้รับคือ ระยะเวลาการประมวลผลของ ETL หรือ Batch Process ต่างๆ ลดลง 
  • Business Intelligence Developer 
  • Data Analytics 
  • Database Administrator ที่ดูแลระบบฐานข้อมูล Microsoft Azure SQL database services ทั้ง 4 ชนิดดังต่อไปนี้

           - Azure SQL Database แบบ Single database
           - Azure SQL Database แบบ Elastic pool
           - SQL Server on Azure Virtual Machines
           - Azure SQL Database Managed Instance

  • Database Administrator ที่ดูแลระบบฐานข้อมูล Microsoft SQL Server on-premises เช่น SQL Server 2022 2019 2017 2016 2012 และ 2008
  • นักพัฒนาซอฟต์แวร์ที่พัฒนาแอปพลิเคชันที่ใช้งานระบบฐานข้อมูลยี่ห้ออื่นๆ ดังต่อไปนี้ เช่น Oracle database PostgreSQL MySQL และระบบฐานข้อมูลยี่ห้ออื่นๆ ที่สามารถตรวจสอบ Execution Plan ของ SQL Statement ได้
  • นักศึกษาที่ต้องการเพิ่มความได้เปรียบคู่แข่งในการสมัครงาน เนื่องจากมีความรู้ความเข้าใจการเพิ่มประสิทธิภาพแอปพลิเคชันและระบบฐานข้อมูลให้ทำงานได้อย่างลื่นไหล และมีใบ Certified ให้ เพื่อนำไปใช้สมัครงาน
  • นักศึกษาหลักสูตรประกาศนียบัตรวิชาชีพ (ปวช.) สาขาวิชา คอมพิวเตอร์ธุรกิจ
  • นักศึกษาหลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง (ปวส.) สาขาวิชาเทคโนโลยีสารสนเทศ
  • นักศึกษาคณะวิทยาศาสตร์  สาขาวิชาวิทยาการคอมพิวเตอร์ 
  • นักศึกษาคณะวิทยาการสารสนเทศ
  • นักศึกษาคณะบริหารธุรกิจ สาขาคอมพิวเตอร์ธุรกิจ
  • นักศึกษาคณะวิศวกรรมศาสตร์ สาขาวิชาวิศวกรรมคอมพิวเตอร์ 
  • บุคคลทั่วไปที่สนใจการเพิ่มประสิทธิภาพแอปพลิเคชันและระบบฐานข้อมูลให้ทำงานได้อย่างลื่นไหล

สิ่งที่คุณจะสามารถเรียนรู้ได้ในคอร์สนี้
บทที่ 1: เริ่มต้นการใช้ Microsoft Azure SQL Database services

  • การสมัครใช้งาน Microsoft Azure Account แบบ Pay As You Go หรือแบบ Try Azure for free
  • ข้อมูลที่ต้องเตรียมเพื่อใช้ในการสมัคร
  • การเรียนรู้ในคอร์สนี้สามารถใช้งาน SQL Server On-Premises เช่น SQL Server 2022 Developer SQL Server 2022 Express หรือ SQL Server ใน version อื่นๆ ที่สามารถ Install บนเครื่อง PC หรือ Notebook ของเราได้ ในการทำ Lab ไม่จำเป็นต้องสมัคร Azure account เพื่อใช้งาน Azure SQL database services ชนิดต่างๆ เพื่อการทำ Lab

บทที่ 2: ทำความเข้าใจข้อแตกต่างของ Microsoft Azure SQL Database services ในแต่ละชนิด

  • Azure SQL Database แบบ Single database
  • Azure SQL Database แบบ Elastic pool
  • SQL Server on Azure Virtual Machines
  • Azure SQL Database Managed Instance
  • SQL Server On-Premises เช่น SQL Server 2022 2019 2017 2016 2012 และ 2008

บทที่ 3: การสร้าง Microsoft Azure SQL Database แบบ Single database

  • จุดเด่นของ Microsoft Azure SQL Database แบบ Single database
  • ทำความรู้จัก Purchase Model แบบ DTU
  • ทำความรู้จัก Purchase Model แบบ vCore
  • ทำความรู้จัก Service Tier
  • ทำความรู้จัก Backup storage redundancy
  • การตั้งชื่อ resource ต่างๆ บน Azure

การทำ Lab

  • Lab: การสร้าง Microsoft Azure SQL Database แบบ Single database และทดสอบการเชื่อมต่อ Database โดยใช้ SQL Server Management Studio (SSMS)

บทที่ 4: การสร้าง Microsoft Azure SQL Database แบบ Elastic pool

  • จุดเด่นของ Microsoft Azure SQL Database แบบ Elastic pool
  • ทำความรู้จัก Purchase Model แบบ DTU
  • ทำความรู้จัก Purchase Model แบบ vCore
  • ทำความรู้จัก Service Tier ในส่วน Storage sizes และ compute size

การทำ Lab

  • Lab 1: การสร้าง Microsoft Azure SQL Database แบบ Elastic pool และทดสอบการเชื่อมต่อ Database โดยใช้ SQL Server Management Studio (SSMS)

บทที่ 5: การ Scale-up service tiers และ Scale-down service tiers สำหรับ Azure SQL Database services

  • การ Scale-up service tiers และ Scale-down service tiers สำหรับ Azure SQL Database แบบ Single Database (DTU purchasing model)
  • ทำความรู้จัก Basic service tier
  • ทำความรู้จัก Standart service tier
  • ทำความรู้จัก Premium service tier
  • การ Scale-up service tiers และ Scale-down service tiers สำหรับ Azure SQL Database แบบ Single Database (DTU purchasing model)

การทำ Lab

  • Lab 1: Scale-up service tiers Azure SQL Database แบบ Single Database (DTU purchasing model) 
  • Lab 2: Scale-down service tiers Azure SQL Database แบบ Single Database (DTU purchasing model)


บทที่ 6: การเตรียม Database สำหรับการทำ Performance Environment  

  • การสร้าง Performance Environment  ขึ้นมาเพื่อทำการทดสอบ Load test โดยเฉพาะ
  • สร้าง Performance Environment ไปเพื่ออะไร
  • สิ่งสำคัญที่จะได้รับจากการสร้าง Performance Environment 
  • ทำความรู้จักและการใช้งาน Export Data-tier Application
  • ทำความรู้จักและการใช้งาน Import Data-tier Application
  • ทำความรู้จัก Data Masking และการใช้งาน Dynamic Data Masking

การทำ Lab

  • Lab 1:การ Download AdventureWorks2022.bacpac และ 01-Prepare-Database-Script.sql
  • Lab 2:การ Import Data-tier Application โดยการใช้ SQL Server Management Studio (SSMS)
  • Lab 3:การ Export Data-tier Application โดยการใช้ SQL Server Management Studio (SSMS)
  • Lab 4:การทำ Data Masking โดยการใช้ Dynamic Data Masking


บทที่ 7: การติดตั้งและการใช้งาน Apache JMeter

  • ทำความรู้จัก Apache JMeter
  • จุดเด่นของ Apache JMeter

การทำ Lab

  • Lab 1: การติดตั้งและการใช้งาน Apache JMeter 5.5


บทที่ 8: การติดตั้งและการใช้งาน SolarWinds Plan Explorer

  • ทำความรู้จัก SolarWinds Plan Explorer
  • จุดเด่นของ SolarWinds Plan Explorer

การทำ Lab

  • Lab 1: การติดตั้งและการใช้งาน SolarWinds Plan Explorer

บทที่ 9: สาเหตุที่ทำให้ให้ระบบช้าระบบล่ม

  • ระบบช้า ระบบล่ม เพราะค่า DTU หรือ CPU percentage สูง
  • ระบบช้า ระบบล่ม เพราะ Data IO percentage สูง
  • ระบบช้า ระบบล่ม เพราะ Blocking

การทำ Lab

  • Lab 1: จำลองเหตุการณ์ DTU percentage สูง
  • Lab 2: จำลองเหตุการณ์ Blocking


บทที่ 10: เทคนิคการหาคำสั่ง SQL ที่ทำให้ให้ระบบช้าระบบล่ม

  • การหา Query ที่ทำให้เกิดปัญหา ระหว่างที่ปัญหายังคงเกิดขึ้นอยู่ และใครทำให้เกิด (หัวใจสำคัญ)
  • การหา Query ที่เป็นแบบ Non Search ARGument able ทั้งหมดที่อยู่ใน Plan cache (หัวใจสำคัญ)
  • การหา Query ที่มีค่า Estimated Subtree Cost ของ Execution Plan เรียงจากมากที่สุดไปหาน้อยที่สุด จาก Query ทั้งหมดที่อยู่ใน Plan Cache (หัวใจสำคัญ)
  • การหา Query ที่ทำให้เกิดปัญหา เมื่อปัญหาได้ผ่านไปแล้ว โดย DTU CPU หรือ DATA IO percentage ค่าใดค่าหนึ่ง ได้ลดลงมาแล้ว โดยการใช้ Query Store (หัวใจสำคัญ)
  • การใช้งาน Intelligent performance บน Azure portal เพื่อหา query ที่ทำให้ CPU หรือ DATA IO percentage มีค่าสูง (หัวใจสำคัญ)
  • การใช้งาน Azure SQL Auditing เพื่อหา Query ที่ทำให้เกิดปัญหา Data IO percentage มีค่าสูง (หัวใจสำคัญ)

การทำ Lab

  • Lab 1: การหา Query ที่ทำให้เกิดปัญหา ระหว่างที่ปัญหายังคงเกิดขึ้นอยู่ และใครทำให้เกิด
  • Lab 2: การหา Query ที่เป็นแบบ Non Search ARGument able ทั้งหมดที่อยู่ใน Plan cache
  • Lab 3: การหา Query ที่มีค่า Estimated Subtree Cost ของ Execution Plan เรียงจากมากที่สุดไปหาน้อยที่สุด จาก Query ทั้งหมดที่อยู่ใน Plan Cache
  • Lab 4: การหา Query ที่ทำให้เกิดปัญหา เมื่อปัญหาได้ผ่านไปแล้ว โดย DTU CPU ค่าใดค่าหนึ่งได้ลดลงมาแล้ว โดยการใช้ Query Store
  • Lab 5: การทำ Azure SQL Auditing และการ Query ดูข้อมูลจาก Log Analytics 
  • Lab 6: การสร้าง Log Analytics workspace
  • Lab 7: การ Enable Auditing โดยทำการเก็บข้อมูลที่ Log Analytics
  • Lab 8:การ Query ดูข้อมูลจาก Log Analytics โดยการใช้ Kusto Query Language (KQL)
     

บทที่ 11: การอ่าน Execution Plan เพื่อหาจุดที่ทำให้คำสั่ง SQL ทำงานช้าและการแก้ไขปัญหา (บทที่สำคัญที่สุดในคอร์สนี้)

  • ทำความรู้จัก Execution Plan และส่วนประกอบของ Execution Plan
  • การ Parsing
  • การ Binding
  • การทำ Query optimization
  • การทำ Query execution
  • ค่า defined values ที่สำคัญของ Execution Plan
  • ทำความรู้จักค่า Estimated Operator Cost
  • ทำความรู้จักค่า Estimated Subtree Cost 
  • ทำความรู้จักกับ Operator ชนิดต่างๆ และ Data flow arrows 
  • Data Reading Operators 
  • หลักการทำ SQL Tuning การเปรียบเทียบความเร็วของ Index ชนิดต่างๆ และ Table Scan
  • Clustered Index Seek
  • Index Seek (nonclustered)
  • Clustered Index Scan
  • Index Scan (nonclustered)
  • ข้อแตกต่างระหว่าง Clustered Index และ Nonclustered Indexes และวิธีแก้ไขปัญหา
  • Key Lookup และวิธีแก้ไขปัญหา
  • RID Lookup และวิธีแก้ไขปัญหา
  • Table scan และวิธีแก้ไขปัญหา
  • Concatenating Data
  • Joining Data และตารางสรุปข้อแตกต่างของการ JOIN ทั้ง 3 แบบ
  • Hash Join 

             - ข้อควรระวังอย่างสูงสุด และผลร้ายที่เกิดขึ้นจาก Hash Join
             - ทำความรู้จัก Build phase
             - ทำความรู้จัก Probe phase
             - ทำความรู้จักการ Spill

  • Merge Join
  • Nested Loop Join
  • ลูกผสม
  • Sorting
  • Sort operations และการ Tuning Sort
  • Top N Sort และการ Tuning Top N Sort
  • Distinct Sort และการ Tuning Distinct Sort
  • Aggregating Data
  • Stream Aggregate
  • Hash Match (Aggregate) และการ Tuning Hash Match (Aggregate)
  • Filtering aggregations using HAVING และการ Tuning Filtering aggregations using HAVING
  • Execution Plans for Data Modifications
  • Plans for INSERTs
  • Plans for UPDATE และการ Tuning UPDATE
  • Plans for DELETE และการ Tuning DELETE 
  • Execution Plans for Stored Procedures  และการ Tuning Stored Procedures
  • Execution Plans VIEW  และการ Tuning VIEW
  • Execution Plans Function  และการ Tuning Function


บทที่ 12: การเพิ่มประสิทธิภาพคำสั่ง SQL

  • การดึงความสามารถของ Clustered Index Seek และ Index Seek (Nonclustered) ให้เกิดประโยชน์สูงสุด
  • ลดการเกิด Non-SARGable (Non Search ARGument-able)
  • ทำความรู้จัก SARGable (Search ARGument-able)
  • ทำความรู้จัก non-SARGable (Non Search ARGument-able)
  • การหา Non Search ARGument able ทั้งหมดที่อยู่ใน Plan cache เพื่อทำการ Tuning Application ทั้งระบบ
  • ลดการใช้ Functions ครอบ COLUMN ใน WHERE JOIN  HAVING  GROUP BY และ ORDER BY
  • การหาวันที่ ที่น่าสนใจเพื่อลดการใช้งาน Functions ใน WHERE

           - การหา First day of current month
           - การหา Last day of current month
           - การหา First day of next month
           - การหา Last day of next month
           - การหา First day of previous month
           - การหา Last day of previous month
           - การหา First day of current year
           - การหา Last day of current year

  • ลดการคำนวนใน WHERE
  • Data type conversion (Database Engine) และ Data type precedence (Transact-SQL)
  • การหา Query ที่มีการทำ Data type conversion ทั้งหมดที่อยู่ใน Plan cache เพื่อทำการ Tuning Application ทั้งระบบ (หัวใจสำคัญ) 

บทที่ 13: หลักการแก้ไขปัญหาประสิทธิภาพของระบบแบบบูรณาการ
สะสางปัญหาเก่าที่มีอยู่

  • สังเกตุช่วงเวลาที่เกิดปัญหา แต่ละระบบจะมีช่วงที่ผู้ใช้งานระบบหนาแน่นแตกต่างกัน
  • จะหาคำสั่ง SQL ที่เป็น Root cause ที่ทำให้เกิดปัญหาได้อย่างไร ในเมื่อคำสั่ง SQL ที่ถูกส่งมาจาก Application มีเป็นร้อยเป็นพันคำสั่ง
  • การ Tuning Application ทั้งระบบ  
  • Non-SARGable (Non Search ARGument able)
  • เก็บรวบรวม Query ที่ได้มาไปทำการตรวจสอบ Execution Plan ว่ามีค่า Estimated Subtree Cost เป็นเท่าใด
  • ทำการตรวจสอบว่า Execution Plan มี Index ที่ครอบคลุมแล้วหรือยัง
  • DTU CPU หรือ DATA IO percentage สูง เพราะเป็น Ad hoc Query หรือไม่
  • ตรวจสอบอัตราการเจริญเติบโตของข้อมูล ว่าใน 1 เดือน ตารางไหนมีอัตราการเติบโตมากที่สุด เพื่อการตัดสินใจทำการ Archive ข้อมูลไปไว้ที่ ตารางอื่น หรือ Archive ไปไว้ที่ Archive Database
  • มีการทำการ Archive ข้อมูลที่เกิดขึ้นมานานไปไว้ที่ Archive Database อื่นหรือไม่
  • มีการทำการ Archive ข้อมูลที่เกิดขึ้นมานานไปไว้ที่ Archive Table  อื่นหรือไม่
  • การลดค่า Data IO percentage สูง

            กรณีที่ 1  ปัญหามักเกิดจากตอนรันรีพอร์ต
            กรณีที่ 2 เงื่อนไขในการค้นหาข้อมูลมีการกำหนดช่วงเวลาที่เฉพาะเจาะจงหรือไม่

  • ใหญ่ ปะทะ ใหญ่  ต้องทำ Denormalization
  • มีการ Shrink Database อย่างสม่ำเสมอตามรอบเวลาหรือไม่

            - Azure SQL Database Managed Instance
            - SQL Server บน Azure Virtual Machines
            - SQL Server On-Premises

  • มีการ Shrink Database อย่างสม่ำเสมอตามรอบเวลาหรือไม่

            - Azure SQL Database Managed Instance
            - SQL Server บน Azure Virtual Machines
            - SQL Server On-Premises

  • ข้อควรระวัง การ Shrink Database ที่มีขนาดหลาย TB
  • มีการลบ Index ที่ไม่ได้ถูกใช้งานออกไปบ้างหรือไม่
  • การตรวจสอบ Index ที่ไม่ถูกใช้งาน และขั้นตอนในการ Drop Index อย่างถูกต้อง
  • หลักการพิจารณาว่า Index ตัวไหนสามารถลบได้หรือลบไม่ได้
  • Performance recommendations
  • ข้อแนะนำสำหรับการลบ Index

อย่าเติม ปัญหาใหม่เข้าไปให้ Database

  • ก่อนการ Deploy Application ต้องตรวจสอบ Execution Plan ทุกคำสั่ง SQL อย่างเข้มงวด
  • ปัญหาและอุปสรรค์ในการตรวจสอบ Execution Plan คือ ไม่มีสิทธิ์ในการดู Execution Plan แล้วจะทำอย่างไร
  • มีกระบวนพิจารณาและอนุมัติการ Change Software version อย่างเข้มงวด เพื่อให้คณะกรรมการตรวจสอบ ซักถาม เกี่ยวกับ Software version ใหม่ที่จะ Deploy

อย่าละเลย กับระบบงานรอบข้าง

  • ระบบงานที่ต้องใช้ข้อมูลแบบเรียลไทม์กับ Database ของระบบที่เราดูแล
  • ระบบงานที่ต้องดึงข้อมูลแบบ Batch กับ Database ของระบบที่เราดูแล เช่น ระบบ Data Warehouse

ดับไฟ

  • การดับไฟ Application ที่ใช้งาน Azure SQL Database service  

           - Single Database 
           - Elastic Pool
           - Azure SQL Managed Instance
           - SQL Server on Azure VMs

  • การดับไฟ Application ที่ใช้งาน SQL Server On-Premises

ช่องทางการติดต่อฝ่ายดูแลลูกค้า เพื่อสอบถามรายละเอียดก่อนการสั่งซื้อ (Feel free to contact me)
LINE Official Account : @chillchillskill (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.) 
เบอร์ติดต่อ 083-935-2442 , 083-925-2442 (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)

วิธีขอรับเงินคืน
ส่ง email ถึง chillchillskill@chillchillskill.com เพียงระบุ ชื่อ นามสกุล เลขที่บัญชีธนาคาร ชื่อคอร์ส และระบุ ขอรับเงินคืน โดยไม่ต้องระบุเหตุผลใดๆ
โดยทาง ChillChillSkill จะทำการโอนเงินคืนภายใน 1 วันทำการ (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.) และทำการแจ้งผลการโอนเงินคืนช่องทาง email 
ติดต่อสอบถามสถานะการโอนเงินคืนด่วนได้ที่ช่องทาง 
LINE Official Account : @chillchillskill (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)
เบอร์ติดต่อ 083-935-2442 , 083-925-2442 (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)

วิธีการรับใบ Certificate
เมื่อเรียนจบคอร์สแล้ว สามารถติดต่อขอรับใบ Certificate ได้ที่ช่องทางดังต่อไปนี้
LINE Official Account : @chillchillskill (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)
ให้ทำการแจ้งชื่อ นามสกุล ที่ต้องการให้ปรากฏในใบ Certificate และ email เพื่อใช้ในการส่งใบ Certificate

พบปัญหาการใช้งานระบบ สามารถติดต่อ ChillChillSkill ที่ช่องทางดังต่อไปนี้
LINE Official Account : @chillchillskill (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)
เบอร์ติดต่อ 083-935-2442 , 083-925-2442 (จันทร์ - อาทิตย์ เวลา 10.00-22.00 น.)

บทเรียน :