Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bảo trì cơ sở dữ liệu hệ thống máy chủ SQL

Cài đặt SQL Server theo mặc định tạo một số cơ sở dữ liệu hệ thống cho mỗi phiên bản để duy trì và quản lý phiên bản đó. Trong bài viết này, chúng tôi sẽ xem xét các cơ sở dữ liệu hệ thống này và hiểu trách nhiệm của chúng.

Cơ sở dữ liệu hệ thống máy chủ SQL

Trong SQL Server, Cơ sở dữ liệu hệ thống được tạo trong quá trình cài đặt để lưu trữ chi tiết cấu hình phiên bản SQL Server cụ thể để hoạt động bình thường. Mỗi cài đặt SQL Server tạo ra tối thiểu 5 cơ sở dữ liệu hệ thống và 1 cơ sở dữ liệu hệ thống liên quan đến Bản sao có tên là cơ sở dữ liệu phân phối sẽ được tạo bởi người dùng nếu Nhân bản được định cấu hình trong trường hợp đó. Mỗi cơ sở dữ liệu Hệ thống có mục đích của nó và chúng tôi sẽ điều tra chi tiết điều này ở phần sau của bài viết này.

Cơ sở dữ liệu hệ thống là:

  • Chính - Được cài đặt theo Mặc định
  • Msdb - Được cài đặt theo Mặc định
  • Kiểu - Được cài đặt theo Mặc định
  • Tempdb - Được cài đặt theo Mặc định
  • Tài nguyên - Được cài đặt theo Mặc định . Được giới thiệu trong SQL Server 2005 và có sẵn trong các phiên bản SQL Server mới hơn và do đó không khả dụng trong SQL Server 2000 và các phiên bản trước đó.
  • Phân phối - Được tạo bởi Hành động của Người dùng . Người dùng có thể tạo cơ sở dữ liệu phân phối để định cấu hình Replication.

Để xem cơ sở dữ liệu hệ thống được cài đặt trong SQL Server, chúng ta có thể sử dụng SSMS.

Kết nối với phiên bản SQL Server của bạn, mở rộng Cơ sở dữ liệu > Cơ sở dữ liệu hệ thống :

Bạn có nhận thấy rằng Tài nguyên cơ sở dữ liệu bị thiếu trong danh sách trên? Vấn đề là, cơ sở dữ liệu tài nguyên là một cơ sở dữ liệu hệ thống đặc biệt không được liệt kê trong Trình khám phá đối tượng SSMS. Tuy nhiên, chúng tôi có thể truy vấn chi tiết cơ sở dữ liệu tài nguyên từ một DMV hệ thống có tên sys.sysaltfiles và thực hiện truy vấn:

SELECT dbid, db_name(dbid) database_name, fileid, name, filename
FROM sys.sysaltfiles
WHERE dbid NOT BETWEEN 5 AND 11

Trong kết quả, chúng ta có thể thấy cơ sở dữ liệu hệ thống theo thứ tự: master, tempdb, model, msdb, Distribution và cuối cùng là sđd 32767 là một cơ sở dữ liệu tài nguyên. Tuy nhiên, cơ sở dữ liệu tài nguyên này không hiển thị bất kỳ tên cơ sở dữ liệu nào vì nó không có mục nhập trong sys.databases . Tôi đã loại trừ một số cơ sở dữ liệu người dùng từ sđd 5 đến 11 và bao gồm AdventureWorks_REPL làm ví dụ cho thấy DMV cũng có thể hiển thị Cơ sở dữ liệu người dùng. Chúng ta sẽ đi vào chi tiết hơn về Cơ sở dữ liệu tài nguyên và các cơ sở dữ liệu hệ thống khác sau.

Hạn chế về Cơ sở dữ liệu Hệ thống SQL

Vì Cơ sở dữ liệu hệ thống nắm giữ các chi tiết cấu hình hệ thống quan trọng, nên cần có các biện pháp bảo mật thích hợp để tránh việc vô tình xóa dữ liệu. Do đó, Cơ sở dữ liệu hệ thống có các hạn chế dưới đây so với cơ sở dữ liệu người dùng:

Cơ sở dữ liệu hệ thống không thể ngoại tuyến

Chúng tôi có thể đưa cơ sở dữ liệu người dùng ngoại tuyến bằng lệnh ALTER DATABASE như được hiển thị bên dưới:

ALTER DATABASE AdventureWorks SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Tuy nhiên, nếu chúng tôi cố gắng lấy bất kỳ cơ sở dữ liệu hệ thống nào NGOẠI TUYẾN bằng lệnh trên, thì chúng tôi sẽ nhận được lỗi như hình dưới đây:

