Trang chủ » làm thế nào để » Tăng tốc trang web của bạn với bộ đệm truy vấn MySQL

    Tăng tốc trang web của bạn với bộ đệm truy vấn MySQL

    Một trong những cách tốt nhất để tăng tốc ứng dụng web của bạn là kích hoạt bộ đệm ẩn truy vấn trong cơ sở dữ liệu của bạn, lưu trữ các truy vấn SQL thường được sử dụng trong bộ nhớ để truy cập gần như ngay lập tức bởi trang tiếp theo có cùng yêu cầu.

    Lý do phương pháp này mạnh mẽ là vì bạn không phải thực hiện bất kỳ thay đổi nào đối với ứng dụng web của mình, bạn chỉ cần hy sinh một chút bộ nhớ. Điều này sẽ không khắc phục tất cả các vấn đề của bạn, nhưng nó chắc chắn không thể làm tổn thương.

    Lưu ý: nếu ứng dụng của bạn cập nhật bảng thường xuyên, thì bộ đệm truy vấn sẽ liên tục bị xóa và bạn sẽ không nhận được nhiều hoặc bất kỳ lợi ích nào từ việc này. Điều này lý tưởng cho một ứng dụng chủ yếu đọc trên cơ sở dữ liệu, chẳng hạn như blog WordPress. Điều này cũng sẽ không hoạt động nếu bạn đang chạy trên chia sẻ lưu trữ.

    Kích hoạt bộ đệm với máy chủ đang chạy

    Điều đầu tiên bạn muốn làm là đảm bảo rằng bản cài đặt MySQL của bạn thực sự có hỗ trợ bộ đệm truy vấn có sẵn. Hầu hết các bản phân phối đều có, nhưng dù sao bạn cũng nên kiểm tra.

    Bạn sẽ muốn chạy lệnh này từ bảng điều khiển MySQL của bạn, nó sẽ cho bạn biết nếu bộ đệm truy vấn có sẵn.

    mysql hiển thị các biến như 'have_query_cache'; + ------------------ + ------- + | Biến_ame | Giá trị | + ------------------ + ------- + | have_query_cache | CÓ | +------------------+-------+ 

    Đừng nhầm điều này có nghĩa là bộ nhớ đệm truy vấn thực sự được bật, bởi vì hầu hết các nhà cung cấp dịch vụ lưu trữ sẽ không bật tính năng này theo mặc định. Thật kỳ lạ, bản cài đặt Ubuntu Feisty của tôi đã kích hoạt nó

    Tiếp theo chúng ta sẽ cần kiểm tra và xem liệu bộ đệm ẩn truy vấn có được bật hay không. Chúng tôi sẽ cần kiểm tra nhiều hơn một biến, vì vậy chúng tôi cũng có thể làm tất cả cùng một lúc bằng cách kiểm tra% truy vấn biến

    mysql hiển thị các biến như 'truy vấn%'; + ------------------------------ + --------- + | Biến_ame | Giá trị | + ------------------------------ + --------- + | truy vấn_alloc_block_size | 8192 | | truy vấn_cache_limit | 1048576 | | truy vấn_cache_min_res_unit | 4096 | | truy vấn_cache_size | 8388608 | | truy vấn_cache_type | TRÊN | | truy vấn_cache_wlock_invalidate | TẮT | | truy vấn_prealloc_size | 8192 | +------------------------------+---------+ 

    Đây là các mục quan trọng trong danh sách và ý nghĩa của chúng:

    • truy vấn_cache_size - Đây là kích thước của bộ đệm theo byte. Đặt giá trị này thành 0 sẽ vô hiệu hóa bộ nhớ đệm.
    • truy vấn_cache_type - Giá trị này phải BẬT hoặc 1 để bộ đệm ẩn truy vấn được bật theo mặc định.
    • truy vấn_cache_limit - Đây là truy vấn kích thước tối đa (tính bằng byte) sẽ được lưu trữ.

    Nếu giá trị query_cache_size được đặt thành 0 hoặc bạn chỉ muốn thay đổi nó, bạn sẽ cần chạy lệnh sau, hãy nhớ rằng giá trị được tính bằng byte. Chẳng hạn, nếu bạn muốn phân bổ 8MB vào bộ đệm, chúng tôi sẽ sử dụng 1024 * 1024 * 8 = 8388608 làm giá trị.

    THIẾT LẬP truy vấn TOÀN CẦU_cache_size = 8388608;

    Tương tự, các tùy chọn khác có thể được đặt với cùng một cú pháp:

    THIẾT LẬP truy vấn TOÀN CẦU_cache_limit = 1048576;
    THIẾT LẬP TOÀN CẦU truy vấn_cache_type = 1;

    Bây giờ làm thế nào để chúng ta biết nếu nó thực sự làm việc? Bạn có thể sử dụng lệnh SHOW STATUS để kéo tất cả các biến bắt đầu với INTERN Qcật để xem những gì đang diễn ra dưới mui xe.

    mysql HIỂN THỊ TÌNH TRẠNG THÍCH 'Qc%'; + ------------------------- + -------- + | Biến_ame | Giá trị | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 hàng trong bộ (0,00 giây) 

    Bạn sẽ nhận thấy trong các số liệu thống kê rằng tôi còn rất nhiều bộ nhớ trống. Nếu máy chủ của bạn hiển thị nhiều mận thấp, bạn có thể cần xem xét tăng giá trị này, nhưng tôi sẽ không dành quá nhiều bộ nhớ cho bộ nhớ đệm truy vấn cho máy chủ web. Bạn cần để lại bộ nhớ cho apache, php, ruby ​​hoặc bất cứ thứ gì bạn đang sử dụng.

    Kích hoạt trong tập tin cấu hình

    Nếu bạn muốn những thay đổi này tồn tại khi khởi động lại hoặc khởi động lại máy chủ mysql, bạn sẽ cần thêm chúng vào tệp cấu hình /etc/mysql/my.cnf cho MySQL. Lưu ý rằng nó có thể ở một vị trí khác trong cài đặt của bạn.

    Mở tệp bằng trình soạn thảo văn bản ở chế độ sudo hoặc root, sau đó thêm các giá trị này nếu chúng chưa tồn tại trong tệp. Nếu chúng tồn tại, chỉ cần bỏ qua chúng.

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Bộ nhớ đệm truy vấn có thể cải thiện đáng kể tốc độ của ứng dụng web của bạn, đặc biệt nếu ứng dụng của bạn chủ yếu đọc. Theo dõi trạng thái bằng các phương pháp trên và xem cách nó hoạt động theo thời gian.