Công thức tính hiệu quả của khóa, bộ đệm khóa được sử dụng và truy vấn bộ đệm truy vấn trong MySql là gì?


7

Bây giờ, tôi đã lấy được một số ngày từ bảng 'GLOBAL_STATUS' và 'GLOBAL_VARIABLES' của MySQL DB có tên information_schema.

Tôi có thể lấy

  • key_buffer_size
  • key_cache_block_size
  • truy vấn_cache_limit
  • Query_cache_size ... và cứ thế ...

    Nhưng, tôi không biết cách tính tốc độ của Key hitrate , bộ đệm Key được sử dụnghitrate bộ nhớ cache truy vấn

vì vậy, ai đó có thể có được công thức về những điều đó, chẳng hạn như
? / ? * 100% = ?

Câu trả lời:


11

Để bạn tham khảo tôi cũng đang cố gắng giải thích một số khái niệm.

Tỷ lệ trúng phím

Về cơ bản có hai hình thức tỷ lệ trúng phím

1. Đọc hiệu quả

Key Reads: Số lần đọc vật lý của một khối khóa từ đĩa.

Yêu cầu đọc khóa: Số lượng yêu cầu đọc một khối khóa từ bộ đệm.

Key Read Efficiency = [1 - (Key_reads/Key_read_requests)]*100

Hiệu quả đọc khóa: Tỷ lệ số lần đọc vật lý của một khối khóa từ bộ đệm đến số lượng yêu cầu để đọc một khối khóa từ bộ đệm theo tỷ lệ phần trăm. Hiệu suất MySQL là tốt nếu giá trị của Hiệu quả đọc chính là 90 phần trăm trở lên. Việc tăng kích thước của bộ đệm sẽ cải thiện giá trị của Hiệu suất đọc chính và do đó cải thiện hiệu suất.

2.Key Viết hiệu quả

Key Writes: Số lần ghi vật lý của một khối khóa vào đĩa.

Yêu cầu ghi khóa: Số lượng yêu cầu ghi một khối khóa vào bộ đệm.

Key Write Efficiency=(Key_write/Key_write_requests)*100

Hiệu quả ghi khóa: Tỷ lệ số lần ghi vật lý của một khối khóa với bộ đệm so với số lượng yêu cầu để ghi một khối khóa vào bộ đệm theo tỷ lệ phần trăm. Để có hiệu suất tốt của máy chủ MySQL, giá trị của Hiệu suất ghi khóa phải từ 90 phần trăm trở lên. Nếu nó được tìm thấy ít hơn, thì bạn có thể tăng kích thước của bộ đệm để cải thiện hiệu suất.

Bộ đệm chính được sử dụng

Tìm giá trị của key_buffer_size là show variables like 'key_buffer_size';

chuyển đổi nó thành MB.

Tìm Kích thước chỉ mục Tất cả MyISAM:

CHỌN SUM (INDEX_LENGTH) / (1024 * 1024) 'Kích thước chỉ mục' TỪ information_schema.TABLES trong đó Engine = 'MyISAM' VÀ TABLE_SCHema KHÔNG IN ('mysql', 'information_schema');

Tìm thấy

(Index Size)/key_buffer_size(in MB) * 100

nếu kết quả là (<= 100) thì tất cả các chỉ mục của bạn sẽ được lưu vào key_buffer

nếu kết quả là (> 100) thì tất cả các chỉ mục của bạn không được lưu vào bộ đệm_buffer, bạn có thể tăng hiệu suất bằng cách tăng key_buffer_size.

truy vấn bộ nhớ cache

Tỷ lệ trúng = Qcache_hits / (Qcache_hits + Com_select) * 100

Chèn tỷ lệ = Qcache_inserts / (Qcache_hits + Com_select) * 100

Tỷ lệ prune = (Qcache_lowmem_prunes / Qcache_inserts) * 100


Rất đẹp. Bạn làm tôi thắc mắc. Cảm ơn bạn rất nhiều, đây là lần đầu tiên tôi đặt câu hỏi bằng tiếng Anh!
Xia Yu

oh tuyệt vời !!! Hy vọng rằng câu trả lời sẽ giúp bạn.
Abdul Manaf

Tại sao hiệu quả đọc khóa "1-" nhưng hiệu quả ghi khóa lại không?


0

Tôi không thường xuyên ở đây nhưng công thức trong câu trả lời hàng đầu cho Tỷ lệ trúng là không đúng. Vui lòng xem Tối ưu hóa MySQL query_cache_size để biết công thức phù hợp.


Tôi đánh giá cao rằng bạn không có danh tiếng cần thiết để gửi bình luận, nhưng bạn sẽ sớm thôi!
Max Vernon

0

(Bây giờ là năm 2019.)

Tôi đề nghị rằng câu hỏi là tranh luận vì bạn không nên sử dụng MyISAM. Thay vào đó, bạn nên sử dụng InnoDB, có các số liệu khác nhau.

Và Cache truy vấn đã bị xóa khỏi MySQL 8.0. Và nó không thể sử dụng được trong nhiều thiết lập đa chủ, bao gồm cả Galera và Tái tạo nhóm.

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.