Không thể loại bỏ cơ sở dữ liệu hệ thống

Mặc dù chúng tôi có thể loại bỏ cơ sở dữ liệu người dùng bằng cách thực hiện lệnh DROP DATABASE

DROP DATABASE AdventureWorks

Nếu chúng tôi cố gắng DROP bất kỳ cơ sở dữ liệu hệ thống nào, thì chúng tôi sẽ nhận được lỗi như hình dưới đây:

Không thể thay đổi chủ sở hữu của cơ sở dữ liệu hệ thống

Chủ sở hữu của cơ sở dữ liệu hệ thống là sa theo mặc định. Nó không thể thay đổi được. Nỗ lực đổi tên chủ sở hữu cơ sở dữ liệu Hệ thống sẽ gây ra lỗi.

Tuy nhiên, có một ngoại lệ. Có thể sửa đổi chủ sở hữu của msdb cơ sở dữ liệu.

use [master];
GO
ALTER AUTHORIZATION ON DATABASE::[master] TO [RRJ\RRJ]
GO

Không thể thay đổi tên cơ sở dữ liệu của cơ sở dữ liệu hệ thống

Nếu chúng tôi cố gắng đổi tên cơ sở dữ liệu hệ thống, thì chúng tôi sẽ nhận được thông báo lỗi như hình dưới đây:

ALTER DATABASE master MODIFY NAME = RRJ_master;
GO

Không thể thay đổi sự đối chiếu của các cơ sở dữ liệu hệ thống

Cơ sở dữ liệu hệ thống được tạo với tên Collation được chọn trong thời gian cài đặt SQL Server. Sau khi cài đặt, không thể thay đổi Đối chiếu của cơ sở dữ liệu hệ thống. Cách duy nhất để thay đổi đối chiếu Cơ sở dữ liệu hệ thống là cài đặt lại phiên bản SQL Server với đối chiếu chính xác.

Không thể đặt nhóm tệp chính của Cơ sở dữ liệu hệ thống thành Chế độ READ_ONLY

Vì cơ sở dữ liệu hệ thống nắm bắt thông tin quan trọng liên quan đến các phiên bản SQL Server, nên SQL Server không cho phép các tệp dữ liệu chính nằm trong Nhóm tệp chính được đặt thành chỉ đọc .

Không thể bật tính năng thu thập dữ liệu thay đổi trên cơ sở dữ liệu hệ thống

Tính năng này được sử dụng để theo dõi mọi thay đổi DML xảy ra trên cơ sở dữ liệu trên các bảng được theo dõi. Nếu chúng tôi cố gắng kích hoạt tính năng Change Data Capture trên bất kỳ cơ sở dữ liệu hệ thống nào, thì lỗi sẽ xảy ra:

use master
GO
exec sys.sp_cdc_enable_db

Bây giờ chúng ta đã rõ về sự khác biệt giữa cơ sở dữ liệu hệ thống và cơ sở dữ liệu người dùng, chúng ta có thể xem xét mục đích của từng cơ sở dữ liệu hệ thống một cách chi tiết hơn.

Cơ sở dữ liệu chính trong SQL Server

Cơ sở dữ liệu hệ thống chính nắm giữ các chi tiết cấu hình quan trọng liên quan đến phiên bản SQL Server . SQL Server dựa vào chúng khi nó bắt đầu một phiên bản cụ thể. Nếu không thể khởi động cơ sở dữ liệu chính vì lý do nào đó, phiên bản SQL Server cũng không thể khởi động.

Các chi tiết chính này được lưu trữ trong cơ sở dữ liệu chính bao gồm tài khoản Đăng nhập, chi tiết Máy chủ được liên kết, điểm cuối, cài đặt cấu hình hệ thống và chi tiết về tất cả cơ sở dữ liệu Người dùng.

Bây giờ đến câu hỏi. Làm cách nào để dịch vụ SQL Server biết được dữ liệu và tệp nhật ký của cơ sở dữ liệu chính có sẵn ở đâu? Câu trả lời nằm trong các tham số cấu hình khởi động của dịch vụ SQL Server.

Để xem các tham số cấu hình khởi động của phiên bản SQL Server, trước tiên chúng ta nên biết về công cụ tích hợp có tên SQL Server Configuration Manager . Nó giúp quản lý tất cả các dịch vụ liên quan đến SQL Server của tất cả các phiên bản có sẵn trên Máy chủ cụ thể. Để xem những dữ liệu này, hãy mở Trình quản lý Cấu hình Máy chủ SQL và nó sẽ hiển thị danh sách như được hiển thị bên dưới:

Nhấp vào Dịch vụ SQL Server để xem danh sách Dịch vụ có sẵn trên Máy chủ hoặc PC này:

Chờ một chút! Có vẻ quen thuộc với services.msc liệt kê tất cả các dịch vụ có sẵn trong Máy chủ nhưng chỉ hiển thị các dịch vụ liên quan đến Máy chủ SQL.

Hãy mở services.msc để xem nó trông như thế nào và xác minh sự khác biệt giữa Trình quản lý cấu hình SQL Server và services.msc để so sánh cái nào tốt hơn.

Trình quản lý cấu hình máy chủ SQL hiển thị ID quy trình của các dịch vụ hiện đang chạy. Chúng tôi không thể tìm thấy điều đó trong services.msc . Tất nhiên, chúng tôi có thể lấy thông tin này từ Trình quản lý tác vụ Windows, nhưng Trình quản lý cấu hình máy chủ SQL đã giúp chúng tôi xem thông tin này ở một nơi duy nhất.

Bây giờ, chúng ta hãy xem chi tiết. Nhấp chuột phải vào dịch vụ SQL Server từ services.msc . Bạn sẽ thấy các trình đơn bên dưới: Chung , Đăng nhập , Phục hồi Sự phụ thuộc .

Từ Trình quản lý cấu hình SQL Server, nhấp chuột phải vào SQL Server (MSSQLSERVER) dịch vụ> Thuộc tính . Nó liệt kê các menu bên dưới - Đăng nhập, Dịch vụ. FileStream, Nâng cao, Luôn sẵn sàng OnHigh Thông số khởi động .

Thông số khởi động của Dịch vụ lưu trữ vị trí của dữ liệu cơ sở dữ liệu chính và tệp nhật ký chỉ có sẵn trong Trình quản lý cấu hình máy chủ SQL .

Nhấp vào Tham số khởi động để xem chi tiết - cho Hiện có Thông số . Bạn sẽ thấy thông tin sau:

  • Vị trí thực của cơ sở dữ liệu chính Tệp dữ liệu
  • Vị trí thực của cơ sở dữ liệu chính Tệp Nhật ký Giao dịch
  • Vị trí thực của Thư mục ErrorLog nơi đặt các lỗi liên quan đến SQL Server Service.

Chúng tôi có thể thêm các thông số khởi động khác như Chế độ một người dùng (-m) , v.v. Đối với điều đó, chúng tôi cần chỉ định các giá trị cần thiết trong Chỉ định tham số Khởi động và nhấp vào Thêm .

Chúng tôi nhận thấy rằng Trình quản lý cấu hình SQL Server không chỉ hiển thị các chi tiết nâng cao mà còn cho phép chúng tôi thực hiện rất nhiều cấu hình nâng cao liên quan đến dịch vụ SQL Server. Do đó, cá nhân tôi khuyên bạn nên sử dụng Trình quản lý cấu hình SQL Server để Dừng / Khởi động các dịch vụ liên quan đến SQL Server so với tùy chọn Services.msc mặc định.

Các phương pháp được đề xuất cho Cơ sở dữ liệu tổng thể

Vì cơ sở dữ liệu chính lưu trữ các thông tin chi tiết quan trọng về phiên bản SQL Server, bạn nên làm theo các phương pháp hay nhất trong khi xử lý cơ sở dữ liệu đó.

  • Mọi thay đổi cấu hình trên một phiên bản của SQL Server sẽ được lưu trữ trong cơ sở dữ liệu chính. Do đó, bạn luôn cần sao lưu đầy đủ cơ sở dữ liệu chính để khôi phục về trạng thái mới nhất trong trường hợp chúng tôi đang khôi phục cơ sở dữ liệu chính từ Bản sao lưu đầy đủ, theo yêu cầu.
  • Mặc dù SQL Server cho phép người dùng tạo bảng người dùng hoặc các đối tượng khác trong cơ sở dữ liệu chính, nhưng bạn không nên làm điều đó. Cơ sở dữ liệu chính phải đơn giản và sạch sẽ. Nếu bạn cần tạo các đối tượng người dùng trong cơ sở dữ liệu chính, bạn nên sao lưu toàn bộ cơ sở dữ liệu chính thường xuyên hơn.
  • SQL Server hỗ trợ Tùy chọn thủ tục khởi động để thực thi các Thủ tục được lưu trữ nhất định khi bắt đầu một phiên bản SQL Server. Nó sử dụng sp_procoption thủ tục. Hãy cẩn thận khi sử dụng tùy chọn này vì có mã không tối ưu hoặc logic đệ quy có thể ảnh hưởng đến thời gian khởi động của phiên bản SQL Server.

