Yêu cầu RAM cụm MySQL


8

Từ MySQL 5.1, dữ liệu không cần phải hoàn toàn trong bộ nhớ nữa.

Tôi đã đọc rằng các cột được lập chỉ mục (tôi nghĩ rằng toàn bộ cấu trúc chỉ mục) vẫn phải nằm trong bộ nhớ ( Tính khả dụng cao của MySQL, 2010, trang 533 , "Cụm MySQL giữ tất cả các cột được lập chỉ mục trong bộ nhớ chính" ).

Trong trường hợp này, điều gì xảy ra nếu KHÔNG có đủ bộ nhớ (ví dụ: cơ sở dữ liệu khổng lồ (> 100GB hoặc 1TB), chạy trên các máy chủ có cấu hình bộ nhớ thấp (ví dụ: 2 nút dữ liệu, mỗi nút có 1GB RAM))?


Tôi đã hỏi điều này bởi vì tôi tò mò về những gì sẽ xảy ra nếu một nút dữ liệu không có đủ bộ nhớ chính. Không phải MySQL Cluster giữ một phần của chỉ mục trong bộ nhớ thứ cấp? Điều gì xảy ra nếu tôi không có nhiều RAM và kích thước cơ sở dữ liệu của tôi rất lớn. Vậy thì MySQL Cluster không phải là một lựa chọn cho tôi?
gsb

Câu trả lời:


4

MySQL Cluster hỗ trợ lưu trữ các cột không được lập chỉ mục trên đĩa chỉ với bộ đệm LRU của dữ liệu được truy cập gần đây. Tuy nhiên, các cột được lập chỉ mục luôn được giữ trong bộ nhớ.

MySQL Cluster phân bổ tất cả bộ nhớ, theo các tham số DataMemory và IndexMemory. Nó sẽ không yêu cầu hệ điều hành cơ bản cho bộ nhớ nhiều hơn một cách linh hoạt.

Điều này có nghĩa là bạn cần phải cấu hình đủ bộ nhớ trong cụm của mình để giữ tất cả các cột được lập chỉ mục trong bộ nhớ. Nếu tập dữ liệu của bạn đủ lớn để các cột được lập chỉ mục lớn hơn bộ nhớ cụm khả dụng, thì bạn không thể tải tập dữ liệu đó vào cụm. Tại một số điểm bạn sẽ hết dung lượng và các giao dịch chèn của bạn sẽ bị hủy bỏ.

Khi định cấu hình DataMemory và IndexMemory, tốt nhất bạn nên giới hạn bản thân ít hơn một chút so với bộ nhớ vật lý trong mỗi hệ thống. Một số bộ nhớ vật lý nên được dành riêng cho HĐH và các quá trình khác.

Về mặt lý thuyết, Cluster MySQL có thể được cấu hình để nó sử dụng bộ nhớ ảo thông qua thiết bị trao đổi (ví dụ: nhiều hơn bộ nhớ vật lý), nhưng như trạng thái câu trả lời khác, đây không phải là trường hợp sử dụng được thiết kế. Có các cấu trúc trong bộ nhớ được hoán đổi vào đĩa thường không tối ưu vì các mẫu truy cập ngẫu nhiên trong bộ nhớ dẫn đến việc truy cập ngẫu nhiên vào đĩa, dẫn đến việc trao đổi và đập chậm trên toàn hệ thống. Với MySQL Cluster, kết quả rất có thể là thất bại nhịp tim và thất bại cụm do nút dữ liệu hoán đổi không đáp ứng đủ tín hiệu đủ nhanh.

Để hỗ trợ hiệu quả các chỉ mục bộ nhớ lớn hơn tổng hợp, MySQL Cluster sẽ cần hỗ trợ các định dạng chỉ mục trên đĩa (có lẽ là cây B, v.v.) với bộ đệm và các mẫu truy cập được căn chỉnh với các thuộc tính truy cập đĩa.


3

Cụm MySQL được xây dựng xung quanh một cấu trúc chỉ mục được tối ưu hóa cho phù hợp với bộ nhớ; T-cây . Điều này khác với các công cụ lưu trữ thông thường của bạn trong MySQL sử dụng cấu trúc cây B hoặc cây B + , có thể tồn tại khá tốt ngoài bộ nhớ, giả sử rằng bạn có một số điểm truy cập / điểm truy cập không đồng nhất (đây thường là giả định an toàn ).

Nếu bạn muốn xây dựng một số loại bằng chứng khái niệm, không có gì ngăn bạn sử dụng một lượng lớn trao đổi để bù đắp cho sự thiếu hụt của bạn. Chỉ cần lưu ý rằng điều này sẽ không hoạt động tốt và bạn đang sử dụng một sản phẩm cho trường hợp sử dụng mà nó không được thiết kế cho.


Câu trả lời của bạn và Frazer là khá tốt. Nhưng vì anh ấy đã trả lời trước, tôi sẽ cho anh ấy những khoản tín dụng. Hy vọng bạn không phiền. :)
gsb

Không, đừng bận tâm;) Frazer hoạt động trên cụm MySQL.
Morgan Tocker

2

Trong trường hợp này, điều gì xảy ra nếu KHÔNG đủ bộ nhớ

Có lẽ là những gì bạn mong đợi nếu không có đủ bộ nhớ. Các tệp sẽ được tạo trên các ổ đĩa của bạn và bạn sẽ chạy nhanh như các ổ đĩa của bạn cho phép.

Hãy chắc chắn giới hạn MySQL đúng cách để nó không tiêu thụ hết bộ nhớ của bạn cần cho các quy trình hệ thống khác.


1

Về cơ bản, một chuỗi chỉ mạnh bằng liên kết yếu nhất của nó.

Khi các máy chủ ảo riêng được thiết lập (sử dụng VMWare để thiết lập các cụm ESX), tất cả các máy chủ kim loại trần trong Cụm được cho là có cùng dung lượng RAM.

MySQL Cluster nên được xử lý với cùng loại găng tay trẻ em. Nếu bất kỳ máy chủ nào (thậm chí chỉ 1) có ít bộ nhớ hơn các máy chủ khác trong Cụm, thì đó sẽ giống như một yếu tố hạn chế. Tôi sẽ không ngạc nhiên nếu một máy chủ có RAM 2 GB khiến các máy chủ khác trong Cụm MySQL (ngay cả khi các máy chủ khác có RAM 8GB) hoạt động như thể chúng có tối đa 2 GB.

Ít nhất, bạn nên

Lưu ý phụ, xin lưu ý rằng MySQL Cluster cũng có khả năng lưu trữ dữ liệu trên đĩa cho mỗi máy chủ chạy dưới dạng nút lưu trữ

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.