Bạn sẽ thực hiện 3 loại điều chỉnh, 1 phản ứng và 2 chủ động.
Phản ứng
Không có màu xanh, một số truy vấn bắt đầu gây ra vấn đề cho bạn. Đó có thể là do lỗi ứng dụng hoặc tính năng, bảng phát triển vượt quá mong đợi, tăng lưu lượng truy cập hoặc trình tối ưu hóa truy vấn trở nên "sáng tạo". Đây có thể là một kiểu ngoại tình ảm đạm vào giữa đêm, hoặc nó có thể là để đáp ứng với sự chậm chạp của hệ thống có tính chất không quan trọng. Dù bằng cách nào, đặc điểm xác định của điều chỉnh phản ứng là bạn đã có vấn đề . Không cần phải nói, bạn muốn làm càng ít điều này càng tốt. Điều này đưa chúng ta đến ...
Chủ động
Loại 1: Bảo trì định kỳ
Theo một số loại lịch biểu, cứ sau vài tháng hoặc vài tuần tùy thuộc vào tần suất thay đổi lược đồ của bạn và tốc độ tăng dữ liệu của bạn, bạn nên xem lại đầu ra của các công cụ phân tích hiệu suất của cơ sở dữ liệu của mình (ví dụ: báo cáo AWR cho Oracle DBA). Bạn đang tìm kiếm các vấn đề khó khăn, đó là những điều đang trên đường yêu cầu điều chỉnh Phản ứng, cũng như trái cây treo thấp, các mặt hàng không có khả năng gây ra sự cố sớm nhưng có thể được cải thiện với ít nỗ lực với hy vọng ngăn chặn xa vấn đề -future. Bạn nên dành bao nhiêu thời gian cho việc này sẽ phụ thuộc vào thời gian bạn có, và những gì khác bạn có thể dành cho nó, nhưng số tiền tối ưu không bao giờ bằng không. Tuy nhiên, bạn có thể dễ dàng giảm số tiền bạn cần chi tiêu bằng cách thực hiện thêm ...
Loại 2: Thiết kế phù hợp
Lời khuyên của Knuth chống lại "tối ưu hóa sớm" được biết đến rộng rãi và được tôn trọng đúng mức. Nhưng định nghĩa đúng của "sớm" phải được sử dụng. Một số nhà phát triển ứng dụng, khi được phép viết các truy vấn của riêng họ, có xu hướng chấp nhận truy vấn đầu tiên mà họ đánh vào đó là chính xác về mặt logic và không quan tâm đến hiệu suất, hiện tại hay tương lai. Hoặc họ có thể kiểm tra đối với tập dữ liệu phát triển đơn giản là không đại diện cho môi trường sản xuất (mẹo: Đừng làm điều này! Các nhà phát triển phải luôn có quyền truy cập vào dữ liệu thực tế để thử nghiệm.). Vấn đề là thời điểm thích hợp để điều chỉnh truy vấn là khi nó được triển khai lần đầu tiên, chứ không phải khi nó hiển thị trên danh sách SQL hoạt động kém và chắc chắn không phải khi nó gây ra sự cố nghiêm trọng.
Vì vậy, những gì sẽ đủ điều kiện là một tối ưu hóa sớm trong đất DBA? Ở đầu danh sách của tôi sẽ là hy sinh bình thường hóa mà không cần một nhu cầu chứng minh. Chắc chắn bạn có thể duy trì một khoản tiền trên một hàng cha mẹ thay vì tính toán nó trong thời gian chạy từ các hàng con, nhưng bạn có thực sự cần phải không? Nếu bạn là Twitter hoặc Amazon, tính toán bình thường hóa và tính toán trước có thể là người bạn tốt nhất của bạn. Nếu bạn đang thiết kế một cơ sở dữ liệu kế toán nhỏ cho 5 người dùng, cấu trúc phù hợp để tạo điều kiện cho tính toàn vẹn dữ liệu cần được ưu tiên hàng đầu. Tối ưu hóa sớm khác cũng là một vấn đề ưu tiên. Đừng mất hàng giờ để điều chỉnh một truy vấn được chạy một lần một ngày và mất 10 giây, ngay cả khi bạn nghĩ rằng bạn có thể cắt nó thành 0,1 giây. Có thể bạn có một báo cáo chạy trong 6 giờ hàng ngày, nhưng hãy khám phá việc lên lịch cho nó như một công việc hàng loạt trước khi đầu tư thời gian vào việc điều chỉnh nó. Không đầu tư vào một trường hợp báo cáo nhân rộng theo thời gian thực riêng biệt nếu tải sản xuất của bạn không bao giờ vượt quá 10% (giả sử bạn có thể quản lý bảo mật).
Bằng cách kiểm tra dữ liệu thực tế, thực hiện các dự đoán có giáo dục về tăng trưởng và mô hình lưu lượng truy cập (cộng với các khoản phụ cấp cho các đột biến) và áp dụng kiến thức về các yêu cầu tối ưu hóa nền tảng của bạn, bạn có thể triển khai các truy vấn chạy (gần) tối ưu không chỉ trong hiện tại, mà trong tương lai và trong các điều kiện ít hơn lý tưởng. Khi bạn áp dụng các kỹ thuật phù hợp, hiệu suất truy vấn có thể được dự đoán chính xác và được tối ưu hóa (theo nghĩa của từng thành phần là nhanh nhất có thể).
(Và trong khi bạn đang ở đó, hãy tìm hiểu số liệu thống kê! )