Ổ đĩa đơn và nhiều ổ đĩa


7

Nói chung, nút cổ chai của RDBMS (Tôi là người dùng MySQL) là truy cập đĩa. SSD cung cấp hiệu suất tuyệt vời so với các ổ đĩa trục chính thông thường.

Câu hỏi: Có thể cải thiện hiệu suất bằng cách gắn nhiều ổ đĩa có dung lượng giảm, bởi vì cách này sẽ có nhiều đầu hơn để đọc dữ liệu?

Giống như thay thế ổ đĩa 2TB 7.2k RPM bằng 4 ổ đĩa 500 GB 7.2k RPM?

Câu trả lời:


7

Điều này có thể phụ thuộc rất nhiều vào công cụ lưu trữ.

Đối với MyISAM, tôi nghĩ đó sẽ là một ý tưởng tuyệt vời vì bạn có thể tạo dữ liệu liền kề như bạn muốn. Điều đó sẽ có lợi cho các truy vấn liên quan đến hoạt động hàng loạt và quét phạm vi lớn. Bộ công cụ để nén và sửa chữa MyISAM để cải thiện định dạng bảng cũng có thể giúp truy cập tốt hơn một chút. IMHO đồng thời có thể phát triển mạnh trong một môi trường đĩa như vậy.

InnoDB là một câu chuyện hoàn toàn khác.

Nếu bạn bị vô hiệu hóa innodb_file_per_table , dữ liệu có thể được phân tán khắp ibdata1 và do đó nằm rải rác trong nhiều đĩa. Bạn có thể chạy BẢNG TỐI ƯU đối với bảng InnoDB và làm cho các trang dữ liệu và chỉ mục liền kề nhau, nhưng điều đó có thể gây ra hai vấn đề:

  1. Làm cho ibdata1 phát triển
  2. Hiệu suất giảm dần theo thời gian

Đừng quên bốn loại dữ liệu cư trú trong ibdata1:

  • Bảng MetaData
  • Bảng dữ liệu trang
  • Trang dữ liệu chỉ mục
  • Dữ liệu MVCC

Có dữ liệu MVCC liên tục để bảo vệ tính toàn vẹn dữ liệu. Ngoài ra còn có sự tương tác liên tục với ib_logfile0 và ib_logfile1 (làm lại nhật ký). Có dữ liệu liên tục tuôn ra cứ sau 10 giây từ Bộ đệm InnoDB trở lại. Nhìn chung, có thể an toàn khi nói rằng sự lan truyền dữ liệu trên nhiều đĩa và hiệu suất I / O có thể cho thấy sự cải thiện hiệu suất cận biên cho đến khi có đủ sự phân mảnh trong ibdata1.

Bây giờ, nếu innodb_file_per_table được bật, mọi thứ có thể phức tạp hơn một chút. Đây là lý do tại sao:

Khi bạn dọn sạch ibdata1 và tách tất cả các bảng InnoDB khỏi ibdata1 , bạn sẽ có một ibdata1 nhỏ hơn. Tuy nhiên, mỗi lần truy cập vào bảng InnoDB yêu cầu điều hướng sử dụng thông qua ibdata1 TẤT CẢ THỜI GIAN thông qua Siêu dữ liệu Bảng. Theo nghĩa đen, bạn không thể tách siêu dữ liệu bảng (ibdata1) khỏi bảng (.ibd). Bất cứ nơi nào ibdata1 sống, I / O đĩa luôn phải đi qua ibdata1.

Hiệu ứng tổng thể: Phân mảnh bảng được giới hạn ở các tệp .ibd và có thể được giảm và sắp xếp lại với BẢNG TỐI ƯU, nhưng không thực sự tăng cường hiệu năng I / O nào.

Điều gì về việc đặt tất cả các tệp .ibd vào một bộ đĩa khác ngoài ibdata1 và sử dụng symlink? Theo Percona, điều đó tạo ra nhiều tình trạng hỗn loạn .

PHẦN KẾT LUẬN

Khi nói đến việc sử dụng nhiều ổ đĩa trên một ổ đĩa, tôi rất ủng hộ MyISAM hơn InnoDB.


5

Có, nhiều ổ đĩa sẽ cung cấp thông lượng tốt hơn nhờ vào công nghệ tuyệt vời mà chúng tôi gọi là RAID. Đối với cơ sở dữ liệu, bạn sẽ muốn RAID 10 (gương sọc).

Với 4 (N) ổ đĩa, bạn sẽ tăng gấp đôi (N / 2) tốc độ ghi và tốc độ đọc tuần tự tăng gấp bốn lần (N). Thời gian tìm kiếm sẽ vẫn giữ nguyên như cũ và bạn sẽ mất một nửa không gian để phản chiếu.


Trên thực tế, nếu thông lượng cho các khối lớn là một yếu tố quan trọng trong cơ sở dữ liệu quan hệ, thì rõ ràng bạn đang làm sai điều gì đó. Đĩa nhân đôi thực sự sẽ cung cấp cho bạn một sự gia tăng đáng kể trong các hoạt động đọc, nhưng tước là một cái gì đó giữa không hiệu quả và phản tác dụng.
Simon Richter

Xin hãy giải thích ..
eevar

Việc tăng tốc độ trong thiết lập phân chia dẫn đến việc phải định vị lại các đầu ít thường xuyên hơn trong khi đọc / ghi lớn, tuy nhiên cơ sở dữ liệu thường truy cập vào các khu vực nhỏ, vì vậy thời gian tìm kiếm vẫn là yếu tố hạn chế. Chiếc gương cho phép chúng ta chọn một đĩa gần hoặc không hoạt động trong khi đọc, vì vậy trong khi thời gian tìm kiếm cho các khối riêng lẻ vẫn giữ nguyên, thời gian tìm kiếm tích lũy cho danh sách các khối thấp hơn.
Simon Richter

Phân dải giữ ánh xạ 1: 1 giữa các đĩa và khối. Đối với các truy cập trang dữ liệu riêng lẻ, có khả năng bạn có thể đạt được hiệu suất nếu gương giữ dải hiện đang truy cập có đĩa nhàn rỗi, nhưng bất kỳ quyền truy cập nào qua ranh giới sọc (có thể trong quá trình quét chỉ mục) sẽ yêu cầu nhiều đĩa tìm kiếm để làm cho toàn bộ chỉ số có sẵn. Vì bạn sẽ tối ưu hóa cơ sở dữ liệu của mình để giữ các chỉ mục cho các truy vấn phổ biến, việc phân loại có khả năng làm chậm các truy vấn phổ biến và tăng tốc các truy vấn không phổ biến.
Simon Richter

Tôi xin lỗi, nhưng tôi chưa bao giờ thấy bất kỳ sự gia tăng đáng kể nào trong thời gian tìm kiếm do bị tước. Wikipedia cho thấy hiệu ứng ngược lại .
eevar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.