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

Xem xét Hiệu suất Ảnh chụp Cơ sở dữ liệu

Ảnh chụp nhanh cơ sở dữ liệu cung cấp chế độ xem chỉ đọc của cơ sở dữ liệu SQL Server nhất quán về giao dịch với trạng thái của cơ sở dữ liệu nguồn tại thời điểm tạo ảnh chụp nhanh cơ sở dữ liệu. Một số lý do tồn tại cho việc sử dụng ảnh chụp nhanh cơ sở dữ liệu, chẳng hạn như báo cáo dựa trên cơ sở dữ liệu được sao chép và DBCC CHECKDB cũng sử dụng ảnh chụp nhanh cơ sở dữ liệu nội bộ từ SQL Server 2005 trở đi.

Ảnh chụp nhanh cơ sở dữ liệu cũng cung cấp khả năng khôi phục tất cả các thay đổi đã xảy ra với cơ sở dữ liệu kể từ khi ảnh chụp nhanh cơ sở dữ liệu được tạo, nhưng có tác dụng phụ khó chịu đối với nhật ký giao dịch của cơ sở dữ liệu mà Paul đã viết blog ở đây.

Một trong những điều thường không được xem xét hoặc hiển thị xung quanh ảnh chụp nhanh cơ sở dữ liệu là tác động về hiệu suất mà ảnh chụp nhanh đối với khối lượng công việc ghi cơ sở dữ liệu. Nhóm SQLCAT đã xuất bản báo cáo chính thức cho SQL Server 2005, Xem xét hiệu suất chụp nhanh cơ sở dữ liệu trong I / O-Intensive Workloads, điều tra tác động hiệu suất của ảnh chụp nhanh cơ sở dữ liệu và sau khi làm việc với một khách hàng gần đây, nơi mà ảnh chụp nhanh cơ sở dữ liệu dẫn đến sự cố hiệu suất, tôi muốn kiểm tra SQL Server 2012 và xác định xem có bất kỳ thay đổi nào đối với chi phí của ảnh chụp nhanh cơ sở dữ liệu trong bảy năm và ba bản phát hành SQL Server sau đó hay không.

Cấu hình thử nghiệm

Để thực hiện kiểm tra ảnh hưởng của ảnh chụp nhanh cơ sở dữ liệu đối với hiệu suất khối lượng công việc ghi, tôi đã sử dụng Dell R720 thực hiện chèn hàng 1.000.000 vào một bảng mới trong phiên bản mở rộng của cơ sở dữ liệu AdventureWorks2012. Cơ sở dữ liệu AdventureWorks2012 được tạo với 8 tệp dữ liệu trải rộng trên hai SSD Fusion-io ioDrive Duo 640GB, mỗi ổ được thiết lập dưới dạng hai đĩa 320GB riêng lẻ trong Windows, có tổng cộng 4 đĩa. Để đơn giản hóa việc giải thích cấu hình, bố cục lưu trữ được sử dụng cho các thử nghiệm này được hiển thị trong bảng dưới đây:

Disk Cấu hình Cách sử dụng
K 15K RAID 5 - 6 Đĩa Ảnh chụp nhanh
L Fusion-io Card2 - Mặt B Tệp nhật ký
M Fusion-io Card2 - Mặt A 4 tệp dữ liệu
N Fusion-io Card1 - Mặt A 4 tệp dữ liệu
Q Fusion-io Card1 - Mặt B Tempdb
R LSI Nytro BLP4-1600 Ảnh chụp nhanh

Bảng 1 - Cách sử dụng và bố trí đĩa máy chủ

Bộ nhớ cho ảnh chụp nhanh cơ sở dữ liệu là một mảng RAID-5 gồm sáu ổ đĩa SAS 15k RPM được kết nối thông qua iSCSI hoặc thẻ LSI Nytro BLP4-1600 PCI-E.

Khối lượng công việc kiểm tra đã sử dụng câu lệnh SELECT INTO sau đây để tạo bảng 1.000.000 hàng được loại bỏ giữa mỗi lần kiểm tra.

SELECT TOP 1000000 *
INTO tmp_SalesOrderHeader
FROM Sales.SalesOrderHeaderEnlarged;

Các bài kiểm tra được tính thời gian để đo thời lượng mà không có ảnh chụp nhanh cơ sở dữ liệu và sau đó là thời lượng bằng ảnh chụp nhanh cơ sở dữ liệu được tạo trên mỗi thiết bị lưu trữ để đo lường sự suy giảm hiệu suất do ghi các thay đổi trang vào tệp thưa thớt ảnh chụp nhanh cơ sở dữ liệu. Các bài kiểm tra cũng được chạy bằng cách sử dụng hai ảnh chụp nhanh cơ sở dữ liệu trên cùng một thiết bị lưu trữ để xác định chi phí của việc có thêm ảnh chụp nhanh cơ sở dữ liệu có thể là gì cho các hoạt động ghi trùng lặp có thể phải thực hiện.

Kết quả

