2008-09-24 17 views
8

Tôi sử dụng MySQL trong một trang web khá phức tạp (theo định hướng PHP). Lý tưởng nhất, sẽ có một công cụ tôi có thể sử dụng sẽ giúp tôi kiểm tra các truy vấn SQL tôi đang sử dụng và đề xuất các chỉ mục bảng tốt hơn sẽ cải thiện hiệu suất và tránh quét bảng.Có một công cụ tốt cho MySQL sẽ giúp tôi tối ưu hóa các truy vấn và cài đặt chỉ mục của mình không?

Nếu không, điều gì đó sẽ cho tôi biết chính xác mỗi truy vấn là gì, vì vậy tôi có thể tự thực hiện tối ưu hóa.

Chỉnh sửa: hướng dẫn đơn giản để hiểu đầu ra từ GIẢI THÍCH ... cũng sẽ hữu ích.

Cảm ơn bạn.

Trả lời

18

OK, trước khi trả lời, đăng ký MySQL Performance Blog, tôi đã học được rất nhiều (và tôi nghĩ mình đã biết rất nhiều về MySQL). Ngoài ra, anh ta có một trang công cụ bitchin 'here.

Second tắt, đây là một số thông tin về GIẢI THÍCH (tham chiếu từ High Performance MySQL cuốn sách từ O'Reilly):

Khi bạn chạy một GIẢI THÍCH trên một truy vấn, nó sẽ cho bạn biết tất cả mọi thứ MySQL biết về điều đó truy vấn trong hình thức báo cáo cho mỗi bảng có liên quan đến truy vấn.

Mỗi báo cáo sẽ cho bạn biết ...

  • ID của bảng (trong truy vấn)
  • vai trò của bảng trong một lựa chọn lớn hơn (nếu có, chỉ có thể nói đơn giản nếu nó chỉ có một bảng)
  • tên của bảng (duh)
  • join loại (nếu thích hợp, mặc định là const)
  • một danh sách các chỉ số trên bàn (hoặc NULL nếu không có), possible_keys
  • tên của chỉ số MySQL quyết định sử dụng, chính
  • kích thước của giá trị quan trọng (theo byte)
  • ref cho thấy cols hoặc giá trị sử dụng để phù hợp với đối với khóa
  • hàng là số hàng mà MySQL cho rằng cần kiểm tra để đáp ứng truy vấn. Điều này cần được giữ càng gần mức tối thiểu được tính càng tốt!
  • ... sau đó bất kỳ thông tin thêm MySQL mong muốn truyền đạt

Cuốn sách này là hoàn toàn tuyệt vời cung cấp thông tin như thế này, vì vậy nếu bạn chưa sẵn sàng, được sếp ký tắt vào mua hàng.

Nếu không, tôi hy vọng một số hiểu biết nhiều hơn SO sử dụng có thể giúp :)

3

Có thể có các trình phân tích truy vấn ở đó, nhưng đối với một lần cắt đầu tiên, sử dụng dòng lệnh mysql và nhập "giải thích chọn * từ foo nơi bar = 'abc'". Đảm bảo các truy vấn phổ biến nhất của bạn đang sử dụng các chỉ mục, cố gắng tránh quét tuần tự hoặc các loại bảng lớn.

+0

Tôi đã cố gắng giải thích trong quá khứ, nhưng không bao giờ thực sự hiểu đầu ra. Tôi đã cập nhật câu hỏi để phản ánh điều đó. –

1

Bạn nên xem xét Maatkit, một bộ công cụ nguồn mở để thực hiện tất cả các loại tác vụ MySQL. Nếu không có thêm thông tin về chính xác những gì bạn đang cố gắng để điều chỉnh, thật khó để cho bạn biết những công cụ bạn đang sử dụng và làm thế nào, nhưng tài liệu là tuyệt vời và nó bao gồm rất nhiều ứng dụng.

4

Là một điều đơn giản nhất, hãy bật Nhật ký truy vấn chậm và xem truy vấn nào chậm, sau đó thử phân tích chúng như được đề xuất.

0

Các công cụ tôi sử dụng cho phần còn lại của tinh chỉnh sql của tôi (SQLyog) có một phiên bản mới bao gồm một hồ sơ, đó là tuyệt vời! (Tôi không làm việc cho họ - tôi chỉ sử dụng sản phẩm của họ)

enter image description here

http://www.webyog.com/en/screenshots_sqlyog.php

Các vấn đề liên quan