Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?

Trước khi bạn có thể hồ sơ các truy vấn chậm, bạn cần tìm chúng.

MySQL có nhật ký truy vấn chậm tích hợp. Để sử dụng nó, hãy mở tệp My.cnf và đặt biến slow_query_log thành "BẬT." Đặt long_query_time thành số giây mà một truy vấn nên được coi là chậm, giả sử 0,2. Đặt Slow_Query_Log_File thành đường dẫn mà bạn muốn lưu tệp. Sau đó, chạy mã của bạn và bất kỳ truy vấn nào trên ngưỡng được chỉ định sẽ được thêm vào tệp đó.my.cnf file and set the slow_query_log variable to "On." Set long_query_time to the number of seconds that a query should take to be considered slow, say 0.2. Set slow_query_log_file to the path where you want to save the file. Then run your code and any query above the specified threshold will be added to that file.

Một khi bạn biết đó là những truy vấn vi phạm, bạn có thể bắt đầu khám phá những gì làm cho chúng chậm. Một công cụ mà MySQL cung cấp là từ khóa giải thích. Nó hoạt động với các câu lệnh Chọn, Xóa, Chèn, Thay thế và Cập nhật. Bạn chỉ cần tiền tố truy vấn như thế này:EXPLAIN keyword. It works with SELECT, DELETE, INSERT, REPLACE, and UPDATE statements. You simply prefix the query like this:

EXPLAIN SELECT picture.id, picture.title
FROM picture
LEFT JOIN album ON picture.album_id = album.id

WHERE album.user_id = 1;

Kết quả bạn nhận được là một lời giải thích về cách truy cập dữ liệu. Bạn thấy một hàng cho mỗi bảng có liên quan đến truy vấn:

Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?

Các phần quan trọng ở đây là tên bảng, khóa được sử dụng và số lượng hàng được quét trong quá trình thực hiện truy vấn.

Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?

Nó quét 2.000.000 hình ảnh, sau đó, cho mỗi bức ảnh, nó quét 20.000 album. Điều này có nghĩa là nó thực sự quét 40 tỷ hàng cho bảng album. Tuy nhiên, bạn có thể làm cho quá trình này hiệu quả hơn nhiều.

Chỉ mục

Bạn có thể tăng đáng kể hiệu suất bằng cách sử dụng các chỉ mục. Hãy nghĩ về dữ liệu như là tên trong một cuốn sách địa chỉ. Bạn có thể lật qua tất cả các trang hoặc bạn có thể kéo đúng tab chữ cái để nhanh chóng xác định vị trí tên bạn cần.

Sử dụng các chỉ mục để tránh các đường chuyền không cần thiết qua các bảng. Ví dụ: bạn có thể thêm một chỉ mục trên Picture.album_id như thế này:picture.album_id like this:

ALTER TABLE picture ADD INDEX(album_id);

Bây giờ nếu bạn chạy truy vấn, quá trình không còn liên quan đến việc quét toàn bộ danh sách hình ảnh. Đầu tiên, tất cả các album được quét để tìm những album thuộc về người dùng. Sau đó, các hình ảnh nhanh chóng được định vị bằng cách sử dụng cột album_id được lập chỉ mục. Điều này làm giảm số lượng hàng được quét xuống còn 200.000. Truy vấn cũng nhanh hơn khoảng 317 lần so với bản gốc.album_id column. This reduces the number of rows scanned to 200,000. The query is also about 317 times faster than the original.

Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?

Bạn có thể đảm bảo rằng cả hai bảng đều sử dụng khóa bằng cách thêm chỉ mục sau:

ALTER TABLE album ADD INDEX(user_id);

Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?

Lần này, bảng album không được quét toàn bộ, nhưng các album phù hợp nhanh chóng được xác định bằng cách sử dụng phím user_id. Khi 100 album này được quét, các hình ảnh liên quan sẽ được xác định chính xác bằng cách sử dụng phím album_id. Mỗi bảng sử dụng một phím cho hiệu suất tối ưu, làm cho truy vấn nhanh hơn gấp 380 lần so với bản gốc.user_id key. When these 100 albums are scanned, associated pictures are pinpointed using the album_id key. Each table uses a key for an optimal performance, making the query 380 times faster than the original.

Điều này không có nghĩa là bạn nên thêm các chỉ mục ở mọi nơi vì mỗi chỉ mục làm cho nó dài hơn để ghi vào cơ sở dữ liệu. Bạn đạt được khi đọc nhưng thua khi viết. Vì vậy, chỉ thêm các chỉ mục thực sự tăng hiệu suất đọc. Sử dụng Giải thích để xác nhận và xóa bất kỳ chỉ mục nào không được sử dụng trong các truy vấn.EXPLAIN to confirm and remove any index that is not used in queries.

Có & nbsp; nhiều cách khác để tăng hiệu suất, bạn có thể tìm hiểu thêm về cơ sở dữ liệu của OSCON TALK TOPEP của tôi 300 lần.

Anna sẽ đưa ra cơ sở dữ liệu của Talk Speed, bạn 300 lần & NBSP; tại OSCON 2017 tại Austin, Texas. & NBSP; Nếu bạn quan tâm đến việc tham dự hội nghị sử dụng mã giảm giá này & NBSP; khi bạn đăng ký, cho độc giả của chúng tôi: & NBSP; PCOS.PCOS.

Hướng dẫn how do i fix slow queries in mysql? - làm cách nào để khắc phục các truy vấn chậm trong mysql?
Công việc này được cấp phép theo giấy phép quốc tế Creative Commons Attribution-chia sẻ 4.0.

Tại sao truy vấn MySQL của tôi lại chậm như vậy?

Các truy vấn có thể trở nên chậm vì nhiều lý do khác nhau, từ việc sử dụng chỉ số không đúng đến các lỗi trong chính công cụ lưu trữ.Tuy nhiên, trong hầu hết các trường hợp, các truy vấn trở nên chậm vì các nhà phát triển hoặc quản trị viên cơ sở dữ liệu MySQL bỏ qua việc theo dõi họ và để mắt đến hiệu suất của họ.improper index usage to bugs in the storage engine itself. However, in most cases, queries become slow because developers or MySQL database administrators neglect to monitor them and keep an eye on their performance.

Làm thế nào tôi có thể làm cho truy vấn SQL nhanh hơn?

Tối ưu hóa truy vấn SQL: Cách điều chỉnh hiệu suất của các truy vấn SQL..
Mẹo 4: Chỉ sử dụng ký tự đại diện ở cuối cụm từ ..
Mẹo 5: Tránh quá nhiều lần tham gia ..
Mẹo 6: Tránh sử dụng Chọn khác biệt ..
Mẹo 7: Sử dụng các trường Chọn thay vì chọn *.
Mẹo 8: Sử dụng kết quả truy vấn hàng đầu để lấy mẫu ..
Mẹo 9: Chạy truy vấn trong giờ điểm cao ..

Làm thế nào sửa lỗi truy vấn SQL chạy chậm?

Xác định nút thắt hoặc chờ nếu bạn có thể thu thập kế hoạch truy vấn, hãy kiểm tra các nhân viên phục vụ từ các thuộc tính của kế hoạch thực thi trong SSMS: Chạy truy vấn với kế hoạch thực thi thực tế trên.Nhấp chuột phải vào toán tử nhất bên trái trong tab Kế hoạch thực thi. If you can collect a query plan, check the WaitStats from the execution plan properties in SSMS: Run the query with Include Actual Execution Plan on. Right-click the left-most operator in the Execution plan tab.