Làm cách nào để kiểm tra thời gian thực hiện tối đa trong MySQL?

Một truy vấn được gửi tới MySQL mất nhiều thời gian hơn để thực hiện hơn dự kiến. Sử dụng công cụ MySQL để lập hồ sơ truy vấn, một lượng lớn thời gian được ghi lại bởi trình lập kế hoạch truy vấn

triệu chứng

Thời gian thực hiện truy vấn trong MySQL cao

Nguyên nhân

Công cụ lập kế hoạch truy vấn MySQL đang xem xét các kế hoạch thay thế dẫn đến thời gian lập kế hoạch lớn hơn.

Để biết thêm chi tiết, hãy tham khảo tài liệu MySQL về lập kế hoạch truy vấn.

http. // nhà phát triển. mysql. com/doc/refman/8. 0/vi/kiểm soát-truy vấn-kế hoạch-đánh giá. html
 

Giải quyết vấn đề


Giảm giá trị độ sâu tìm kiếm được sử dụng bởi MySQL. Điều này có thể được chỉ định thông qua khối lệnh kết nối trong Cognos Analytics, khối này đưa ra lệnh phiên thiết lập MySQL hoặc bởi quản trị viên MySQL giảm cài đặt mặc định của máy chủ.

Để biết thêm chi tiết, hãy tham khảo tài liệu về MySQL.
https. // nhà phát triển. mysql. com/doc/refman/8. 0/vi/kiểm soát-truy vấn-kế hoạch-đánh giá. html

Vị trí tài liệu

Toàn cầu

[{"Loại". "SW","Ngành Kinh doanh". {"mã số". "LOB10","nhãn". "Dữ liệu và AI"}"Đơn vị kinh doanh". {"mã số". "BU059","nhãn". "Phần mềm IBM w\/o TPS"},"Sản phẩm". {"mã số". "SSTSF6","nhãn". "IBM Cognos Analytics"},"Danh mục ARM". [{"mã số". "a8m50000000Cl6nAAC","nhãn". "Cài đặt và cấu hình->Nguồn dữ liệu"}],"Số trường hợp ARM". "","Nền tảng". [{"mã số". "PF025","nhãn". "Nền tảng độc lập"}],"Phiên bản". "Tất cả (các) Phiên bản"}]

Để đo thời gian truy vấn MySQL thực tế, chúng ta có thể sử dụng khái niệm lược tả phải được đặt thành 1 trước khi thực hiện truy vấn

Thứ tự phải như thế này

Set profiling to 1
Then execute query
Then show profiles

Bây giờ, tôi đang áp dụng lệnh trên để lấy thời gian truy vấn MySQL thực tế -

mysql> SET profiling = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Sau đó, tôi đang thực hiện truy vấn sau -

mysql> SELECT * from MilliSecondDemo;

Sau đây là đầu ra

+-------------------------+
| MyTimeInMillSec         |
+-------------------------+
| 2018-10-08 15:19:50.202 |
+-------------------------+
1 row in set (0.00 sec)

Để biết thời gian thực của truy vấn trên, hãy sử dụng truy vấn sau

mysql> SHOW PROFILES;

Sau khi thực hiện câu truy vấn trên, chúng ta sẽ nhận được kết quả như hình bên dưới –

+----------+------------+------------------------------+
| Query_ID | Duration   | Query                        |
+----------+------------+------------------------------+
| 1        | 0.00051725 | SELECT * from MilliSecondDemo|
+----------+------------+------------------------------+
1 row in set, 1 warning (0.00 sec)

Làm cách nào để kiểm tra thời gian thực hiện tối đa trong MySQL?


Làm cách nào để kiểm tra thời gian thực hiện tối đa trong MySQL?

Bạn có thể tự hỏi liệu người dùng của bạn có thể làm chậm hoặc thậm chí DOS cơ sở dữ liệu MySQL của bạn với một yêu cầu không may mắn hay không. Nếu nó chỉ chứa sai số lượng điều kiện trong biểu mẫu tìm kiếm nâng cao của bạn, kích hoạt quá trình quét toàn bộ bảng trên tập dữ liệu lớn hơn nhiều so với bạn dự đoán thì có thể họ có thể

