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:
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.
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.
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];
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.