Nếu SQL Server không thể khởi động do bất kỳ sự cố nào với cơ sở dữ liệu chính, chúng tôi cần khôi phục cơ sở dữ liệu chính từ bản sao lưu tốt đã biết gần đây nhất.

Cơ sở dữ liệu mô hình trong SQL Server

Như tên cho biết, Cơ sở dữ liệu hệ thống mô hình hoạt động như một mô hình hoặc mẫu cho bất kỳ hoạt động tạo cơ sở dữ liệu người dùng nào về đường dẫn tệp, kích thước ban đầu, cài đặt tự động phát triển và mô hình Khôi phục và các tùy chọn cấu hình khác .

Mọi đối tượng Người dùng như bảng, thủ tục, v.v., được tạo trong cơ sở dữ liệu mô hình cũng sẽ được tạo tự động trên cơ sở dữ liệu người dùng mới trong phiên bản SQL Server đó.

Hãy xác minh điều này bằng cách tạo một bảng mới trong cơ sở dữ liệu mô hình:

Hãy kiểm tra xem bảng này có trong cơ sở dữ liệu mô hình không:

Cơ sở dữ liệu Mô hình cũng lưu trữ Đường dẫn tệp mặc định của cơ sở dữ liệu Người dùng như được hiển thị bên dưới trong Thuộc tính cơ sở dữ liệu trong số msdb cơ sở dữ liệu.

Theo cấu hình hiện tại, Kích thước tệp ban đầu của cả Dữ liệu Tệp nhật ký được đặt thành 8 MB và tự động tăng trưởng cho cả hai đều được đặt thành 64 MB.

Nếu bạn cần tạo Cơ sở dữ liệu người dùng trong một đường dẫn tệp khác thay vì vị trí tệp cơ sở dữ liệu mô hình, chúng tôi có thể sửa đổi nó trong Thuộc tính máy chủ của Phiên bản SQL Server đó.

Trong SSMS, nhấp chuột phải vào Máy chủ > Thuộc tính > Cài đặt cơ sở dữ liệu . Xem các vị trí mặc định của Cơ sở dữ liệu:

Thay đổi đường dẫn tệp thành đường dẫn mong muốn và nhấp vào OK . Cơ sở dữ liệu người dùng Dữ liệu Nhật ký tệp sẽ được tạo theo đường dẫn mới mà bạn đã cung cấp.

Hãy tạo cơ sở dữ liệu mới có tên model_test và kiểm tra đường dẫn tệp Dữ liệu và Nhật ký cơ sở dữ liệu mới cùng với các thuộc tính tệp Ban đầu và Tự động phát triển và model_verify trên cơ sở dữ liệu mới.

Hãy xác minh model_test Đường dẫn tệp dữ liệu và nhật ký. Nhấp chuột phải vào model_test cơ sở dữ liệu> Thuộc tính > Tệp :

Như chúng ta có thể thấy, Dữ liệu Nhật ký các tệp của model_test cơ sở dữ liệu được tạo theo đường dẫn có sẵn trong cơ sở dữ liệu mô hình. Giá trị kích thước tệp ban đầu của tệp dữ liệu và tệp nhật ký là 8 MB. Giá trị Tự động phát triển là 64 MB. Các giá trị này phù hợp với cấu hình của cơ sở dữ liệu mô hình.

Bây giờ, chúng tôi sẽ kiểm tra xem model_verify bảng được tạo trong model_test cơ sở dữ liệu. Chúng tôi có thể thấy cơ sở dữ liệu mới này.

Bên cạnh các bảng, điều này áp dụng cho Chế độ xem, Thủ tục được Lưu trữ, Hàm và bất kỳ đối tượng nào được tạo trong cơ sở dữ liệu mô hình.

Thực hành được Đề xuất cho Cơ sở dữ liệu Mô hình

