Mysql hiển thị mức sử dụng CPU

Nói chung, mức sử dụng CPU cao của phiên bản TencentDB cho MySQL sẽ gây ra các ngoại lệ hệ thống, chẳng hạn như phản hồi chậm, không nhận được kết nối và hết thời gian chờ. Hiệu suất giảm thường do số lần thử lại cao khi hết thời gian chờ và mức sử dụng CPU cao thường do các câu lệnh SQL đặc biệt gây ra. Số lượng lớn xung đột khóa, chờ khóa hoặc giao dịch không được cam kết cũng có thể gây ra mức sử dụng CPU cao của TencentDB cho các phiên bản MySQL

Khi cơ sở dữ liệu thực hiện các tác vụ sửa đổi câu lệnh hoặc truy vấn nghiệp vụ, CPU sẽ yêu cầu các khối dữ liệu (8 KB theo mặc định) từ bộ nhớ

  • Nếu bộ nhớ có dữ liệu đích, CPU sẽ thực hiện tác vụ tính toán và trả về kết quả cho bạn, điều này có thể liên quan đến các hành động yêu cầu mức sử dụng CPU cao như sắp xếp
  • Nếu bộ nhớ không có dữ liệu đích, cơ sở dữ liệu sẽ lấy dữ liệu từ đĩa

Hai quá trình thu nhận dữ liệu trên lần lượt được gọi là đọc logic và đọc vật lý. Do đó, các câu lệnh SQL hoạt động kém có thể dễ dàng khiến cơ sở dữ liệu tạo ra nhiều lần đọc logic trong quá trình thực thi, dẫn đến mức sử dụng CPU cao. Chúng cũng có thể làm cho cơ sở dữ liệu tạo ra nhiều lần đọc vật lý, dẫn đến độ trễ IOPS và I/O cao

Các giải pháp

DBbrain cung cấp ba tính năng chính mà bạn có thể sử dụng để khắc phục sự cố và tối ưu hóa các câu lệnh SQL đặc biệt gây ra mức sử dụng CPU cao

  • chẩn đoán ngoại lệ. phát hiện và chẩn đoán các trường hợp ngoại lệ 24/7 và cung cấp các đề xuất tối ưu hóa trong thời gian thực
  • Phân tích SQL chậm. phân tích các câu lệnh SQL chậm của phiên bản hiện tại và cung cấp các đề xuất tối ưu hóa tương ứng
  • Phân tích nhật ký kiểm tra. thực hiện phân tích chuyên sâu về các câu lệnh SQL và cung cấp các đề xuất tối ưu hóa dựa trên dữ liệu kiểm toán TencentDB (SQL đầy đủ)

Phương pháp 1 (khuyên dùng). Sử dụng tính năng chẩn đoán ngoại lệ để khắc phục sự cố ngoại lệ cơ sở dữ liệu

Tính năng chẩn đoán ngoại lệ có thể chủ động xác định vị trí và thực hiện tối ưu hóa cho các lỗi và không yêu cầu kinh nghiệm OPS. Nó có thể chẩn đoán không chỉ các trường hợp ngoại lệ của việc sử dụng CPU cao mà còn tất cả các trường hợp ngoại lệ và lỗi phổ biến của TencentDB cho các phiên bản MySQL

