Cải tiến
Giả sử rằng bạn đang sử dụng SQL Server 2017 trên Linux. Trong một số kịch bản nhất định, SQL Server có thể bị mất dữ liệu trên các hệ thống sử dụng bộ nhớ cache biến đổi. Sự cố mất mát xảy ra do các tình huống bất ngờ như mất điện trước khi dữ liệu được lưu trong bộ nhớ đệm được ghi vào phương tiện ổn định. Để ngăn chặn những tình huống như vậy, cơ chế xóa bắt buộc được giới thiệu trong Bản cập nhật tích lũy 6 (CU6) cho SQL Server 2017 trên Linux. Nếu hệ thống con lưu trữ của bạn không thể đảm bảo ghi lâu sau khi mất điện, chúng tôi khuyên bạn nên áp dụng CU6 cho SQL Server 2017 trên Linux.
Bản cập nhật này cho phép những tính năng sau:
- Hành vi xóa bắt buộc trong hoạt động ghi cơ sở dữ liệu như ghi điểm kiểm tra và nhật ký giao dịch.
- Thiết đặt cấu hình tùy chọn writethrough=1 và alternatewritethrough=1 theo mặc định. Các cài đặt mặc định này cho phép SQL Server đảm bảo rằng các ghi được xóa lâu dài đối với các thiết bị chặn. Ghi xuyên thay thế là một tùy chọn để tối ưu hóa độ bền của các yêu cầu xóa đối với hệ thống tệp. Để biết thêm thông tin về hai thiết đặt này, hãy xem bảng sau đây:
| Name | Mặc định | Mô tả |
|---|---|---|
| ghi xuyên suốt | 1 | Các giá trị hợp lệ là 0 và 1. 1 = Chuyển các yêu cầu FILE_FLAG_WRITE_THROUGH thành O_DSYNC mở. 0 = Ngăn việc dịch các yêu cầu FILE_FLAG_WRITE_THROUGH O_DSYNC mở. |
| alternatewritemặc dù | 1 | Các giá trị hợp lệ là 0 và 1. 1 = Cho phép xóa dữ liệu được tối ưu hóa bởi Phần mở rộng Máy chủ cho các yêu cầu FILE_FLAG_WRITE_THROUGH. Ghi (các) trên tệp tối ưu hóa (các) cuộc gọi đến fdatasync cho thiết bị chặn. 0 = Tắt tối ưu hóa flush thay thế. Tệp được mở bằng cách sử dụng O_DSYNC và hệ thống tệp cơ bản thực hiện yêu cầu ghi, xóa cần thiết. Lưu ý Cài đặt ghi qua thay thế chỉ áp dụng khi ghi xuyên=1. |
Xem thêm thông tin
Để biết thêm thông tin, hãy xem các hướng dẫn thực hành tốt nhất về hiệu suất và hướng dẫn đặt cấu hình cho SQL Server 2017 trên Linux để xử lý các quy trình ghi tần suất cao và các đề xuất đặt tệp cơ sở dữ liệu.
SQL Server cài đặt chạy trên hệ thống lưu trữ đảm bảo việc ghi là an toàn O_DIRECT có thể bật cờ theo dõi (TF) 3979 để vô hiệu hóa hành vi xóa bắt buộc và đặt các tùy chọn WriteThrough và Ghi qua thay thế trong mssql.conf là KHÔNG. Điều này đưa SQL Server 2017 về hành vi trước CU6.
Lưu ý Một hệ thống lưu trữ có thể đảm bảo rằng mọi hoạt động ghi trong bộ đệm ẩn hoặc theo giai đoạn được coi là an toàn và lâu dài bằng cách đảm bảo rằng các ghi được phát hành tới thiết bị được lưu giữ trên một phương tiện sẽ tiếp tục tồn tại sau các sự cố hệ thống, thiết lập lại giao diện và mất điện, đồng thời bản thân phương tiện là phần cứng dư thừa.
Dưới đây là thông tin chi tiết hơn về hành vi của SQL Server đối với I/O tệp với những thay đổi này:
- Các tệp cơ sở dữ liệu (.mdf) và nhật ký giao tác (.ldf) không sử dụng ghi qua và ghi qua thay thế theo mặc định trong CU6 vì chúng sử dụng hành vi cưỡng bức . TF 3979 tắt việc sử dụng hành vi xóa bắt buộc cho các tệp cơ sở dữ liệu và nhật ký giao tác và sẽ sử dụng logic ghi xuyên qua và ghi thay thế.
- Các tệp khác được mở bằng cách sử dụng FILE_FLAG_WRITE_THROUGH trong SQL Server, chẳng hạn như ảnh cơ sở dữ liệu, ảnh chụp nhanh nội bộ để kiểm tra tính nhất quán cơ sở dữ liệu (CHECKDB), tệp theo dõi trình hồ sơ và tệp theo dõi sự kiện mở rộng, sẽ sử dụng các tối ưu hóa ghi xuyên qua và ghi thay thế.
Giải pháp
Bản cập nhật này có trong bản cập nhật tích lũy sau đây dành cho SQL Server:
Bản cập nhật tích lũy 6 cho SQL Server 2017
Giới thiệu về các bản cập nhật tích lũy cho SQL Server:
Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:
Bản cập nhật tích lũy mới nhất cho SQL Server 2017
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.