2.1. Một số vấn đề liên quan tới hiệu năng cơ sở dữ liệu
Vấn đề nghẽn cổ chai vi xử lý (CPU bottlenecks) khi khai thác dữ liệu: Với biểu hiện xung nhịp hoạt động của CPU bất thường, liên tục chịu áp lực xử lý dữ liệu khiến hiệu năng lớn hơn 80% gây treo mọi tiến trình khác. Nguyên nhân của vấn đề này có thể xuất phát từ việc bất đồng bộ cấu hình tài nguyên phần cứng (thiết bị quá nhanh, thiết bị lại quá chậm,…) hoặc phổ biến hơn là do người quản trị cơ sở dữ liệu điều phối các đoạn mã lập trình chưa tốt dẫn đến sự quá tải ở một số tiến trình.
Vấn đề nghẽn cổ chai bộ nhớ trong (Memory bottlenecks) khi truy vấn: Điển hình của hiện tượng này là trả về kết quả truy vấn rất chậm, các chương trình có thể bị treo hoặc ngắt giữa chừng, bộ nhớ vật lý còn trống gần như bằng không và toàn bộ hệ điều hành chậm chạp. Một trong những lý do chính của Memory bottlenecks là bộ nhớ trong nhỏ và các thao tác truy vấn không sử dụng tìm kiếm chỉ mục mà thay vào đó là các hoạt động duyệt tuần tự toàn bộ các bảng dữ liệu (table scan) khiến chi phí về bộ nhớ, về thời gian bị bùng nổ.
Vấn đề nghẽn cổ chai mạng (Network bottlenecks): hiện tượng này khó nhận biết và thực sự dễ nhầm lẫn bởi các yếu tố như năng lực máy chủ, băng thông thấp, thiết bị mạng yếu kém. Tuy nhiên nếu loại trừ được các yếu tố trên, chúng ta hoàn toàn có thể nghĩ tới việc quá tải này liên quan tới các luồng dữ liệu trao đổi giữa server và người dùng qua các lệnh truy vấn không được như mong muốn. Cụ thể là việc không kiểm soát thời gian ngắt (time out connection) các kết nối của các phiên làm việc lỗi thời, hay việc cho phép các hệ thống tự động gửi nhận liên tục trực tiếp các request về cơ sở dữ liệu mà lẽ ra cần phải được điều hướng xử lý các thông tin đó trên một hệ thống
ThS. Hoàng Ngọc Cảnh–TT. Công nghệ thông tin 26
Vấn đề nghẽn cổ chai đối với các thiết bị vào ra (I/O bottlenecks): biểu hiện của vấn đề này là sự phản hồi chậm đến người dùng của các thiết bị xuất (Output) trong khi hệ thống đã thực thi xong, hoặc sự trống rỗng của hàng đợi dữ liệu khi phải đợi các thiết bị nhập (Input) xử lý sau khi người dùng nhập liệu. Nguyên nhân chính là các thiết bị nhập xuất bị lỗi hoặc có giao tiếp ở thế hệ quá cũ, bộ nhớ cache nhỏ, các mạch xử lý dữ liệu tốc độ thấp dẫn đến không tương xứng với năng lực hoạt động của vi xử lý hay bộ nhớ trong, dẫn đến giảm hiệu năng của toàn bộ cơ sở dữ liệu.
Vấn đề cuối cùng là nội tại các câu truy vấn quá chậm: dù hệ thống phần cứng, hạ tầng mạng có tốt đến đâu đi nữa nhưng lệnh truy vấn yếu kém thì vẫn là nguyên nhân chính làm giảm nghiêm trọng hiệu năng hoạt động của cơ sở dữ liệu. Nguyên nhân của truy vấn không tốt rất đa dạng có thể kế đến như: lỗi chỉ mục (index), kế hoạch thực thi câu lệnh kém, dư thừa dữ liệu trong truy vấn, lược đồ thiết kế không chuẩn hóa,….
2.2. Công cụ giámsát và cảnh báo sớm các vấn đề ảnh hưởng tới hiệu năng CSDL
- Công cụ DMVs (Dynamic Management Views): Đây là một trong những tính
năng hữu ích của SQL Server được tích hợp sẵn, nó cung cấp nhiều thông tin về các vấn đề khác nhau như: về thống kê truy vấn, kế hoạch thực thi (execution plan), truy vấn có nhiều lần đọc, viết nhất, thời gian hoạt động (CPU), v.v… Ví dụ sử dụng lệnh sau trên DMVs để kiểm tra mức độ sử dụng của CPU (check CPU bottlenecks):
Hình 11: CPU performance bottlenecks command checks
ThS. Hoàng Ngọc Cảnh–TT. Công nghệ thông tin 27
- Công cụ quản trị hiệu suất ứng dụng (Retrace APM):có thể cho người dùng
biết có bao nhiêu truy vấn đã được thực hiện, thời gian thực hiện truy vấn trung bình và những giao dịch đang gọi truy vấn, ngoài ra nó còn thu thập cả các số liệu thống kê hiệu suất về từng truy vấn và cho phép tìm kiếm các truy vấn có vấn đề tiềm ẩn. Đây thực sự là những thông tin có giá trị để điều chỉnh hiệu suất SQL. Dưới đây là ảnh
chụp màn hình từ bảng điều khiển ứng dụng của Retrace, cho thấy một ứng dụng cụ
thể có thời gian truy vấn SQL nhiều nhất.
Hình 13: Sử dụng Retrace APM hiển thị mức độ truy vấn của các chương trình
- Công cụ SQL Server Profiler: là một công cụ ghi chép hiệu quả, đi kèm với
SQL Server. Profiler cho phép bạn quản lý và nắm bắt được những hoạt động đang
diễn ra trong cơ sở dữ liệu của bạn, bao gồm adhoc truy vấn, lưu trữ các yêu cầu, đăng nhập, lỗi,...
ThS. Hoàng Ngọc Cảnh–TT. Công nghệ thông tin 28