SQL - Kiểm tra cơ sở dữ liệu
Cần có thời gian để trở thành Chuyên gia cơ sở dữ liệu hoặc Quản trị viên cơ sở dữ liệu chuyên nghiệp. Tất cả đều có nhiều kinh nghiệm trong các thiết kế cơ sở dữ liệu khác nhau và các khóa đào tạo tốt.
Nhưng danh sách sau đây có thể hữu ích cho những người mới bắt đầu để có hiệu suất cơ sở dữ liệu tốt -
Sử dụng thiết kế cơ sở dữ liệu 3BNF được giải thích trong hướng dẫn này trong chương Các khái niệm RDBMS.
Tránh chuyển đổi số thành ký tự vì số và ký tự so sánh khác nhau và dẫn đến hạ cấp hiệu suất.
Trong khi sử dụng câu lệnh SELECT, chỉ tìm nạp bất kỳ thông tin nào được yêu cầu và tránh sử dụng * trong các truy vấn SELECT của bạn vì nó sẽ tải hệ thống một cách không cần thiết.
Tạo chỉ mục của bạn một cách cẩn thận trên tất cả các bảng mà bạn có các thao tác tìm kiếm thường xuyên. Tránh lập chỉ mục trên các bảng mà bạn có số lượng thao tác tìm kiếm ít hơn và số lượng thao tác chèn và cập nhật nhiều hơn.
Quá trình quét toàn bảng xảy ra khi các cột trong mệnh đề WHERE không có chỉ mục được liên kết với chúng. Bạn có thể tránh quét toàn bảng bằng cách tạo chỉ mục trên các cột được dùng làm điều kiện trong mệnh đề WHERE của câu lệnh SQL.
Hãy rất cẩn thận với các toán tử bình đẳng với số thực và giá trị ngày / giờ. Cả hai điều này đều có thể có những khác biệt nhỏ mà mắt thường không rõ ràng nhưng điều này làm cho không thể đối sánh chính xác, do đó ngăn các truy vấn của bạn không bao giờ trả lại hàng.
Sử dụng đối sánh mẫu một cách thận trọng. LIKE COL% là điều kiện WHERE hợp lệ, giảm tập hợp được trả về chỉ những bản ghi có dữ liệu bắt đầu bằng chuỗi COL. Tuy nhiên, COL% Y không làm giảm thêm kết quả trả về đã đặt vì% Y không thể được đánh giá một cách hiệu quả. Nỗ lực để thực hiện đánh giá là quá lớn để được xem xét. Trong trường hợp này, COL% được sử dụng, nhưng% Y bị loại bỏ. Vì lý do tương tự, ký tự đại diện hàng đầu% COL ngăn không cho toàn bộ bộ lọc được sử dụng.
Tinh chỉnh các truy vấn SQL của bạn kiểm tra cấu trúc của các truy vấn (và truy vấn con), cú pháp SQL, để khám phá xem bạn đã thiết kế bảng của mình để hỗ trợ thao tác dữ liệu nhanh hay chưa và viết truy vấn theo cách tối ưu, cho phép DBMS của bạn thao tác dữ liệu một cách hiệu quả .
Đối với các truy vấn được thực hiện thường xuyên, hãy thử sử dụng các thủ tục. Một thủ tục là một nhóm lớn các câu lệnh SQL. Các thủ tục được biên dịch bởi cơ sở dữ liệu và sau đó được thực thi. Không giống như câu lệnh SQL, công cụ cơ sở dữ liệu không cần tối ưu hóa thủ tục trước khi nó được thực thi.
Tránh sử dụng toán tử logic HOẶC trong một truy vấn nếu có thể. HOẶC chắc chắn làm chậm gần như bất kỳ truy vấn nào đối với một bảng có kích thước đáng kể.
Bạn có thể tối ưu hóa tải dữ liệu hàng loạt bằng cách giảm các chỉ mục. Hãy tưởng tượng bảng lịch sử có hàng ngàn hàng. Bảng lịch sử đó cũng có thể có một hoặc nhiều chỉ mục. Khi bạn nghĩ về một chỉ mục, bạn thường nghĩ đến việc truy cập bảng nhanh hơn, nhưng trong trường hợp tải hàng loạt, bạn có thể hưởng lợi bằng cách giảm (các) chỉ mục.
Khi thực hiện các giao dịch hàng loạt, hãy thực hiện COMMIT sau một số lượng hợp lý tạo bản ghi thay vì tạo chúng sau mỗi lần tạo bản ghi.
Lên kế hoạch chống phân mảnh cơ sở dữ liệu một cách thường xuyên, ngay cả khi làm như vậy có nghĩa là phát triển một thói quen hàng tuần.
Công cụ điều chỉnh tích hợp
Oracle có nhiều công cụ để quản lý hiệu suất câu lệnh SQL nhưng trong số đó có hai công cụ rất phổ biến. Hai công cụ này là -
Explain plan - công cụ xác định đường dẫn truy cập sẽ được sử dụng khi câu lệnh SQL được thực thi.
tkprof - đo lường hiệu suất theo thời gian trôi qua trong mỗi giai đoạn xử lý câu lệnh SQL.
Nếu bạn chỉ muốn đo thời gian đã trôi qua của một truy vấn trong Oracle, bạn có thể sử dụng lệnh SQL * Plus SET TIMING ON.
Kiểm tra tài liệu RDBMS của bạn để biết thêm chi tiết về các công cụ được đề cập ở trên và chống phân mảnh cơ sở dữ liệu.