Vì cơ sở dữ liệu mô hình hoạt động như một khuôn mẫu cho bất kỳ việc tạo cơ sở dữ liệu người dùng mới nào, chúng tôi nên thực hiện các phương pháp dưới đây khi xử lý nó:

  • Bất cứ khi nào bạn muốn thực hiện bất kỳ thay đổi nào đối với cấu hình cơ sở dữ liệu mô hình (ví dụ:Kích thước tệp ban đầu, Kích thước tự động phát triển, tạo, sửa đổi hoặc xóa đối tượng người dùng), hãy sao lưu toàn bộ cơ sở dữ liệu mô hình ngay lập tức.
  • Vì mọi đối tượng người dùng được tạo trong cơ sở dữ liệu mô hình đều được tạo trên bất kỳ cơ sở dữ liệu người dùng nào, hãy lưu ý chỉ thêm các đối tượng bắt buộc. Nếu không, rất nhiều đối tượng không cần thiết sẽ được tạo trên tất cả cơ sở dữ liệu người dùng và bạn sẽ mất nhiều thời gian để phân loại chúng cũng như dọn dẹp cơ sở dữ liệu của mình.
  • Định cấu hình các tham số Kích thước tệp ban đầu và Tự động phát triển cho các tệp dữ liệu và nhật ký. Nó giúp quản lý kích thước tệp Dữ liệu và Nhật ký trong cơ sở dữ liệu người dùng tốt hơn và cải thiện hiệu suất.

Cơ sở dữ liệu MSDB

Cơ sở dữ liệu hệ thống msdb lưu trữ thông tin quan trọng dưới đây trên các bảng hệ thống:

  • Các mục liên quan đến SQL Server Agent như Công việc, Lịch sử công việc, Cảnh báo, Nhà điều hành, proxy, v.v.
  • SQL Server có các tính năng như Môi giới dịch vụ và Thư cơ sở dữ liệu với cấu hình và chi tiết lịch sử.
  • Chi tiết về Sao lưu và Khôi phục Máy chủ SQL được lưu trữ bên trong các bảng cơ sở dữ liệu msdb.
  • Cấu hình nhật ký vận chuyển, cấu hình tác nhân sao chép và cấu hình bộ thu thập dữ liệu.
  • Kế hoạch bảo trì, Gói SSIS và một số chi tiết khác.

Nói cách khác, cơ sở dữ liệu hệ thống msdb lưu trữ tất cả thông tin quan trọng liên quan đến Dịch vụ tác nhân máy chủ SQL và một số dịch vụ liên quan khác.

Các phương pháp được đề xuất cho cơ sở dữ liệu msdb

Cơ sở dữ liệu msdb lưu trữ nhiều thông tin cấu hình quan trọng liên quan đến SQL Server Agent, Jobs và Database Mail. Nó cũng lưu trữ các chi tiết lịch sử. Do đó, chúng ta nên thực hiện các phương pháp dưới đây khi xử lý cơ sở dữ liệu msdb:

  • Trong phiên bản SQL Server có nhiều cơ sở dữ liệu hoặc Công việc được định cấu hình, kích thước của cơ sở dữ liệu msdb sẽ liên tục tăng theo thời gian. Do đó, Sao lưu đầy đủ nên được triển khai hàng ngày cho cơ sở dữ liệu msdb cùng với các cơ sở dữ liệu người dùng khác. Nếu msdb nhận được nhiều thông tin quan trọng, thì chúng tôi có thể thay đổi Mô hình khôi phục của cơ sở dữ liệu msdb thành Đầy đủ và sau đó thực hiện Sao lưu nhật ký giao dịch.
  • Mặc dù SQL Server cho phép người dùng tạo các đối tượng người dùng trên cơ sở dữ liệu msdb, bạn không nên tạo bất kỳ bảng hoặc đối tượng người dùng nào trong cơ sở dữ liệu msdb và tăng thêm kích thước của cơ sở dữ liệu msdb.
  • Thực hiện dọn dẹp thường xuyên các bảng hệ thống msdb để giữ cho kích thước cơ sở dữ liệu msdb trong tầm kiểm soát và tránh các tác động về hiệu suất khi có dữ liệu khổng lồ trên nhiều bảng.

Cơ sở dữ liệu Tempdb

Cơ sở dữ liệu hệ thống tempdb có thể được coi là một khu vực làm việc toàn cầu có sẵn cho tất cả người dùng được kết nối với phiên bản SQL Server để thực hiện SELECT hoặc các hoạt động khác của họ .

