MySQL có thể tận dụng hiệu quả RAM 64 GB không?


22

Chúng tôi đã gặp phải một vấn đề khi truy vấn một bảng có xấp xỉ 50 triệu hàng và có kích thước chỉ mục là 4 GB (kích thước bảng khoảng 6 GB) dẫn đến việc máy chủ cơ sở dữ liệu hoán đổi bộ nhớ và làm chậm đáng kể. Tôi khá chắc chắn rằng điều này có liên quan đến việc kích thước bảng tạm thời bị vượt quá và nó được hoán đổi vào đĩa.

Nếu tôi nâng cấp máy chủ cơ sở dữ liệu của mình từ RAM 32 GB lên RAM 64 GB, tôi tự hỏi liệu cơ sở dữ liệu MySQL có thể tận dụng hết bộ nhớ bổ sung này và không trao đổi không. Tôi đã trải qua một vài biến số (ví dụ: KEY_BUFFER_SIZE, v.v ...) và dường như chúng hỗ trợ cài đặt các giá trị trên 64 GB. Tuy nhiên, tài liệu MySQL nói rằng tmp_table_size tối đa là 4 GB.

Vì vậy, nâng cấp bộ nhớ sẽ có giá trị nó? Vấn đề "truy vấn bảng lớn" sẽ được hưởng lợi từ vấn đề này, hoặc nó sẽ không giúp ích gì vì giới hạn 4 GB? Tôi biết có những giải pháp tiềm năng khác như tái cấu trúc bảng sẽ được phân vùng theo nhiều cách khác nhau, v.v ... nhưng không thay đổi bất cứ điều gì về bảng, liệu bộ nhớ bổ sung có giúp ích gì không?

Ngoài ra, nói chung, có bất kỳ biến liên quan đến bộ nhớ nào khác mà MySQL sẽ không thể tận dụng khi chuyển từ RAM 32 sang 64 GB không?

Chúng tôi đang sử dụng linux 64bit (Ubuntu) làm máy chủ cơ sở dữ liệu của chúng tôi.

Cảm ơn, Galen

Câu trả lời:


5

Nếu bạn đang sử dụng InnoDB, biến quan trọng nhất cần đặt là innodb_buffer_pool_size. Tôi sẽ đặt nó vào khoảng 80% bộ nhớ hệ thống của bạn. Khi bạn lưu trữ ấm lên sau một số lần sử dụng, dữ liệu hoạt động mạnh nhất của bạn (bộ dữ liệu đang hoạt động) sẽ nằm trong bộ nhớ (innodb_buffer_pool_size) và các thao tác của bạn trên đó sẽ rất nhanh. Với bộ nhớ 64GB, bạn chắc chắn có thể phù hợp với rất nhiều thứ trong đó. Bộ nhớ luôn luôn là một mua tốt cho các máy chủ DB.


11

Có - nếu bạn sử dụng InnoDB và có khối lượng công việc lớn, bạn hoàn toàn có thể tận dụng lượng RAM lớn [giả sử tập dữ liệu của bạn sẽ phù hợp với mem - máy chủ của bạn sẽ rất nhanh].

Tôi đang sử dụng MySQL với bộ lưu trữ InnoDB trên các máy chủ 8-16 GB với bộ làm việc vừa vặn trong bộ nhớ.


Tương tự ở đây - chúng tôi chạy InnoDB trên các hộp 64 GB và thật tuyệt.
James

9

Có lẽ sẽ đáng để bỏ thêm thời gian và công sức vào việc nghiên cứu điều gì khiến hệ thống hoán đổi trước khi chi tiền cho bộ nhớ?

Bộ nhớ 32GB để lại nhiều bộ nhớ khả dụng ngay cả sau khi tải toàn bộ bảng, chỉ mục và temp_table tối đa vào bộ nhớ. Một tìm kiếm nhanh đưa ra hai mẩu tài liệu có thể có liên quan:


0

Nếu bạn nghĩ rằng đó là do một bảng tạm thời rất lớn được tạo ra, bạn có thể muốn xem xét các cách bạn có thể cải thiện truy vấn để tránh các bảng tạm thời.

Bạn có thể đăng lên Stackoverflow một bài đăng chứa lược đồ, truy vấn, kế hoạch giải thích và một số chi tiết cho vấn đề.

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.