Hướng

  1. Đăng nhập vào Bảng điều khiển DBbrain, chọn Chẩn đoán và Tối ưu hóa ở thanh bên trái và chọn Chẩn đoán ngoại lệ ở trên cùng

  2. Chọn (nhập hoặc tìm kiếm) ID phiên bản ở góc trên cùng bên trái để chuyển sang phiên bản đích

  3. Trên trang này, chọn "Thời gian thực" hoặc "Lịch sử" và chọn khoảng thời gian sẽ được truy vấn. Nếu có bất kỳ lỗi nào tồn tại trong giai đoạn này, thông tin tổng quan sẽ được hiển thị trong "Diagnosis Prompt" ở bên phải

  4. Nhấp vào Xem chi tiết trong tab "Thời gian thực" hoặc "Lịch sử" hoặc mục chẩn đoán mục tiêu trong "Dấu nhắc chẩn đoán" để truy cập trang chi tiết chẩn đoán

    • Tổng quan sự kiện. bao gồm các mục chẩn đoán, thời gian bắt đầu và kết thúc, mức độ rủi ro, thời lượng và tổng quan
    • triệu chứng. bao gồm ảnh chụp nhanh về triệu chứng và xu hướng hiệu suất của sự kiện ngoại lệ hoặc sự kiện kiểm tra tình trạng
    • Phân tích thông minh. phân tích nguyên nhân gốc rễ của ngoại lệ hiệu suất để giúp bạn xác định hoạt động cụ thể
    • Đề xuất của chuyên gia. cung cấp các đề xuất tối ưu hóa, bao gồm nhưng không giới hạn ở tối ưu hóa SQL (lập chỉ mục và viết lại), tối ưu hóa cấu hình tài nguyên và tinh chỉnh tham số
  5. Chọn tab Lời khuyên của chuyên gia để xem đề xuất tối ưu hóa do DBbrain cung cấp cho lỗi này. Trong ví dụ này, đề xuất tối ưu hóa được cung cấp cho câu lệnh SQL thiếu chỉ mục tương ứng trong quá trình thực thi. Trong trường hợp này, cần thực hiện quét toàn bộ bảng và thực hiện một lần rất tốn kém. Do đó, việc sử dụng CPU có xu hướng cao hoặc thậm chí 100% trong các tình huống có độ đồng thời cao

Phương pháp 2. Sử dụng tính năng "phân tích SQL chậm" để khắc phục sự cố các câu lệnh SQL dẫn đến mức sử dụng CPU cao

  1. Đăng nhập vào Bảng điều khiển DBbrain, chọn Chẩn đoán và Tối ưu hóa ở thanh bên trái và chọn Phân tích SQL chậm ở trên cùng

  2. Chọn (nhập hoặc tìm kiếm) ID phiên bản ở góc trên cùng bên trái để chuyển sang phiên bản đích

  3. Trên trang này, hãy chọn khoảng thời gian được truy vấn. Nếu các câu lệnh SQL chậm tồn tại trong khoảng thời gian này, thời điểm xảy ra và số lượng câu lệnh sẽ được hiển thị trong biểu đồ thanh trong "Thống kê SQL".
    Nhấp vào biểu đồ thanh và thông tin của tất cả các câu lệnh SQL chậm tương ứng (những câu lệnh được tổng hợp theo mẫu) sẽ được hiển thị trong danh sách bên dưới và phân bổ thời lượng của các câu lệnh SQL trong khoảng thời gian đã chỉ định sẽ .

  4. Bạn có thể xác định và lọc dữ liệu thực thi câu lệnh SQL trong danh sách câu lệnh SQL thông qua phương pháp sau

    1. Sắp xếp các câu lệnh SQL theo thời lượng trung bình (hoặc thời lượng tối đa). Kiểm tra các câu lệnh SQL hàng đầu về thời lượng. Chúng tôi khuyên bạn không nên sắp xếp các câu lệnh theo tổng thời lượng vì dữ liệu có thể bị ảnh hưởng bởi số lượng lớn các lần thực thi

    2. Sau đó, kiểm tra số lượng hàng được trả lại và hàng được quét

      • Nếu có một câu lệnh SQL có cùng "số hàng được trả về" và "số hàng được quét", thì rất có thể toàn bộ bảng đã được truy vấn và trả về

      • Nếu có một số câu lệnh SQL với số lượng lớn hàng được quét nhưng không có hoặc có ít hàng được trả về, điều đó có nghĩa là hệ thống đã tạo ra nhiều lần đọc logic và vật lý. Nếu khối lượng dữ liệu được truy vấn quá cao và bộ nhớ không đủ, yêu cầu sẽ tạo ra nhiều yêu cầu I/O vật lý và tiêu tốn nhiều tài nguyên I/O. Quá nhiều lần đọc logic sẽ chiếm quá nhiều tài nguyên CPU, dẫn đến việc sử dụng CPU cao

  5. Nhấp vào một câu lệnh SQL để xem chi tiết, mức tiêu thụ tài nguyên và đề xuất tối ưu hóa

    • Trên trang phân tích, bạn có thể xem mẫu SQL hoàn chỉnh, mẫu câu lệnh SQL, đề xuất tối ưu hóa và mô tả. Bạn có thể tối ưu hóa các câu lệnh SQL của mình dựa trên các đề xuất của chuyên gia do DBbrain cung cấp để cải thiện hiệu suất SQL và giảm thời lượng thực thi SQL

    • Trên trang thống kê, bạn có thể thực hiện phân tích cắt ngang về nguyên nhân gốc rễ của câu lệnh SQL chậm dựa trên tỷ lệ phần trăm của tổng thời gian chờ khóa, tổng số hàng được quét và tổng số hàng được trả về trong báo cáo thống kê, sau đó tối ưu hóa câu lệnh cho phù hợp

    • Trên trang phân phối thời lượng, bạn có thể xem khoảng thời gian phân phối thời lượng thực hiện của loại câu lệnh SQL tổng hợp được chỉ định và phần trăm truy cập của IP nguồn

