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 Show triệu chứngThời gian thực hiện truy vấn trong MySQL cao Nguyên nhânCô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. Giải quyết vấn đề
Vị trí tài liệuToà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) 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 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
Hoặc bạn có thể đặt thời gian chờ toàn phiên hoặc toàn cầu
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ố 8Bạ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 |