Mỗi cấu hình thử nghiệm được thực thi mười lần và thời lượng trung bình, được chuyển đổi từ mili giây sang giây để dễ xem hơn, được thể hiện trong Hình 1, cho các ảnh chụp nhanh cơ sở dữ liệu 0, 1 hoặc 2.


Hình 1 - Thời lượng ảnh chụp

Các bài kiểm tra đường cơ sở không có ảnh chụp nhanh cơ sở dữ liệu được thực hiện trung bình trong 1,8 giây và ngay cả khi bộ nhớ cho các tệp ảnh chụp nhanh cơ sở dữ liệu có hiệu suất tương đương, sự tồn tại của một ảnh chụp nhanh cơ sở dữ liệu duy nhất đã áp đặt chi phí lên hiệu suất ghi cho cơ sở dữ liệu. Chi phí của ảnh chụp nhanh cơ sở dữ liệu thứ hai thấp hơn so với việc có ảnh chụp nhanh cơ sở dữ liệu đầu tiên trong mỗi thử nghiệm, mặc dù các đĩa 15K RPM gặp khó khăn hơn nhiều để theo kịp khối lượng công việc ghi được bổ sung từ ảnh chụp nhanh cơ sở dữ liệu thứ hai cho cơ sở dữ liệu.

Hiệu suất trên thẻ LSI Nytro ban đầu khiến tôi ngạc nhiên vì nó cũng là một SSD PCI-X. Tuy nhiên, sau khi thảo luận về kết quả với Glenn, anh ấy đã đề cập rằng khả năng nén bộ điều khiển Sandforce và hiệu suất ghi chậm hơn đối với dữ liệu ngẫu nhiên, có độ nén thấp từ các thử nghiệm trước đây của anh ấy trên ổ đĩa. Tuy nhiên, nó vẫn dễ dàng vượt xa phương tiện kéo sợi.

Trước khi chạy thử nghiệm, tôi muốn biết kiểu chờ nào sẽ xảy ra trong quá trình thử nghiệm, vì vậy, là một phần của cấu hình thử nghiệm, tôi đã xóa sys.dm_os_wait_stats bằng DBCC SQLPERF và ghi lại kết quả đầu ra từ DMV cho mỗi lần chạy thử nghiệm vào một bảng. Phần chờ trên cùng cho các cấu hình ảnh chụp nhanh đơn lẻ là PREEMPTIVE_OS_WRITEFILE và WRITE_COMPLETION như trong Hình 2, cho 1 hoặc 2 ảnh chụp nhanh cơ sở dữ liệu.


Hình 2 - Ảnh chụp nhanh Top Waits

Một trong những mục thú vị là việc bổ sung FCB_REPLICA_WRITE chờ khi tạo ảnh chụp nhanh thứ hai. Sau khi xem xét kết quả chờ ảnh chụp nhanh cơ sở dữ liệu và chạy lại một vài vòng kiểm tra, việc chờ đợi này không bao giờ xảy ra đối với một ảnh chụp nhanh duy nhất và chỉ xảy ra khi tồn tại nhiều ảnh chụp nhanh và được liên kết với việc sao chép các trang vào tệp ảnh chụp nhanh cơ sở dữ liệu. Thời gian chờ đợi PREEMPTIVE_OS_WRITEFILE có xu hướng chặt chẽ với sự gia tăng thời lượng thực thi cho mỗi cấu hình.

Với những kết quả này, khi xem xét hệ thống sử dụng phương pháp Chờ và Hàng đợi, việc thấy kiểu chờ này với giá trị cao hơn có thể đáng để điều tra xem liệu các ảnh chụp nhanh cơ sở dữ liệu có tồn tại cho bất kỳ cơ sở dữ liệu nào trên máy chủ hay không.

Kết luận

Khi sử dụng ảnh chụp nhanh cơ sở dữ liệu, ngay cả trong SQL Server 2012, có một chi phí liên quan đến việc ghi bổ sung cần thiết để sao chép các trang dữ liệu vào các tệp thưa thớt cho ảnh chụp nhanh. Nếu việc sử dụng ảnh chụp nhanh cơ sở dữ liệu là một phần trong cấu hình chung của bạn, tôi sẽ thực sự cẩn thận về việc lập kế hoạch hệ thống con I / O để đáp ứng các yêu cầu về khối lượng công việc cho hoạt động I / O đồng thời đối với các tệp thưa thớt ảnh chụp cơ sở dữ liệu.

Từ kết quả của các bài kiểm tra này, tôi thậm chí còn cân nhắc đặt ảnh chụp nhanh cơ sở dữ liệu trên SSD trước tempdb để tăng hiệu suất ghi và cũng để giảm tác động đến hiệu suất do bảo trì ảnh chụp nhanh.

Như mọi khi, quãng đường của bạn có thể thay đổi và chắc chắn bạn sẽ muốn kiểm tra hiệu suất của bất kỳ cấu hình nào trước khi đưa vào sử dụng sản xuất.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các loại SQL JOIN

  2. Tìm hiểu cách xử lý ngoại lệ trong PL / SQL

  3. BẢNG SQL

  4. SQL CHỌN TRONG

  5. Hợp nhất các tệp dữ liệu với Statistica, Phần 1