Tìm hiểu các cơ sở dữ liệu hệ thống (system databases) trong SQL Server

Trong bài viết này Stanford sẽ giúp các bạn đang tìm hiểu về cơ sở dữ liệu SQL tìm hiểu các cơ sở dữ liệu hệ thống (system databases) có sẵn trong hệ quản trị SQL Server.

Những cơ sở dữ liệu hệ thống mặc định

Sau khi cài đặt SQL Server mặc định luôn có 4 cơ sở dữ liệu hệ thống (system databases) đi kèm gồm master, tempdb, model, msdb. Ngoài ra còn có một database khác luôn trong trạng thái ẩn kể cả khi bạn query từ các catalog views cũng không nhìn thấy nó được. Database này gọi là resource database và có tên là mssqlsystemresource. Hoặc nếu bạn có sử dụng SQL Server replication thì trên distributor server có thêm một system database là distribution. Hôm nay chúng ta sẽ tìm hiểu kiến thức cơ bản về những databases này để biết công dụng của từng databases là gì, cần thực hiện công việc bảo trì như thế nào, cái nào cần backup, cái nào không.


Cơ sở dữ liệu master

Mỗi database trong SQL Server đều có những catalog lưu trữ thông tin về các objects của database đó. Master database cũng như vậy, ngoài ra nó còn chứa các thông tin ở cấp độ hệ thống như thông tin dung lượng đĩa cứng, danh sách các database trong hệ thống, danh sách các files đã cấp phát và dung lượng đã dùng, thông số cấu hình SQL Server, endpoints, các tài khoản login, quyền hạn được gán trên các login này. Chính vì vậy mà các hành động nhưng tạo mới databases, thay đổi cấu hình hệ thống, thay đổi các tài khoản logins đều làm thay đổi nội dung master database. Đây là database quan trọng của hệ thống và có nhiều lý do để ta nên backup định kì, và có thể khôi phục khi cần.

Cơ sở dữ liệu model

Đây được xem là cơ sở dữ liệu mẫu trong SQL Server, tất cả những cơ sở dữ liệu mới tạo ra đều được sao chép từ những objects và thuộc tính của cơ sở dữ liệu model này. Chẳng hạn bạn muốn cơ sở dữ liệu mới nào cũng có user A với permission xyz và có recovery model là simple thì hãy tạo user A trong database model, set permission xyz tương ứng và đổi recovery model về simple. Tất cả những databases tạo ra sau đó (kể cả system database như tempdb) sẽ thừa hưởng những cài đặt này ở model database. Việc backup database này cũng tương đối cần thiết và chỉ cần thực hiện full backup sau mỗi lần bạn thay đổi những cấu hình liên quan đến cơ sở dữ liệu model.

Cơ sở dữ liệu msdb

Cơ sở dữ liệu msdb được sử dụng bởi rất nhiều dịch vụ như SQL Server Agent, backup, replication tasks, service broker, log shipping, database mail. Bạn có thể truy cập thông tin về các SQL Agent job như job steps, job command, job schedule được lưu trong msdb dưới dạng bảng. Hoặc thông tin về các thành phần tham gia log shipping database nào tham gia, đường dẫn chứa backup, danh sách secondary servers,… Hoặc lịch sử backup/restore của các databases trong SQL Server. 

Tất cả những thông tin này bạn đều có thể truy cập thông qua T-SQL nhưng Microsoft không khuyến khích các bạn thêm xóa sửa data những bảng này bằng T-SQL. Thay vào đó mỗi dịch vụ đều có thể thao tác bằng giao diện trên SSMS hoặc thông qua các system stored procedures tương ứng được cung cấp bởi MS (ví dụ các procedures cấu hình database mail server, hoặc log shipping). Bởi vì msdb chứa rất nhiều thông tin của nhiều service nên được khuyến khích thực hiện backup thường xuyên, đặc biệt sau mỗi lần có những thay đổi trên msdb.

Cơ sở dữ liệu tempdb

Cơ sở dữ liệu tempdb được xem là không gian làm việc của các user connections, nơi chứa những dữ liệu tạm trong quá trình xử lý câu truy vấn cũng như các thao tác sort, hash. Ngoài ra những system process như DBCC CheckDB, index online operations đều cần sử dụng tempdb. Thêm vào đó là những objects các bạn tạo như bảng tạm, biến bảng cũng được lưu trong tempdb. Vì nó là nơi lưu trữ data trong quá trình xử lý của một process nên khi có nhiều processes đồng thời xảy ra việc cấp phát không gian lưu trữ trên tempdb là cực kỳ bận rộn, dễ tranh chấp nhau và ảnh hưởng hiệu suất chung của server. 

Do đó việc chọn kích thước data file size và cấu hình tempdb rất quan trọng cho việc tối ưu hiệu suất SQL Server. Một điều hết sức đáng chú ý khác là tempdb được tạo mới mỗi khi SQL Server service khởi động, và bản thân tempdb cũng được copy từ cơ sở dữ liệu model khi tạo mới. Vì luôn được tạo mới nên những objects bạn tạo trước đó trong tempdb sẽ bị mất mỗi khi SQL Server shutdown hoặc restart. Bạn không cần thực hiện việc backup database này vì những data lưu trữ trong tempdb chỉ có giá trị đối với một process trong lần thực thi đó.

Cơ sở dữ liệu resource

Chính vì mssqlsystemresource là một cơ sở dữ liệu ẩn nên chúng ta cũng không cần thực hiện việc bảo trì gì liên quan đến cơ sở dữ liệu này. Bản thân mình cũng không tương tác nhiều với cơ sở dữ liệu này trong quá trình làm việc với SQL Server từ trước tới nay. Bạn có thể tìm hiểu thêm về cơ sở dữ liệu resource này ở đây.

Cơ sở dữ liệu distribution

Đây là cơ sở dữ liệu được sử dụng bởi SQL Server replication, nơi chứa các meta data của các loại replication. Đối với transactional replication, đây là nơi chứa các transactions và commands trước khi chúng được replicated qua các subcriber servers. Bởi vì tình nhất quán của dữ liệu nên việc bạn phục hồi cơ sở dữ liệu distribution có thể gây thiếu transactions trên subcribers nên tùy thuộc vào chiến lược recovery của bạn mà xem xét kế hoạch backup.

Như vậy qua bài viết này Stanford đã giúp bạn hiểu rõ hơn trên SQL Server có những cơ sở dữ liệu hệ thống nào và nó sử dụng cho mục đích gì. Chúc các bạn học tập tốt !

Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao có thể tham gia ngay khóa học sql cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé.

=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I

Tags: cơ sở dữ liệu hệ thống, system databases