Microsoft® đã giới thiệu một tính năng mới gọi là Hybrid Buffer Pool trong SQL Server® 2019 (Preview) CTP 2.1. Tính năng này cho phép bạn truy cập trực tiếp các trang dữ liệu trong các file database được lưu trữ trên thiết bị bộ nhớ bền (PMEM).
PMEM là gì?
PMEM là thiết bị bộ nhớ trạng thái rắn hiệu suất cao, có khả năng truy cập theo byte (byte-addressable) và nằm trên bus bộ nhớ. Nó mang lại nhiều lợi ích so với các thiết bị lưu trữ khác.
Các lợi ích chính của PMEM bao gồm:
- Cung cấp truy cập dữ liệu nhanh hơn và gần như thời gian thực cho các tập dữ liệu lớn mà không có độ trễ so với ổ SSD flash.
- Tăng thông lượng (throughput) hơn so với lưu trữ flash.
- Rẻ hơn so với Bộ nhớ truy cập ngẫu nhiên động (DRAM).
- Có thể cache (cacheable). Đây là lợi thế lớn so với PCIe (Peripheral Component Interconnect), không thể cache trong bộ xử lý trung tâm (CPU).
- Giữ giữ dữ liệu trong bộ nhớ sau khi ngắt điện hoặc tắt máy.
Bạn có thể sử dụng PMEM theo nhiều cách để giảm độ trễ cho các ứng dụng cần truy cập dữ liệu nhanh hơn với lượng dữ liệu khổng lồ như ứng dụng Internet of Things (IoT), phân tích mối đe dọa mạng, và giao dịch tài chính.
Các khái niệm
Các thuật ngữ sau áp dụng cho tính năng mở rộng buffer pool:
- Ổ cứng trạng thái rắn (SSD): Lưu trữ dữ liệu trong bộ nhớ (RAM) theo cách bền vững.
- Buffer: Trong SQL Server, buffer là một trang 8-KB trong bộ nhớ, cùng kích thước với trang dữ liệu hoặc chỉ mục. Do đó, buffer cache được chia thành các trang 8-KB. Một trang vẫn ở trong buffer cache cho đến khi buffer manager cần vùng buffer để đọc thêm dữ liệu. Dữ liệu chỉ được ghi lại đĩa nếu nó bị sửa đổi. Các trang trong bộ nhớ đã sửa đổi này được gọi là dirty pages. Một trang được coi là sạch (clean) khi nó tương đương với hình ảnh database của nó trên đĩa. Dữ liệu trong buffer cache có thể được sửa đổi nhiều lần trước khi ghi lại đĩa.
- Buffer pool: Còn gọi là buffer cache, buffer pool là tài nguyên toàn cục được chia sẻ bởi tất cả các database cho các trang dữ liệu được cache của chúng. Kích thước tối đa và tối thiểu của buffer pool cache được xác định khi khởi động hoặc khi instance của SQL Server được cấu hình lại động bằng cách sử dụng sp_configure. Kích thước này quyết định số lượng trang tối đa có thể được cache trong buffer pool tại bất kỳ thời điểm nào trong instance đang chạy. Bộ nhớ tối đa có thể được commit bởi buffer pool extension có thể bị giới hạn bởi các ứng dụng khác chạy trên máy trong trường hợp chúng tạo ra áp lực bộ nhớ đáng kể.
- Checkpoint: Checkpoint tạo ra một điểm biết tốt (known good point) từ đó database engine có thể bắt đầu áp dụng các thay đổi chứa trong transaction log trong quá trình khôi phục sau khi tắt máy hoặc crash bất ngờ. Checkpoint ghi các dirty pages và thông tin transaction log từ bộ nhớ ra đĩa, và cũng ghi lại thông tin về transaction log.
- Truy cập trực tiếp (DAX - Direct Access): DAX hoạt động như bộ nhớ để có độ trễ thấp nhất. Ứng dụng sửa đổi trực tiếp bộ nhớ bền, bỏ qua stack. Tùy chọn này chỉ có thể dùng với NTFS.
Hình ảnh sau minh họa DAX:
Nguồn: https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-pmem
Hybrid Buffer Pool là gì?
Trong hệ thống truyền thống, SQL Server cache các trang dữ liệu trong buffer pool dựa trên DRAM. Với Hybrid Buffer Pool, SQL Server bỏ qua việc copy trang vào phần DRAM của buffer pool và thay vào đó tham chiếu trực tiếp đến trang trên file database nằm trên thiết bị PMEM. Hệ thống truy cập file dữ liệu trong PMEM cho Hybrid Buffer Pool bằng cách sử dụng memory mapped I/O, còn được gọi là enlightenment (sáng tỏ) của các file dữ liệu trong SQL Server.
Quá trình này mang lại lợi ích hiệu suất bằng cách tránh việc copy trang sang DRAM và loại bỏ nhu cầu stack I/O của hệ điều hành để truy cập trang trên lưu trữ bền.
Hệ thống chỉ có thể truy cập trực tiếp các trang sạch (clean pages) trên thiết bị PMEM. Khi một trang trở thành dirty (bị sửa đổi), hệ thống copy nó vào buffer pool dựa trên DRAM và sau đó ghi lại thiết bị PMEM. Quá trình này xảy ra trong các hoạt động checkpoint thông thường.
Tính năng Hybrid Buffer Pool có sẵn cho cả Windows® và Linux®. Thiết bị PMEM phải được định dạng với hệ thống file hỗ trợ DirectAccess (DAX). DAX hỗ trợ các hệ thống file sau:
- Extended File System (XFS)
- EXT4
- New Technology File System (NTFS)
SQL Server tự động phát hiện xem file dữ liệu có nằm trên thiết bị PMEM được định dạng phù hợp hay không và thực hiện memory mapping trong user space. Mapping này xảy ra khi khởi động, khi database mới được attach, restored, hoặc created và khi tính năng Hybrid Buffer Pool được bật cho database.
Kích hoạt Hybrid Buffer Pool
SQL Server 2019 giới thiệu ngôn ngữ định nghĩa dữ liệu động (DDL) để kiểm soát Hybrid Buffer Pool. Ví dụ sau kích hoạt Hybrid Buffer Pool cho một instance của SQL Server:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
Mặc định, Hybrid Buffer Pool được thiết lập là disable ở phạm vi instance.
Lưu ý: Để thay đổi cài đặt có hiệu lực, bạn phải khởi động lại instance SQL Server. Khởi động lại giúp cấp phát đủ hash pages để tính đến tổng dung lượng PMEM trên server.
Ví dụ sau kích hoạt Hybrid Buffer Pool cho một database cụ thể:
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
Mặc định, Hybrid Buffer Pool được thiết lập là enable ở phạm vi database.
Vô hiệu hóa Hybrid Buffer Pool
Ví dụ sau vô hiệu hóa Hybrid Buffer Pool cho một instance của SQL Server:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
Mặc định, Hybrid Buffer Pool được thiết lập là disable ở phạm vi instance.
Lưu ý: Để thay đổi cài đặt có hiệu lực, bạn phải khởi động lại instance SQL Server. Khởi động lại ngăn chặn việc cấp phát quá mức hash pages vì dung lượng PMEM trên server không cần được tính đến.
Ví dụ sau vô hiệu hóa Hybrid Buffer Pool cho một database cụ thể:
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
Mặc định, Hybrid Buffer Pool được thiết lập là enable ở phạm vi database.
Xem cấu hình Hybrid Buffer Pool
Ví dụ sau trả về trạng thái hiện tại của cấu hình hệ thống Hybrid Buffer Pool cho một instance của SQL Server:
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';
Ví dụ sau trả về hai bảng:
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool'; SELECT name, is_memory_optimized_enabled FROM sys.databases;
- Bảng đầu tiên hiển thị trạng thái hiện tại của cấu hình hệ thống Hybrid Buffer Pool cho một instance của SQL Server.
- Bảng thứ hai liệt kê các database và cài đặt Hybrid Buffer Pool ở cấp database.
Best practices cho Hybrid Buffer Pool
Chúng tôi khuyên bạn không nên bật Hybrid Buffer Pool trên các instance có RAM dưới 16 GB.
Khi định dạng thiết bị PMEM trên Windows, hãy sử dụng kích thước đơn vị cấp phát lớn nhất có sẵn cho NTFS (2 MB trong Windows Server® 2019) và đảm bảo thiết bị đã được định dạng cho DAX. Kích thước file nên là bội số của 2 MB (modulo 2 MB phải bằng 0).
Nếu cài đặt ở phạm vi server cho Hybrid Buffer Pool được thiết lập là disabled, Hybrid Buffer Pool sẽ không được sử dụng bởi bất kỳ user database nào.
Nếu cài đặt ở phạm vi server cho Hybrid Buffer Pool được bật, bạn có thể vô hiệu hóa việc sử dụng Hybrid Buffer Pool cho các user database riêng lẻ bằng cách vô hiệu hóa Hybrid Buffer Pool ở cấp database-scoped cho các database đó.
Kết luận
Hybrid Buffer Pool cho phép bạn truy cập trực tiếp các trang dữ liệu database được lưu trữ trong thiết bị PMEM. Hiệu suất hệ thống được cải thiện vì không cần copy trang sang DRAM và stack I/O của hệ điều hành không cần truy cập trang trên lưu trữ bền.
Tham khảo các tài liệu sau để biết thêm thông tin:
Microsoft Describes Latest SQL Server 2019 Preview and Azure SQL Improvements Hybrid Buffer Pool
Sử dụng tab Feedback để đưa ra bình luận hoặc đặt câu hỏi.
Tối ưu môi trường của bạn với quản trị, quản lý và cấu hình chuyên nghiệp
Các chuyên gia Dịch vụ ứng dụng của Rackspace (RAS) cung cấp các dịch vụ chuyên nghiệp và được quản lý sau đây trên danh mục ứng dụng rộng:
- Nền tảng eCommerce và Trải nghiệm số
- Quản trị nguồn lực doanh nghiệp (ERP)
- Business Intelligence
- Salesforce Quản trị quan hệ khách hàng (CRM)
- Databases
- Lưu trữ Email và Năng suất
Chúng tôi cung cấp:
- Chuyên môn khách quan: Chúng tôi đơn giản hóa và hướng dẫn hành trình hiện đại hóa của bạn, tập trung vào các khả năng mang lại giá trị ngay lập tức.
- Fanatical Experience™: Chúng tôi kết hợp phương pháp Process first. Technology second.® với hỗ trợ kỹ thuật chuyên dụng để cung cấp giải pháp toàn diện.
- Danh mục không đối thủ: Chúng tôi áp dụng kinh nghiệm đám mây rộng lớn để giúp bạn chọn và triển khai công nghệ phù hợp trên đám mây phù hợp.
- Giao hàng Agile: Chúng tôi gặp gỡ bạn ở bất kỳ đâu trong hành trình của bạn và điều chỉnh thành công của chúng tôi với của bạn.
Chat ngay để bắt đầu.