Nếu bạn cung cấp chức năng tìm kiếm nâng cao, thống kê tổng hợp, báo cáo hoặc xuất dữ liệu trong ứng dụng của mình, thì truy vấn chạy dài không thường xuyên là một phần của thiết kế. Bạn có thể chưa bị quá tải và chậm cơ sở dữ liệu, chỉ vì người dùng của bạn không thường xuyên sử dụng các tính năng này

Cho đến MySQL 5. 7, bạn không có cách nào dễ dàng để tự bảo vệ mình khỏi một lượng lớn người dùng DDoS cơ sở dữ liệu của bạn bằng các truy vấn chạy dài. Ngoài ra, PHP max_execution_time không áp dụng cho việc chờ các cuộc gọi mạng như được hiển thị trong bài đăng trên blog trước đây trên max_execution_time. Điều này có nghĩa là các tập lệnh PHP và kết nối MySQL của bạn có thể bị chặn miễn là truy vấn chạy, trường hợp xấu nhất là vài phút hoặc vài giờ

Khi bạn Google vấn đề này, giải pháp được đề xuất là chạy một daemon hoặc cronjob theo dõi danh sách quy trình và chỉ loại bỏ các truy vấn chạy dài. Điều này chắc chắn hoạt động, nhưng bạn không biết ai đang chạy truy vấn và tại sao, điều này ngăn bạn áp dụng thời gian chờ chi tiết hơn dựa trên ngữ cảnh (ví dụ: web so với quy trình nền)

Với MySQL5. 7, giờ đây bạn có thể sử dụng gợi ý truy vấn trình tối ưu hóa mới để định cấu hình thời gian thực hiện tối đa của

mysql> SET profiling = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
0 truy vấn tính bằng Mili giây

SELECT /*+ MAX_EXECUTION_TIME(1000) */ status, count(*) FROM articles GROUP BY status ORDER BY status; 

Hoặc bạn có thể đặt thời gian chờ toàn phiên hoặc toàn cầu

SET SESSION MAX_EXECUTION_TIME=2000; SET GLOBAL MAX_EXECUTION_TIME=2000; 

Thời gian chờ chỉ áp dụng cho các truy vấn CHỌN chỉ đọc

Nếu truy vấn của bạn mất nhiều thời gian, nó sẽ không thành công với lỗi sau

________số 8

Bạn có thể xử lý lỗi này một cách tập trung trong ứng dụng của mình và hiển thị thông báo cho người dùng rằng phản hồi mất quá nhiều thời gian và đã bị hủy bỏ

Sử dụng phần mềm Theo dõi ngoại lệ (chẳng hạn như Tideways), bạn có thể ghi nhật ký người dùng, giao dịch hoặc trang nào đang khiến các truy vấn này bị hủy bỏ, tần suất chúng xảy ra và liệu hiệu suất truy vấn có thể được cải thiện hay không

Thời gian thực hiện tối đa trong MySQL là gì?

SET TOÀN CẦU MAX_EXECUTION_TIME=1000; . Giá trị mặc định cho biến TOÀN CẦU là 0, có nghĩa là không có giới hạn thời gian toàn cầu .

Thời gian thực hiện tối đa là gì?

Giới hạn thời gian khác nhau tùy thuộc vào công ty lưu trữ nhưng thời gian thực hiện tối đa là từ 30 đến 60 giây .

Làm cách nào để đo thời gian thực hiện truy vấn SQL?

Sử dụng Thống kê Khách hàng .
Vào Menu >> Truy vấn >> Chọn Bao gồm thống kê khách hàng
Thực hiện truy vấn của bạn
Trong bảng kết quả, bạn có thể thấy một tab mới Thống kê khách hàng
Vào tab Thống kê khách hàng để xem thời gian thực hiện

Làm cách nào để kiểm tra thời gian chờ kết nối MySQL?

Stash được vận chuyển với khoảng thời gian kiểm tra kết nối mặc định là 10 phút. MySQL có giá trị mặc định của biến wait_timeout được đặt thành 28800 giây (8 giờ). .
HIỂN THỊ BIẾN
HIỂN THỊ CÁC BIẾN CỦA PHIÊN
HIỂN THỊ CÁC BIẾN TOÀN CẦU