Cơ sở dữ liệu Tempdb sẽ chứa các loại đối tượng dưới đây trong khi người dùng thực hiện các thao tác của họ:

  • Các đối tượng tạm thời do người dùng tạo một cách rõ ràng có thể là bảng và chỉ mục tạm thời Cục bộ hoặc Toàn cục, Bảng biến, bảng được sử dụng trong các hàm có giá trị Bảng và Con trỏ.
  • Các đối tượng bên trong được tạo bởi công cụ Cơ sở dữ liệu, chẳng hạn như:
    • Bảng công việc được sử dụng cho các kết quả trung gian cho các cuộn, con trỏ, sắp xếp và các đối tượng lớn tạm thời (LOB)
    • Các tệp công việc cho các hoạt động Hash Join hoặc Hash tổng hợp
    • Kết quả sắp xếp trung gian trong khi xử lý việc tạo hoặc xây dựng lại chỉ mục nếu SORT_IN_TEMPDB được đặt thành BẬT và các hoạt động khác như truy vấn GROUP BY, ORDER BY hoặc UNION
  • Cửa hàng phiên bản hỗ trợ tính năng lập phiên bản Hàng hoặc cửa hàng phiên bản chung hoặc cửa hàng phiên bản xây dựng chỉ mục trực tuyến.

Bất cứ khi nào dịch vụ SQL Server khởi động hoặc khởi động lại, cơ sở dữ liệu tempdb sẽ được tạo mới với sự trợ giúp của cơ sở dữ liệu mô hình. Do đó, tempdb là cơ sở dữ liệu hệ thống duy nhất không thể sao lưu .

Nếu chúng tôi cố gắng sao lưu nó, chúng tôi sẽ nhận được lỗi:

Vì chúng tôi sử dụng tempdb trong hầu hết các hoạt động của người dùng, cơ sở dữ liệu này đặt ra một nút cổ chai hiệu suất đáng kể trên một số phiên bản của SQL Server. Bắt đầu từ SQL Server 2016, đã có một số kỹ thuật tối ưu hóa được Microsoft triển khai - chúng ta sẽ thảo luận về chúng sau.

Trước khi đi vào các phương pháp được đề xuất cho cơ sở dữ liệu tempdb, hãy xem nhanh các tệp dữ liệu của nó theo cấu hình mặc định như được hiển thị bên dưới:

Đối với Phiên bản SQL Server hiện tại của tôi, chúng tôi có 4 tệp Dữ liệu và một tệp Nhật ký cho cơ sở dữ liệu tempdb.

Bắt đầu từ SQL Server 2016, chúng tôi có trình cài đặt SQL Server cho phép chúng tôi thêm nhiều tệp vào tempdb. 4 tệp ở trên với kích thước ban đầu là 8 MB và kích thước Tự động phát triển là 64 MB đã được tạo bằng các tùy chọn mặc định được hiển thị bên dưới.

Nếu chúng tôi có một tệp dữ liệu duy nhất trong cơ sở dữ liệu tempdb, tất cả các lõi logic có sẵn trong máy chủ sẽ cố gắng truy cập vào cùng một tệp dữ liệu của tempdb, dẫn đến tắc nghẽn hiệu suất.

Có nhiều tệp dữ liệu sẽ liên kết một cách hợp lý các lõi nhất định với một tệp duy nhất. Do đó, chúng ta ít tranh cãi hơn về các tệp dữ liệu tempdb. Điều này sẽ cải thiện tác động hiệu suất trên các tệp dữ liệu tempdb.

Các phương pháp được đề xuất cho Cơ sở dữ liệu tempdb

Vì cơ sở dữ liệu tempdb giống như một khu vực làm việc toàn cầu cho tất cả các hoạt động của người dùng, kích thước tempdb tăng lên dựa trên các hoạt động của người dùng. Nó có thể là một nút thắt cổ chai về hiệu suất cho toàn bộ phiên bản SQL Server.

