Tăng tốc trang web của bạn với MySQL Query Caching

Tăng tốc trang web của bạn với MySQL Query Caching
Tăng tốc trang web của bạn với MySQL Query Caching

Video: Tăng tốc trang web của bạn với MySQL Query Caching

Video: Tăng tốc trang web của bạn với MySQL Query Caching
Video: Сексшоп адаптер ► 1 Прохождение The Legend of Zelda: Tears of the Kingdom - YouTube 2024, Tháng tư
Anonim

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ộ nhớ đệm 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ằng trang tiếp theo thực hiện cùng một yêu cầu.

Lý do khiến phương pháp này mạnh đến mức 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ỉ phải hy sinh một chút bộ nhớ. Điều này sẽ không khắc phục đượ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 thường xuyên các bảng, bộ nhớ cache truy vấn sẽ bị xóa liên tục và bạn sẽ không nhận được nhiều lợi ích từ việc này. Điều này là lý tưởng cho một ứng dụng mà chủ yếu là đọc đối với cơ sở dữ liệu, chẳng hạn như một blog WordPress. Điều này cũng sẽ không hoạt động nếu bạn đang chạy trên lưu trữ được chia sẻ.

Bật bộ nhớ đệm với máy chủ đang chạy

Điều đầu tiên bạn sẽ muốn làm là đảm bảo rằng cài đặt MySQL của bạn thực sự có hỗ trợ bộ nhớ đệm truy vấn có sẵn. Hầu hết các bản phân phối đều làm, nhưng bạn 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 mình, lệnh này sẽ cho bạn biết nếu bộ nhớ đệm truy vấn có sẵn.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+

Đừng nhầm lẫn điều này là có nghĩa là bộ nhớ cache truy vấn thực sự được bật 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. Oddly đủ, cài đặt Ubuntu Feisty của tôi đã có nó được kích hoạt…

Tiếp theo, chúng tôi cần kiểm tra xem liệu bộ đệm truy vấn có được bật hay không. Chúng tôi sẽ cần phải 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> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+

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

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

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ị bằng byte. Ví dụ: nếu bạn muốn phân bổ 8MB vào bộ nhớ cache, chúng tôi sẽ sử dụng 1024 * 1024 * 8 = 8388608 làm giá trị.

SET GLOBAL query_cache_size = 8388608;

Tương tự, các tùy chọn khác có thể được thiết lập với cùng cú pháp:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Bây giờ, làm cách nào để chúng tôi biết liệu nó có thực sự hoạt động không? Bạn có thể sử dụng lệnh SHOW STATUS để kéo tất cả các biến bắt đầu bằng “Qc” để xem xét những gì đang diễn ra dưới mui xe.

mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | 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 rows in set (0.00 sec)

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

Bật trong Tệp 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 của bạn cho MySQL. Lưu ý rằng nó có thể ở một vị trí khác trên cài đặt của bạn.

Mở tệp bằng trình chỉnh sửa 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ỏ ghi chú chúng.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Truy vấn bộ nhớ đệm 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 là đọc. Theo dõi trạng thái bằng cách sử dụng các phương pháp ở trên và xem cách hoạt động theo thời gian.

Đề xuất: