การปลดล็อกประสิทธิภาพของฐานข้อมูล: การดึงข้อมูลแบบเทอร์โบชาร์จใน .NET ด้วยกลยุทธ์การปรับให้เหมาะสมเหล่านี้

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

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

// Before optimizing
var customers = dbContext.Customers.Where(c => c.LastName == "Smith").ToList();

เพื่อเพิ่มประสิทธิภาพการสืบค้นนี้ เราสามารถเพิ่มดัชนีในคอลัมน์ LastName ได้:

// After optimizing
var customers = dbContext.Customers.WithIndex("IX_Customers_LastName")
                                  .Where(c => c.LastName == "Smith")
                                  .ToList();

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

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

// Before optimizing
var allOrders = dbContext.Orders.ToList();

// Implementing pagination
var pageSize = 20;
var pageNumber = 2;

var orders = dbContext.Orders.Skip((pageNumber - 1) * pageSize)
                             .Take(pageSize)
                             .ToList();

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

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

// Before optimizing
var customer = dbContext.Customers.FirstOrDefault(c => c.Id == 1);

// Implementing caching
var cacheKey = "Customer_1";
var customer = memoryCache.GetOrCreate(cacheKey, entry =>
{
    entry.SlidingExpiration = TimeSpan.FromMinutes(10);
    return dbContext.Customers.FirstOrDefault(c => c.Id == 1);
});

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

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

// Before optimizing
var allCustomers = dbContext.Customers.ToList();

// Fetching only required columns
var customers = dbContext.Customers.Select(c =>new
                              {
                                    c.Id,
                                    c.FirstName,
                                    c.LastName
                              }).ToList();

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

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

// Before optimizing
var customers = dbContext.Customers.Where(c => c.City == "New York").ToList();

// Implementing asynchronous data retrieval
var customers = await dbContext.Customers.Where(c => c.City == "New York").ToListAsync();

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

แค่นั้นแหละ! คุณทำมันจนจบแล้ว

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

ติดตามฉันทาง Paul Ar

หากคุณชอบบทความนี้และต้องการรับเนื้อหาเพิ่มเติมเช่นนี้ โปรดสมัครรับจดหมายข่าวของฉันโดยคลิก "ที่นี่" คุณจะเป็นคนแรกที่รู้ว่าเมื่อฉันเผยแพร่บทความใหม่ และคุณสามารถยกเลิกการสมัครได้ตลอดเวลา