Làm cách nào để tăng mức sử dụng bộ nhớ trong Máy chủ MySQL để cải thiện tốc độ?


28

Tôi có máy chủ Windows 2008 với 8GB RAM chạy IIS7 và MySQL. Tôi đã theo dõi việc sử dụng bộ nhớ, cpu và ổ đĩa trên máy chủ và tôi phát hiện ra rằng MySQL chỉ sử dụng 250 MB RAM, khiến các ổ đĩa rất bận, mặc dù tôi có rất nhiều ram miễn phí.

Trong SQL Server tôi có thể dễ dàng đặt lượng bộ nhớ tôi muốn sử dụng, tôi đang tìm kiếm cài đặt tương tự trong MySQL.

Làm cách nào tôi có thể định cấu hình MySQL để sử dụng nhiều bộ nhớ hơn và giảm mức sử dụng CPU và đĩa?

Câu trả lời:


20

table_cachelà chỉ thị cấu hình hữu ích nhất để thay đổi. Mỗi lần MySQL truy cập vào một bảng, nó sẽ tải bảng vào bộ đệm. Nếu bạn có số lượng bảng cao, sẽ nhanh hơn khi lưu chúng vào bộ đệm.

Hãy xem các biến máy chủ của bạn bằng cách chạy:

show status;

và có một cái nhìn cho các biến open_tables. Nếu table_cachegiá trị này giống với giá trị của bạn và opened_tablestiếp tục tăng, thì bạn cần tăng table_cachegiá trị trong tệp cấu hình của mình. Bạn sẽ tìm thấy sự cân bằng bằng cách thử nghiệm các biến này trong thời gian cao điểm. Bạn muốn cấu hình nó để vào thời gian cao điểm, có một lượng thấp opened_tablesngay cả sau khi máy chủ đã hoạt động trong một thời gian dài.

key_buffer_sizecũng là một biến tốt để thử nghiệm. Biến này ảnh hưởng đến kích thước bộ đệm chỉ mục và làm cho biến này lớn hơn làm tăng tốc độ xử lý chỉ mục của MySQL. Bạn có thể xem lại các biến bằng show variables;lệnh và so sánh key_read_requestsvới key_reads. Lý tưởng nhất là bạn muốn tỷ lệ giữa hai biến này càng thấp càng tốt và bạn có thể làm điều này bằng cách tăng kích thước của key_buffer_size. Nếu bạn đặt biến này cao hơn, bạn sẽ ít ghi và đọc trực tiếp đến và từ đĩa, đó là mối quan tâm chính của bạn.


11
Trên thực tế lệnh là show status; để xem các biến trạng thái như Open_tablesOpened_tables. table_cachedường như đã bị xóa trong các phiên bản MySQL gần đây.
Matt Fenwick

5

Bạn cần thay đổi giá trị trong my.cnftệp và khởi động lại MySQL, mặc dù bạn cũng có thể thay đổi nhiều giá trị trong khi MySQL cũng đang chạy ('SET GLOBAL VARIABLE = value ').

Bạn có thể sẽ muốn xem xét tăng key_buffer_size, sort_buffer, read_buffertable_cachecho người mới bắt đầu và có lẽ innodb_buffer_pool_size, nếu bạn có bất kỳ các bảng InnoDB. Một số giá trị này bạn có thể tăng một chặng đường dài (thậm chí hai bậc độ lớn) đặc biệt là với phần cứng của bạn. Mặc định của MySQL là cực kỳ bảo thủ và dường như nhằm vào các máy tính để bàn sử dụng hỗn hợp phổ biến của khoảng mười năm trước. Ồ, và được cảnh báo rằng phiên bản 32 bit sẽ gặp sự cố khi sử dụng hơn 2GB RAM.

Xem trong Hướng dẫn sử dụng MySQL để biết thêm thông tin và hướng dẫ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.