Phương pháp 3. Sử dụng tính năng "phân tích nhật ký kiểm tra" để khắc phục sự cố các câu lệnh SQL gây ra mức sử dụng CPU cao

điều kiện tiên quyết. phiên bản cần bật tính năng kiểm tra cơ sở dữ liệu

  1. Đăng nhập vào Bảng điều khiển DBbrain, chọn Chẩn đoán và Tối ưu hóa ở thanh bên trái và chọn Phân tích nhật ký kiểm tra ở trên cùng

  2. Chọn (nhập hoặc tìm kiếm) ID phiên bản ở góc trên cùng bên trái để chuyển sang phiên bản đích

  3. Bạn có thể chọn hiển thị chế độ xem thông tin chi tiết theo QPS hoặc số lượng truy vấn chậm. Nhấp vào Tạo nhiệm vụ kiểm tra ở góc trên cùng bên phải của chế độ xem. và chọn thời gian bắt đầu và thời lượng của nhiệm vụ. Sau đó, nhấp vào Xác nhận.
    Tác vụ sau khi được tạo sẽ hiển thị trong danh sách tác vụ. Sau khi hoàn thành nhiệm vụ, hãy tìm bản ghi đích và nhấp vào Xem phân tích SQL để truy cập trang chi tiết phân tích SQL.

  4. Trên trang phân tích SQL, bạn có thể hiển thị chế độ xem theo Loại SQL, Máy chủ, Người dùng hoặc Mã SQL. Bạn có thể chỉ định khoảng thời gian để mở rộng chế độ xem và xem dữ liệu tại các thời điểm cụ thể.
    Chi tiết tổng hợp và thông tin thực thi của các câu lệnh SQL trong khoảng thời gian xác định được hiển thị trong bảng bên dưới. Nếu bạn chọn một khoảng thời gian và kéo dài nó trong bảng, dữ liệu SQL sẽ thay đổi tương ứng và chỉ kết quả phân tích SQL của khoảng thời gian đã chọn mới được hiển thị.

  5. Thông tin thực thi câu lệnh SQL tổng hợp (bao gồm số lần thực thi, độ trễ tổng, tối đa và tối thiểu cũng như tổng số lượng hàng bị ảnh hưởng, tối đa và tối thiểu) được hiển thị trong bảng ở cuối phần phân tích SQL . Bạn có thể sắp xếp các câu lệnh SQL theo nhiều chỉ số để xác định những câu lệnh cần tối ưu hóa.
    Ví dụ.
    Sắp xếp các câu lệnh SQL theo số lần thực thi để xác định những câu có số lần thực thi cao hoặc có thay đổi ngoại lệ. Sau đó, phân tích tính hợp lý của số lần thực thi và tối ưu hóa các câu lệnh dựa trên gợi ý của DBbrain.

    • Bằng cách xem số lần thực thi, tổng độ trễ và độ trễ tối đa, bạn có thể thấy rằng độ trễ thực thi trung bình của câu lệnh SQL thứ nhất và thứ hai với số lần thực thi cao nhất là rất ngắn, điều này cho thấy rằng hiệu suất của .
      Bạn có thể thấy rằng thời gian thực hiện duy nhất của câu lệnh thứ ba là khoảng 100 giây. Vì số lần thực thi của nó tương đối thấp nên tổng độ trễ của nó đứng thứ ba. Tuy nhiên, kiểu SQL này phải được tối ưu. Bạn có thể nhấp vào SQL để xem thông tin như đề xuất của chuyên gia, đường cong phân tích mức tiêu thụ tài nguyên và phân tích IP nguồn do DBbrain cung cấp.

    • Có một loại câu lệnh SQL khác cần sự chú ý của bạn. Bạn có thể thấy rằng sự khác biệt giữa độ trễ tối đa và tối thiểu của câu lệnh thứ tư là rất lớn (hơn 200 giây). Điều này chỉ ra rằng toàn bộ hệ thống đang dao động và bạn cần phân tích xem sự dao động đó là do sự cố mạng hay do thay đổi kế hoạch thực hiện do thay đổi khối lượng dữ liệu

    • Nếu số lần thực thi và thời lượng trung bình của các câu lệnh SQL là tương đối hợp lý và các câu lệnh SQL có số lần thực thi lớn là tối ưu, điều đó có nghĩa là hiệu suất đã đạt đến nút cổ chai. Chúng tôi khuyên bạn nên nâng cấp cấu hình đặc tả phiên bản hoặc sử dụng phân tách đọc/ghi để phân tán các câu lệnh SQL với số lượng lớn các lần thực thi hoặc sử dụng cơ sở dữ liệu bộ nhớ cache đặt trước để tối ưu hóa

      Làm cách nào để kiểm tra mức sử dụng CPU trong MySQL?

      Bạn có thể sử dụng Thông tin chi tiết về hiệu suất để xác định chính xác các truy vấn đang chạy trên phiên bản và gây ra mức sử dụng CPU cao. Đầu tiên, kích hoạt Thông tin chi tiết về hiệu suất cho MySQL. Sau đó, bạn có thể sử dụng Thông tin chi tiết về hiệu suất để tối ưu hóa khối lượng công việc của mình.

      Làm cách nào để xem mức sử dụng CPU của tôi?

      Sử dụng Trình quản lý tác vụ để xem mức tiêu thụ CPU nhằm giúp xác định quy trình hoặc ứng dụng gây ra mức sử dụng CPU cao. .
      Chọn Bắt đầu, nhập nhiệm vụ, sau đó chọn Trình quản lý Tác vụ trong kết quả tìm kiếm
      Cửa sổ Trình quản lý tác vụ mặc định là tab Quy trình. .
      Chọn tiêu đề cột CPU để sắp xếp danh sách theo mức sử dụng CPU

      Tại sao MySQL sử dụng 100 CPU?

      Ở đây, MySQL đang sử dụng tới 100% của một lõi và 60% của lõi khác. Điều đó không có nghĩa là tất cả các CPU đã được sử dụng hết, rất có thể anh ta vẫn còn ít nhất hai CPU miễn phí. CPU cao hầu như luôn có nghĩa là các truy vấn không hiệu quả. Những vấn đề như vậy thường được giải quyết thông qua lập chỉ mục tốt hơn (đặc biệt là 'tổng hợp') và/hoặc định dạng lại truy vấn

      Làm cách nào tôi có thể xem quy trình nào đang chạy trong MySQL?

      Nhập MYSQL để vào dòng lệnh mysql. Nhập show processlist; để xem các quy trình hiện tại trên máy chủ.