Nhật ký và ổ đĩa dữ liệu có các mẫu truy cập dữ liệu khác nhau xung đột với nhau (ít nhất là trên lý thuyết) khi chúng chia sẻ một ổ đĩa.
Nhật ký viết
Truy cập nhật ký bao gồm một số lượng rất lớn các bài viết tuần tự nhỏ. Một cách đơn giản, nhật ký DB là bộ đệm vòng chứa danh sách các hướng dẫn để ghi các mục dữ liệu ra các vị trí cụ thể trên đĩa. Mẫu truy cập bao gồm một số lượng lớn các ghi tuần tự nhỏ phải được đảm bảo hoàn thành - vì vậy chúng được ghi ra đĩa.
Lý tưởng nhất là các bản ghi phải ở chế độ yên tĩnh (nghĩa là không chia sẻ với bất kỳ thứ gì khác) âm lượng RAID-1 hoặc RAID-10. Về mặt logic, bạn có thể xem quy trình như DBMS chính ghi ra các mục nhật ký và một hoặc nhiều luồng trình đọc nhật ký tiêu thụ nhật ký và ghi các thay đổi ra đĩa dữ liệu (trong thực tế, quy trình được tối ưu hóa để ghi dữ liệu được ghi ra ngay lập tức nếu có thể). Nếu có lưu lượng khác trên các đĩa nhật ký, các đầu được di chuyển xung quanh bởi các truy cập khác và ghi nhật ký tuần tự trở thành ghi nhật ký ngẫu nhiên. Chúng chậm hơn nhiều, vì vậy các đĩa nhật ký bận rộn có thể tạo ra một điểm nóng hoạt động như một nút cổ chai trên toàn hệ thống.
Dữ liệu ghi
(cập nhật) Ghi nhật ký phải được cam kết vào đĩa (được gọi là phương tiện ổn định) để giao dịch có hiệu lực và đủ điều kiện để cam kết. Người ta có thể xem một cách hợp lý điều này như các mục nhật ký được ghi và sau đó được sử dụng làm hướng dẫn để ghi các trang dữ liệu ra đĩa bằng một quy trình không đồng bộ. Trong thực tế, việc ghi trang đĩa thực sự được chuẩn bị và được đệm vào thời điểm thực hiện nhập nhật ký, nhưng chúng không cần phải được ghi ngay lập tức để giao dịch được thực hiện. Bộ đệm đĩa được ghi ra phương tiện ổn định (đĩa) theo quy trình Lazy Writer (Cảm ơn Paul Randal đã chỉ ra điều này) mà bài viết Technet này thảo luận chi tiết hơn một chút.
Đây là một mẫu truy cập ngẫu nhiên rất nhiều, vì vậy việc chia sẻ cùng một đĩa vật lý với nhật ký có thể tạo ra một nút cổ chai nhân tạo về hiệu năng hệ thống. Các mục log phải được viết cho các giao dịch để thực hiện, do đó, có ngẫu nhiên tìm kiếm chậm lại quá trình này (ngẫu nhiên I / O là nhiều chậm hơn so với tuần tự ghi I / O) sẽ lần lượt đăng nhập từ một sequenital vào một thiết bị truy cập ngẫu nhiên. Điều này tạo ra một nút cổ chai hiệu năng nghiêm trọng trên một hệ thống bận rộn và nên tránh. Điều tương tự áp dụng khi chia sẻ các khu vực tạm thời với khối lượng nhật ký.
Vai trò của bộ nhớ đệm
Bộ điều khiển SAN có xu hướng có bộ nhớ RAM lớn, có thể hấp thụ lưu lượng truy cập ngẫu nhiên ở một mức độ nhất định. Tuy nhiên, đối với tính toàn vẹn giao dịch, mong muốn có đĩa ghi từ DBMS được đảm bảo hoàn thành. Khi bộ điều khiển được thiết lập để sử dụng bộ đệm ghi lại, các khối bẩn được lưu vào bộ đệm và cuộc gọi I / O được báo cáo là hoàn tất cho máy chủ.
Điều này có thể giải quyết rất nhiều vấn đề tranh chấp vì bộ đệm có thể hấp thụ rất nhiều I / O mà nếu không sẽ đi ra đĩa vật lý. Nó cũng có thể tối ưu hóa việc đọc và ghi chẵn lẻ cho RAID-5, giúp giảm bớt ảnh hưởng đến hiệu suất mà các ổ RAID-5 có.
Đây là những đặc điểm thúc đẩy trường phái 'Hãy để SAN đối phó với nó', mặc dù quan điểm này có một số hạn chế:
Bộ nhớ đệm ghi lại vẫn có các chế độ thất bại có thể mất dữ liệu và bộ điều khiển đã bị thu hẹp vào DBMS, nói rằng các khối đã được ghi ra đĩa, trong thực tế chúng không có. Vì lý do này, bạn có thể không muốn sử dụng bộ nhớ đệm ghi lại cho một ứng dụng giao dịch, đặc biệt là thứ gì đó chứa dữ liệu quan trọng hoặc nhiệm vụ tài chính trong đó các vấn đề toàn vẹn dữ liệu có thể gây hậu quả nghiêm trọng cho doanh nghiệp.
SQL Server (đặc biệt) sử dụng I / O trong chế độ trong đó một cờ (được gọi là FUA hoặc Truy cập cập nhật cưỡng bức) buộc ghi vật lý vào đĩa trước khi cuộc gọi trở lại. Microsoft có một chương trình chứng nhận và nhiều nhà cung cấp SAN sản xuất phần cứng nhằm tôn vinh các ngữ nghĩa này (các yêu cầu được tóm tắt tại đây ). Trong trường hợp này, không có bộ nhớ cache nào sẽ tối ưu hóa việc ghi đĩa, điều đó có nghĩa là lưu lượng truy cập nhật ký sẽ bị phá vỡ nếu nó đang ngồi trên một ổ đĩa chia sẻ bận rộn.
Nếu ứng dụng tạo ra nhiều lưu lượng đĩa, bộ làm việc của nó có thể tràn bộ nhớ cache, điều này cũng sẽ gây ra sự cố ghi.
Nếu SAN được chia sẻ với các ứng dụng khác (đặc biệt trên cùng một ổ đĩa), lưu lượng truy cập từ các ứng dụng khác có thể tạo ra tắc nghẽn nhật ký.
Một số ứng dụng (ví dụ: kho dữ liệu) tạo ra các xung tải lớn thoáng qua khiến chúng khá chống đối xã hội trên SAN.
Ngay cả trên một khối lượng nhật ký riêng SAN lớn vẫn được khuyến khích thực hành. Bạn có thể thoát khỏi việc không lo lắng về bố cục trên một ứng dụng được sử dụng nhẹ. Trên các ứng dụng thực sự lớn, bạn thậm chí có thể nhận được lợi ích từ nhiều bộ điều khiển SAN. Oracle xuất bản một loạt các nghiên cứu trường hợp bố trí kho dữ liệu trong đó một số cấu hình lớn hơn liên quan đến nhiều bộ điều khiển.
Đặt trách nhiệm cho hiệu suất nơi nó thuộc về
Trên một cái gì đó có khối lượng lớn hoặc hiệu suất có thể là một vấn đề, hãy làm cho nhóm SAN chịu trách nhiệm về hiệu suất của ứng dụng. Nếu họ sẽ bỏ qua các đề xuất của bạn về cấu hình, thì hãy đảm bảo rằng ban quản lý nhận thức được điều này và trách nhiệm đối với hiệu suất hệ thống nằm ở vị trí thích hợp. Cụ thể, thiết lập các hướng dẫn có thể chấp nhận cho các thống kê hiệu suất DB chính như I / O chờ hoặc chốt trang chờ hoặc I / O SLA của ứng dụng được chấp nhận.
Lưu ý rằng việc có trách nhiệm phân chia hiệu suất giữa nhiều nhóm sẽ tạo ra động lực để chỉ tay và chuyển khóa cho nhóm khác. Đây là một mô hình chống quản lý đã biết và là một công thức cho các vấn đề kéo dài hàng tháng hoặc hàng năm mà không bao giờ được giải quyết. Tốt nhất, nên có một kiến trúc sư duy nhất có thẩm quyền chỉ định các thay đổi cấu hình ứng dụng, cơ sở dữ liệu và SAN.
Ngoài ra, điểm chuẩn hệ thống dưới tải. Nếu bạn có thể sắp xếp nó, các máy chủ cũ và mảng đính kèm trực tiếp có thể được mua khá rẻ trên Ebay. Nếu bạn thiết lập một hộp như thế này với một hoặc hai mảng đĩa, bạn có thể frig với cấu hình đĩa vật lý và đo lường hiệu quả về hiệu suất.
Ví dụ, tôi đã thực hiện một so sánh giữa một ứng dụng chạy trên SAN lớn (IBM Shark) và hộp hai ổ cắm với mảng U320 đính kèm trực tiếp. Trong trường hợp này, phần cứng trị giá 3.000 bảng mua từ ebay vượt trội so với SAN cao cấp 1 triệu bảng với hệ số hai - trên một máy chủ có cấu hình bộ nhớ và CPU tương đương.
Từ sự cố cụ thể này, có thể lập luận rằng có một cái gì đó như thế này nằm xung quanh là một cách rất tốt để giữ cho các quản trị viên SAN trung thực.