Một số bạn có quyền truy cập vào Hekaton đã xuất bản Các tập lệnh demo OLTP trong bộ nhớ liên quan đến AdventureWorks; mẫu gần đây nhất được xuất bản ở đây. Các ví dụ này dựa trên cơ sở dữ liệu mẫu AdventureWorks2012 trên CodePlex. Nếu bạn đã thử các mẫu này, bạn có thể gặp một số vấn đề có thể thay đổi đáng kể trải nghiệm đầu tiên của bạn với công nghệ này.
Ủy quyền cơ sở dữ liệu
Rất nhiều người tải xuống "Tệp Dữ liệu AdventureWorks2012" - tệp .mdf 200 MB mà bạn có thể đính kèm - không cần nhật ký - theo cú pháp sau:
CREATE DATABASE AdventureWorks2012 ON ( NAME = AdventureWorks2012_Data, FILENAME = '<path>\AdventureWorks2012_Data.mdf' ) FOR ATTACH_REBUILD_LOG;
Vấn đề là, nếu bạn được kết nối với phiên bản SQL Server bằng tài khoản Windows của mình, bạn có thể vô tình trở thành chủ sở hữu cơ sở dữ liệu. Điều này sẽ không phải là vấn đề lớn trong hầu hết các trường hợp, ngoại trừ trường hợp bạn tạo các thủ tục được lưu trữ với EXECUTE AS OWNER
, giống như nhiều mẫu bạn sẽ làm, điều này có thể gây ra sự cố. Ví dụ, bạn có thể tìm thấy dòng này trong nhiều thủ tục được lưu trữ được biên dịch nguyên bản:
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
Trừ khi bạn đã giảm nhẹ vấn đề này theo những cách khác, nếu chủ sở hữu cơ sở dữ liệu là tài khoản Windows của bạn, bạn có thể gặp phải lỗi sau khi cố gắng tạo quy trình như vậy:
Msg 15517, Mức 16, Trạng thái 1, Thủ tục [tên thủ tục]Không thể thực thi với tư cách là phần tử chính của cơ sở dữ liệu vì phần tử chính "dbo" không tồn tại, loại phần tử chính này không thể được mạo danh hoặc bạn không có quyền.
Tùy thuộc vào môi trường của bạn, bạn có thể muốn cân nhắc nghiêm túc cách bạn giải quyết vấn đề này; trong trường hợp của tôi, tôi đã đi theo con đường dễ dàng và chỉ cần đặt ủy quyền trên cơ sở dữ liệu thành sa
:
ALTER AUTHORIZATION ON DATABASE::AdventureWorks2012 TO sa;
Tại thời điểm này, tôi đã có thể chạy tập lệnh demo mà không gặp sự cố (tốt, tôi đã gặp lỗi khi nó cố gắng thêm một nhóm tệp được tối ưu hóa bộ nhớ khác, nhưng đó là một vấn đề hoàn toàn khác và có thể bỏ qua).
Số lượng nhóm
Dường như không có nhiều hướng dẫn thực tế về cách chọn số lượng nhóm cho các bảng được tối ưu hóa bộ nhớ của bạn. Có bài báo này trên MSDN, đi sâu vào một số chi tiết kỹ thuật và Klaus Aschenbrenner đã viết bài này về việc đưa ra các lựa chọn thông minh trong lĩnh vực này. Ngoài ra, bạn còn phải tự mình thử nghiệm nhiều thứ. SWAG mà tôi thường nghe nhất là 1x-2x số lượng giá trị khóa duy nhất, để tra cứu điểm hiệu quả nhất. Tuy nhiên, một số mẫu bạn sẽ tìm thấy ở đó sử dụng liên tục 1.000.000 nhóm hoặc các số nhỏ hơn như 100 (và thậm chí là 5 trong một trường hợp) hoặc hỗn hợp. Hãy ghi nhớ điều đó khi bạn bắt đầu thử nghiệm với các mẫu truy cập dữ liệu và lược đồ của riêng mình - bạn có thể phải trích xuất các bảng và thử lại với các kích thước nhóm khác nhau để tìm "điểm hấp dẫn" cho tình huống của mình.
Mô hình khôi phục
Cơ sở dữ liệu AdventureWorks2012 được đặt thành SIMPLE
sự hồi phục. Giống như vấn đề về chủ sở hữu cơ sở dữ liệu, trong hầu hết các trường hợp, đây không phải là vấn đề lớn đối với một cơ sở dữ liệu mẫu. Nhưng khi bạn đang kiểm tra OLTP trong bộ nhớ - và có thể kết hợp với các công nghệ khác tạo ra SIMPLE
khôi phục công cụ phá giao dịch, như Nhóm khả dụng - có thể có ý nghĩa hơn nhiều khi thực hiện thử nghiệm của bạn đối với cơ sở dữ liệu với khôi phục được đặt thành FULL
. Nếu không, bạn có thể không quan sát được một số hành vi có thể khác nhau trong các mô hình khôi phục khác nhau. Bạn có thể thay đổi AdventureWorks2012 thành FULL
như sau:
ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;
Và đừng quên tạo một bản sao lưu đầy đủ để chuỗi sao lưu được thiết lập và cơ sở dữ liệu không hoạt động ở dạng pseudo- SIMPLE
chế độ khôi phục.