การปรับแต่งประสิทธิภาพ SQL

Dec 19 2022
การปรับแต่งประสิทธิภาพ SQL เป็นกระบวนการของการเพิ่มประสิทธิภาพการสืบค้น SQL เพื่อให้แน่ใจว่าดำเนินการได้เร็วที่สุด มีปัจจัยหลายอย่างที่ส่งผลต่อประสิทธิภาพการทำงานของเคียวรี SQL เช่น จำนวนตารางที่เคียวรี ขนาดและจำนวนคอลัมน์ในตาราง และดัชนีในตาราง

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

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

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

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

ในฐานะนักพัฒนา เราทราบดีว่าการสืบค้น SQL สามารถเขียนได้หลายวิธี แต่เราควรปฏิบัติตามแนวทางปฏิบัติ/เทคนิคที่ดีที่สุดเพื่อให้ได้ประสิทธิภาพการสืบค้นที่ดีขึ้น บางส่วนของพวกเขาถูกเน้นด้านล่าง:

  1. ใช้ EXISTS แทน IN เพื่อตรวจสอบการมีอยู่ของข้อมูล
    2. หลีกเลี่ยง * ในคำสั่ง SELECT ตั้งชื่อคอลัมน์ที่คุณต้องการ
    3. เลือกประเภทข้อมูลที่เหมาะสม เช่น ในการจัดเก็บสตริงให้ใช้ varchar แทนประเภทข้อมูลข้อความ ใช้ประเภทข้อมูลข้อความ เมื่อใดก็ตามที่คุณต้องการจัดเก็บข้อมูลขนาดใหญ่ (มากกว่า 8,000 ตัวอักษร)
    4. หลีกเลี่ยง nchar และ nvarchar หากเป็นไปได้ เนื่องจากข้อมูลทั้งสองประเภทใช้หน่วยความจำเพียงสองเท่าเป็น char และ varchar
    5. หลีกเลี่ยง NULL ในฟิลด์ความยาวคงที่ ในกรณีที่ต้องการ NULL ให้ใช้ฟิลด์ความยาวผันแปรได้ (varchar) ที่ใช้พื้นที่น้อยกว่าสำหรับ NULL
    6. หลีกเลี่ยงการมีมาตรา ต้องมีอนุประโยคหากคุณต้องการกรองผลลัพธ์ของการรวมเพิ่มเติม
    7. สร้างดัชนีแบบคลัสเตอร์และไม่คลัสเตอร์
    8. ทำให้ดัชนีคลัสเตอร์มีขนาดเล็กเนื่องจากฟิลด์ที่ใช้ในดัชนีคลัสเตอร์อาจใช้ในดัชนีที่ไม่ใช่คลัสเตอร์
    9. คอลัมน์ที่เลือกส่วนใหญ่ควรวางไว้ซ้ายสุดในคีย์ของดัชนีที่ไม่ใช่แบบคลัสเตอร์
    10. วางดัชนีที่ไม่ได้ใช้
    11. ดีกว่าที่จะสร้างดัชนีในคอลัมน์ที่มีค่าจำนวนเต็มแทนตัวอักษร ค่าจำนวนเต็มใช้ค่าโสหุ้ยน้อยกว่าค่าอักขระ
    12. ใช้การรวมแทนแบบสอบถามย่อย
    13. ใช้นิพจน์ WHERE เพื่อจำกัดขนาดของตารางผลลัพธ์ที่สร้างด้วยการรวม
    14. ใช้ TABLOCKX ขณะแทรกลงในตารางและ TABLOCK ขณะผสาน
    15. ใช้ WITH (NOLOCK) ขณะสอบถามข้อมูลจากตารางใดๆ
    16. ใช้ SET NOCOUNT ON และใช้ TRY-CATCH เพื่อหลีกเลี่ยงสภาวะติดตาย
    17. หลีกเลี่ยงเคอร์เซอร์เนื่องจากเคอร์เซอร์ทำงานช้ามาก
    18. ใช้ตัวแปร Table แทนตาราง Temp การใช้ตาราง Temp ต้องมีการโต้ตอบกับฐานข้อมูล TempDb ซึ่งเป็นงานที่ต้องใช้เวลา
    19. ใช้ UNION ALL แทน UNION ถ้าเป็นไปได้
    20. ใช้ชื่อ Schema ก่อนชื่อวัตถุ SQL
    21. ใช้ Stored Procedure สำหรับข้อมูลที่ใช้บ่อยและการสืบค้นที่ซับซ้อนมากขึ้น
    22. ทำธุรกรรมให้เล็กที่สุดเท่าที่จะทำได้ เนื่องจากธุรกรรมจะล็อคข้อมูลตารางการประมวลผลและอาจส่งผลให้เกิดการหยุดชะงัก
    23. หลีกเลี่ยงคำนำหน้า “sp_” ด้วยชื่อโพรซีเดอร์ที่จัดเก็บโดยผู้ใช้กำหนด เนื่องจาก SQL Server จะค้นหาโพรซีเดอร์ที่ผู้ใช้กำหนดในฐานข้อมูลหลักก่อน และหลังจากนั้นในฐานข้อมูลเซสชันปัจจุบัน
    24. หลีกเลี่ยงการใช้ Scalar Sub Query ที่ไม่สัมพันธ์กัน ใช้แบบสอบถามนี้เป็นแบบสอบถามแยกต่างหากแทนที่จะเป็นส่วนหนึ่งของแบบสอบถามหลัก และเก็บผลลัพธ์ไว้ในตัวแปร ซึ่งสามารถอ้างอิงได้ในแบบสอบถามหลักหรือส่วนต่อมาของชุดงาน
    25. หลีกเลี่ยง Multi-statetable Table Valued Functions (TVFs) TVF แบบหลายคำสั่งมีราคาสูงกว่า TVF แบบอินไลน์

    ดังที่เราได้เห็นข้างต้น ใน SQL Server มีหลายขั้นตอนที่คุณสามารถทำได้เพื่อปรับปรุงประสิทธิภาพของแบบสอบถามและฐานข้อมูลของคุณโดยรวม มีหลายขั้นตอนที่จะใช้ได้กับ RDBMS อื่นๆ เช่นเดียวกับ ORACLE
  1. ใช้ EXPLAIN PLAN หรือ AUTOTRACE เพื่อวิเคราะห์แผนการดำเนินการของข้อความค้นหาของคุณและระบุปัญหาเกี่ยวกับวิธีดำเนินการ
  2. ใช้คำใบ้ INDEX เพื่อระบุว่าควรใช้ดัชนีใดโดยเครื่องมือเพิ่มประสิทธิภาพสำหรับแบบสอบถามเฉพาะ
  3. ลองใช้คำใบ้เช่น FULL หรือ INDEX_FFS เพื่อบังคับให้เครื่องมือเพิ่มประสิทธิภาพใช้การสแกนตารางแบบเต็มหรือดัชนีการสแกนแบบเต็มอย่างรวดเร็วตามลำดับ
  4. ใช้คำใบ้ OPTIMIZER_MODE เพื่อระบุโหมดการเพิ่มประสิทธิภาพเฉพาะสำหรับแบบสอบถาม
  5. พิจารณาใช้มุมมองที่เป็นรูปธรรมเพื่อคำนวณล่วงหน้าและจัดเก็บข้อมูลที่เข้าถึงบ่อย ซึ่งสามารถปรับปรุงประสิทธิภาพของการค้นหาที่เข้าถึงข้อมูลนั้นได้
  6. ใช้แพ็คเกจ DBMS_STATS เพื่อวิเคราะห์และรวบรวมสถิติเกี่ยวกับฐานข้อมูลและออบเจกต์ ซึ่งสามารถช่วยให้เครื่องมือเพิ่มประสิทธิภาพตัดสินใจอย่างชาญฉลาดยิ่งขึ้นเมื่อสร้างแผนการดำเนินการ
  7. พิจารณาใช้การแบ่งพาร์ติชันเพื่อแบ่งตารางขนาดใหญ่ออกเป็นส่วนย่อยๆ ที่จัดการได้มากขึ้น ซึ่งสามารถปรับปรุงประสิทธิภาพของคิวรีที่เข้าถึงตารางเหล่านั้นได้
  8. ใช้ SQL Tuning Advisor เพื่อระบุและแก้ไขปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นกับคำสั่ง SQL ของคุณ
  9. นี่เป็นเพียงส่วนหนึ่งของเทคนิคมากมายที่คุณสามารถใช้เพื่อปรับปรุงประสิทธิภาพการสืบค้นและฐานข้อมูล Oracle SQL ของคุณ โปรดทราบว่าขั้นตอนเฉพาะที่คุณต้องทำจะขึ้นอยู่กับฐานข้อมูลและปริมาณงานเฉพาะของคุณ
  10. เป็นความคิดที่ดีเสมอที่จะปรึกษากับผู้ดูแลระบบฐานข้อมูลหรือผู้เชี่ยวชาญคนอื่นๆ หากคุณประสบปัญหาด้านประสิทธิภาพ

หลายวิธีในการเรียนรู้ GCP ฟรีด้วย Google Cloud ในช่วงวันหยุด

การทำความเข้าใจ

คำสั่ง Linux สำหรับการเรียนรู้บนคลาวด์

มีความสุขในการอ่าน…..เรียนรู้อย่างมีความสุข!