การเข้าใจขนาดของฐานข้อมูล SQL Server ของคุณ

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

SQL Server มีวิธีที่ตรงไปตรงมาในการแสดงขนาดรวมและการใช้งานของฐานข้อมูลของคุณ ด้านล่างนี้ เราจะพาคุณไปทำความเข้าใจกับ stored procedure ที่คุณสามารถใช้เพื่อรับข้อมูลเกี่ยวกับพื้นที่ที่ใช้โดยฐานข้อมูล SQL Server ของคุณ ซึ่งใช้ได้กับเวอร์ชันถึง SQL Server 2008

วิธีการ: Stored Procedure

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

ขั้นตอนที่ 1: การตั้งค่า Stored Procedure

นี่คือวิธีการสร้าง stored procedure ที่ชื่อว่า sp_SDS เพื่อสรุปขนาดของฐานข้อมูล:

USE master;
GO

IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
  DROP PROCEDURE dbo.sp_SDS;
GO

CREATE PROCEDURE dbo.sp_SDS 
  @TargetDatabase sysname = NULL,     --  NULL: ทุกฐานข้อมูล
  @Level varchar(10) = 'Database',    -- ตัวเลือก: "Database", "File"
  @UpdateUsage bit = 0,               -- เริ่มต้น: ไม่อัปเดต
  @Unit char(2) = 'MB'                -- หน่วย: เมกะไบต์, กิโลไบต์, กิกะไบต์
AS

ขั้นตอนที่ 2: การตั้งค่าเบื้องต้น

ภายใน stored procedure เราจะทำการตรวจสอบเบื้องต้นและสร้างตารางชั่วคราวเพื่อเก็บข้อมูลฐานข้อมูล:

  • ตรวจสอบฐานข้อมูลเป้าหมาย: หากมีการร้องขอฐานข้อมูลเฉพาะ เราจะแน่ใจว่ามันมีอยู่จริง
  • การสร้างตารางชั่วคราว: เราจะสร้างตารางเพื่อจัดเก็บสถิติฐานข้อมูล รวมถึงขนาดทั้งหมด พื้นที่ที่ใช้ และพื้นที่ว่าง

ขั้นตอนที่ 3: การรวบรวมข้อมูลฐานข้อมูล

จากนั้นเราจะรวบรวมข้อมูลเกี่ยวกับฐานข้อมูลใน SQL Server ของเรา ส่วนประกอบหลักที่เราจะเก็บรวมถึง:

  • ชื่อฐานข้อมูล
  • ประเภท (ข้อมูลหรือบันทึก)
  • ชื่อเชิงตรรกะ
  • ขนาดรวม
  • ขนาดที่ใช้และพื้นที่ว่าง

นี่คือวิธีที่เรานำข้อมูลนี้ออกมา:

SELECT 
  @String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
  + 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);

ขั้นตอนที่ 4: การคำนวณขนาด

หลังจากรวบรวมข้อมูลที่จำเป็นแล้ว เราจะทำการคำนวณเพื่อกำหนดเปอร์เซ็นต์ของพื้นที่ที่ใช้และว่าง:

  • ปรับปรุงพื้นที่ที่ใช้ตามขอบเขตของแต่ละไฟล์
  • คำนวณเปอร์เซ็นต์ของพื้นที่ที่ใช้และว่างสำหรับไฟล์ข้อมูลและไฟล์บันทึก

ขั้นตอนที่ 5: การแสดงผลลัพธ์

สุดท้าย เราจะเลือกและนำเสนอข้อมูลที่คำนวณให้กับผู้ใช้:

SELECT DatabaseName AS 'Database',
  type AS 'Type',
  T AS 'Total',
  U AS 'Used',
  [U(%)] AS 'Used (%)',
  F AS 'Free',
  [F(%)] AS 'Free (%)',
  PhysicalName
FROM dbo.##Tbl_CombinedInfo 
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%') 
ORDER BY DatabaseName ASC, type ASC;

ตัวอย่างการทำงาน

เพื่อเรียกใช้ stored procedure นี้ เพียงแค่เรียกใช้งานดังนี้:

EXEC dbo.sp_SDS;

คุณยังสามารถกำหนดฐานข้อมูลเฉพาะหรือปรับหน่วยสำหรับผลลัพธ์ได้:

EXEC dbo.sp_SDS 'your_database_name', 'Database', 1, 'GB';

สรุป

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

อย่าลังเลที่จะแบ่งปันประสบการณ์ของคุณหรือการปรับเปลี่ยนที่คุณได้ทำกับสคริปต์นี้ตามความต้องการเฉพาะของคุณ!