Do đó, chúng ta nên thực hiện các phương pháp sau:

  1. Đặt các tệp Nhật ký và Dữ liệu tempdb trên bộ nhớ hiệu suất cao để có IOPS cao hơn nhằm mang lại hiệu suất tốt hơn.
  2. Đảm bảo rằng cơ sở dữ liệu tempdb được chia thành nhiều tệp dữ liệu để giảm tranh chấp và tránh tắc nghẽn hiệu suất trên cơ sở dữ liệu tempdb.
    • Nếu số lõi lôgic nhỏ hơn 8, chúng tôi có thể có một tệp dữ liệu tempdb cho mỗi lõi lôgic. Trong trường hợp thử nghiệm của chúng tôi, chúng tôi có 4 lõi logic. Do đó, chỉ cần 4 tệp dữ liệu trên tempdb là đủ.
    • Nếu số lõi lôgic nhiều hơn 8, hãy bắt đầu với 8 tệp dữ liệu và tăng thêm 4 tệp dữ liệu nếu quan sát thấy các vấn đề về hiệu suất và tranh chấp trên cơ sở dữ liệu tempdb.
    • Nếu số lõi lôgic trong máy chủ là 32 hoặc 64, chúng tôi có thể bắt đầu với 8 tệp dữ liệu. Nó có nghĩa là 4 lõi hoặc 8 lõi được liên kết hợp lý cho một tệp dữ liệu duy nhất.

      Để rõ hơn về nhiều tệp dữ liệu tempdb, tôi muốn giới thiệu cho bạn bài viết xuất sắc của Paul Randal.
  3. Đảm bảo rằng các tệp dữ liệu tempdb được định cấu hình với kích thước tệp ban đầu tối ưu. Lý tưởng nhất, điều này nên đạt được thông qua cách tiếp cận thử và sai. Tempdb với kích thước tệp ban đầu tối ưu có xu hướng tăng ít lần hơn so với tempdb được định cấu hình với kích thước tệp ban đầu ít hơn, có xu hướng tăng lên nhiều lần dẫn đến phân mảnh. Ví dụ:trong cấu hình hiện tại, tất cả các tệp được định cấu hình với kích thước tệp ban đầu 8 MB, quá nhỏ để xử lý Khối lượng công việc SQL. Do đó, hãy áp dụng phương pháp Thử và Lỗi và đặt Kích thước tệp ban đầu thành 512 MB hoặc 1 GB hoặc một số giá trị khác.
  4. Đảm bảo rằng tất cả các tệp dữ liệu tempdb được đặt thành kích thước tệp bằng nhau. Các thuộc tính tự động tăng trưởng phải được xác định như nhau. Trong trường hợp của chúng tôi, tất cả các tệp được đặt thành 64 MB tự động phát triển. Đặt kích thước Tự động phát triển thành 512 MB hoặc 1 GB hoặc bất kỳ giá trị thích hợp nào khác sẽ giúp giảm tốc độ tự động phát triển thường xuyên trên các tệp dữ liệu tempdb.
  5. Đảm bảo rằng kích thước Tệp ban đầu và Tự động phát triển cho tệp nhật ký tempdb được định cấu hình thành giá trị tối ưu tương tự như các tệp dữ liệu tempdb. Vì mô hình Khôi phục của tempdb được đặt thành Đơn giản theo mặc định và không thể sửa đổi, nên việc định cấu hình kích thước tệp ban đầu và thuộc tính tự động phát triển của tệp nhật ký tempdb là đủ.

Tempdb rất quan trọng đối với hiệu suất phiên bản SQL Server. Chúng tôi sẽ xem xét chi tiết các vấn đề thường gặp trên tempdb và cách thu nhỏ nó một cách tối ưu trong các bài viết tiếp theo của chúng tôi.

Cơ sở dữ liệu tài nguyên trong SQL Server

Cơ sở dữ liệu hệ thống tài nguyên là cơ sở dữ liệu hệ thống chỉ đọc duy nhất không được liệt kê trong cơ sở dữ liệu hệ thống trong SSMS như đã thấy trước đó.

ID cơ sở dữ liệu (dbid) của cơ sở dữ liệu tài nguyên trên tất cả các phiên bản sẽ là 32767, đây cũng là số lượng cơ sở dữ liệu tối đa được hỗ trợ trong phiên bản SQL Server. Nó có thể được truy vấn từ sys.sysaltfiles hệ thống DMV. Thực thi truy vấn SELECT bên dưới trên sys.sysaltfiles sẽ trả về tập kết quả hiển thị nơi đặt các tệp Dữ liệu và Nhật ký của cơ sở dữ liệu tài nguyên:

Chúng ta có thể thấy các tệp vật lý của cơ sở dữ liệu tài nguyên có sẵn trong đường dẫn nêu trên. Ngày được sửa đổi cho biết thời gian cài đặt phiên bản SQL Server hoặc lần cuối cùng Gói dịch vụ (SP) hoặc Cập nhật tích lũy (CU) được áp dụng trên phiên bản này.

Cơ sở dữ liệu tài nguyên chứa tất cả các đối tượng hệ thống, chẳng hạn như sys.objects , sys.databases , sys.sysaltfiles , v.v. vật lý bên trong nó. Cơ sở dữ liệu này liệt kê một cách hợp lý tất cả các đối tượng này trong lược đồ sys trên tất cả các cơ sở dữ liệu có sẵn trong phiên bản . Vì cơ sở dữ liệu tài nguyên ở chế độ chỉ đọc, không có đối tượng người dùng hoặc dữ liệu nào có thể được tạo trên đó.

