Kiểm Tra Và Thu Gọn File Data File Log Của Database Trong SQL Server

  • Kiểm tra kích cỡ file database
  • Kiểm tra kích cỡ bảng trong database
  • Thu gọn database với SHRINKDATABASE
  • Thu gọn LOG với SHRINKFILE
  • Kiểm tra query đang thi hành

Kiểm tra kích thước, nơi lưu file dữ liệu và log của CSDL SQL Server

Mỗi Database trong SQL Server có một định danh database_id trong sys.master_files, mỗi Database có các file dữ liệu và file log. Truy vấn sau sẽ hiện thị kích thước (MB) của các file này, cũng như nơi lưu trữ file này trên ổ đĩa

Trong truy vấn có thiết lập lọc database_id > 4 để không thống kế các Database hệ thống. Ngoài ra nếu muốn truy vấn đến một CSDL cụ thể bạn tự cho vào lọc theo database_id hoặc database_name ở mệnh đề where.

select database_id as db_id, DB_NAME(database_id) as db_name, type_desc, name as [FileName], physical_name as [File Path], CAST(ROUND(size/128.0, 2) as numeric(36,2)) as [Size (MB)] from sys.master_files where type in (0,1) and database_id > 4 order by database_id
Kết quả truy vấn xem kích thước file dữ liệu và log

Kiểm tra kích thước của các bảng trong CSDL SQL Server

Câu truy vấn sau hiện hiện thị thông tin thống kê về kích thước của các bảng biểu trong cơ sở dữ liệu.

Giả sử kiểm tra CSDL có tên là webdb, thì nó liệt kê tất cả các bảng của CSDL, mỗi bảng có bao nhiêu dòng dữ liệu, bảng đó chiếm bao nhiêu dung lượng (không gian lưu trữ được cấp phát)

use webdb; select t.NAME as [Table], p.rows, CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) as numeric(36, 2)) as [Total Space (MB)], CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) as numeric(36, 2)) as [Used Space(MB)], CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) as numeric(36, 2)) as [Unused Space (MB)] from sys.tables t inner join sys.indexes i ON t.OBJECT_ID = i.object_id inner join sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id inner join sys.allocation_units a ON p.partition_id = a.container_id left outer join sys.schemas s ON t.schema_id = s.schema_id where t.NAME not like 'dt%' and t.is_ms_shipped = 0 and i.OBJECT_ID > 255 group by t.Name, s.Name, p.Rows order by [Total Space (MB)] DESC, t.Name
Kết quả truy vấn thống kê kích thước các bảng

Sử dụng SHRINKDATABASE và SHRINKFILE thu nhỏ kích thước file Database

Khi Database hoạt động, file dữ liệu và file log có thể có dung lượng lớn hơn dữ liệu thực nó chiếm dữ (như cấp trước dung lượng dự trữ) hoặc không thu hồi dữ liệu xóa ... Để giảm dung lượng có thể dùng chỉ thị DBCC SHRINKDATABASE

DBCC SHRINKDATABASE cố gắng thu gọn dung lượng file dữ liệu và file log của một database cụ thể.

Cú pháp:

DBCC SHRINKDATABASE(database_name, target_percent)
  • database_name tên cơ sơ dữ liệu muốn thu gọn dung lượng
  • target_percent để lại phần trăm dung lượng dự trữ sau thu gọn, như 5%, 10%

Ví dụ, thu gọn log và data cho Database có tên shopdata, với mục tiêu để lại 5% dung lượng dự trữ, thực hiện truy vấn T-SQL sau

USE shopdata; ALTER DATABASE shopdata SET RECOVERY SIMPLE GO DBCC SHRINKDATABASE(shopdata,5) GO ALTER DATABASE shopdata SET RECOVERY FULL GO

Trong T-SQL trên có đoạn chuyển Recovery Model sang SIMPLE trước khi SHRINKDATABASE, để biết thêm xem: backup và restore database trong SQL Server

Thu gọn LOG

Đối với log file, bạn có thể sử dụng SHRINKFILE để thu gọn về một kích thước mục tiêu, ví dụ database shopdata có file log là shopdata_log, để thu gọn bạn chạy

use shopdata; ALTER DATABASE shopdata SET RECOVERY SIMPLE; GO DBCC SHRINKFILE(N'shopdata_log', 1) GO ALTER DATABASE shopdata SET RECOVERY FULL; GO

Kiểm tra các query đang chạy trên SQL Server

Với Database lớn, thực hiện thu gọn có khi mất thời gian dài, để kiểm tra xem các query còn đang chạy thì thực hiện

SELECT * FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle) Mục lục bài viết Kiểm tra kích cỡ file databaseKiểm tra kích cỡ bảng trong databaseThu gọn database với SHRINKDATABASEThu gọn LOG với SHRINKFILEKiểm tra query đang thi hành ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB Đăng ký nhận bài viết mới

Từ khóa » Dọc File Sql