Cơ sở dữ liệu hệ thống tài nguyên đã được giới thiệu bắt đầu từ SQL Server 2005 để nâng cấp SQL Server lên phiên bản SP hoặc CU mới nhanh hơn. Trước khi giới thiệu tùy chọn đó, tất cả các nâng cấp và cập nhật như vậy có nghĩa là các thay đổi sẽ áp dụng trên tất cả các cơ sở dữ liệu, khiến quá trình nâng cấp trở nên phức tạp và tốn thời gian hơn. Giờ đây, bất kỳ bản nâng cấp phiên bản SQL Server nào hoặc bản cập nhật SP hoặc CU chỉ là nâng cấp hoặc thay thế cơ sở dữ liệu tài nguyên.

Vì cơ sở dữ liệu tài nguyên ở chế độ chỉ đọc và không hiển thị với người dùng nên nó không yêu cầu bất kỳ sự can thiệp nào của người dùng. Nếu bạn muốn bao gồm sao lưu cơ sở dữ liệu tài nguyên trong kế hoạch Khả năng sẵn sàng cao hoặc Khôi phục sau thảm họa, chỉ cần tạo bản sao lưu tệp của các tệp mssqlsystemresource.mdf và mssqlsystemresource.ldf sau khi ngừng Dịch vụ SQL Server (Dịch vụ SQL Server sẽ không cho phép sao chép tệp trong khi SQL Server Service đang hoạt động) và Lưu nó vào một vị trí an toàn. Hãy cẩn thận để không cập nhật nó trên bất kỳ phiên bản SQL Server nào đang chạy với phiên bản SP hoặc cấp CU khác, vì nó có thể gây ra sự cố không mong muốn.

Cơ sở dữ liệu phân phối trong SQL Server

Cơ sở dữ liệu hệ thống phân phối là trung tâm của Replication. Người dùng có thể tạo hoặc định cấu hình cơ sở dữ liệu phân phối như một phần của thiết lập Nhân bản với sự trợ giúp của Trình hướng dẫn Định cấu hình Phân phối hoặc Trình hướng dẫn Tạo Ấn phẩm. Chúng tôi đã mô tả chi tiết các bước tạo cơ sở dữ liệu phân phối như một phần của bài viết trước của tôi về SQL Server Transactional Replication Internals.

Thực tiễn được Đề xuất cho Cơ sở dữ liệu Phân phối

Vì cơ sở dữ liệu phân phối là cần thiết cho chức năng Nhân bản, chúng tôi nên thực hiện các phương pháp sau:

  • Di chuyển cơ sở dữ liệu phân phối Các tệp dữ liệu và nhật ký vào ổ đĩa có IOPS tốt để tránh các vấn đề về hiệu suất phân phối.
  • Định cấu hình các thuộc tính Kích thước tệp ban đầu và Tự động phát triển của cơ sở dữ liệu phân phối thành một giá trị tốt hơn để tránh các vấn đề phân mảnh.
  • Đưa cơ sở dữ liệu phân phối vào Cơ sở dữ liệu Các công việc bảo trì sao lưu đầy đủ.
  • Đưa cơ sở dữ liệu phân phối vào các công việc Duy trì chỉ mục để tránh các vấn đề về hiệu suất và phân mảnh.

Trong bài viết của tôi về nội bộ sao chép giao dịch SQL Server, bạn cũng sẽ tìm thấy các khuyến nghị về các phương pháp hiệu quả khác.

Kết luận

Cảm ơn bạn đã xem qua một bài viết đầy sức mạnh khác!

Tôi hy vọng nó đã giúp bạn làm rõ bản chất và mục đích của cơ sở dữ liệu hệ thống SQL Server và tìm hiểu các phương pháp hay nhất để tránh các vấn đề về Hiệu suất trên các cơ sở dữ liệu này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Độ bền bị trễ trong SQL Server 2014

  2. Câu lệnh SQL CASE:Nó là gì và những cách tốt nhất để sử dụng nó là gì?

  3. Hiệu suất kế hoạch thực thi thủ tục được lưu trữ kém trong SQL - đánh hơi tham số

  4. Trả về danh sách cấu hình thư cơ sở dữ liệu trong SQL Server (T-SQL)

  5. Hợp nhất phiên bản SQL Server bằng cách phân cụm và xếp chồng