Chúa ơi, tôi nghĩ rằng tôi đã thấy tất cả. Thường xuyên hơn không phải là một nỗ lực để khắc phục các vấn đề về hiệu suất bởi một người quá lười biếng để khắc phục sự cố dẫn đến NGUYÊN NHÂN của những vấn đề về hiệu suất đó hoặc thậm chí nghiên cứu xem có thực sự có vấn đề về hiệu suất hay không. Trong nhiều trường hợp này, tôi tự hỏi liệu đó không chỉ là trường hợp người đó muốn thử một công nghệ cụ thể và tuyệt vọng tìm kiếm một chiếc đinh phù hợp với cây búa mới sáng bóng của họ.
Đây là một ví dụ gần đây:
Kiến trúc sư dữ liệu đến với tôi với một đề xuất phức tạp để phân vùng theo chiều dọc một bảng chính trong một ứng dụng khá lớn và phức tạp. Anh ta muốn biết loại nỗ lực phát triển nào sẽ là cần thiết để điều chỉnh cho sự thay đổi. Cuộc trò chuyện diễn ra như sau:
Tôi: Tại sao bạn xem xét điều này? Vấn đề bạn đang cố gắng giải quyết là gì?
Ngài: Bảng X quá rộng, chúng tôi đang phân vùng nó vì lý do hiệu năng.
Tôi: Điều gì khiến bạn nghĩ nó quá rộng?
Ngài: Nhà tư vấn nói rằng có quá nhiều cột trong một bảng.
Tôi: Và điều này có ảnh hưởng đến hiệu suất?
Ngài: Có, người dùng đã báo cáo sự chậm lại không liên tục trong mô-đun XYZ của ứng dụng.
Tôi: Làm thế nào để bạn biết chiều rộng của bảng là nguồn gốc của vấn đề?
Ngài: Đó là bảng chính được sử dụng bởi mô-đun XYZ và nó giống như 200 cột. Nó phải là vấn đề.
Tôi (Giải thích): Nhưng cụ thể mô-đun XYZ sử dụng hầu hết các cột trong bảng đó và các cột mà nó sử dụng là không thể đoán trước được vì người dùng định cấu hình ứng dụng để hiển thị dữ liệu họ muốn hiển thị từ bảng đó. Có khả năng 95% thời gian chúng tôi sẽ kết hợp tất cả các bảng lại với nhau dù điều đó sẽ làm giảm hiệu suất.
Ngài: Nhà tư vấn nói nó quá rộng và chúng ta cần thay đổi nó.
Tôi: ai là người tư vấn này? Tôi không biết chúng tôi đã thuê một nhà tư vấn, họ cũng không nói chuyện với nhóm phát triển.
Ngài: Chà, chúng tôi chưa thuê họ. Đây là một phần của một đề xuất mà họ đưa ra, nhưng họ khẳng định chúng tôi cần phải kiến trúc lại cơ sở dữ liệu này.
Tôi: Uh huh. Vì vậy, nhà tư vấn bán dịch vụ thiết kế lại cơ sở dữ liệu nghĩ rằng chúng tôi cần thiết kế lại cơ sở dữ liệu ....
Cuộc trò chuyện đã diễn ra như thế này. Sau đó, tôi đã xem xét lại bảng này và xác định rằng nó có thể được thu hẹp với một số chuẩn hóa đơn giản mà không cần các chiến lược phân vùng kỳ lạ. Điều này, tất nhiên hóa ra là một điểm cần thiết khi tôi điều tra các vấn đề về hiệu suất (trước đây không được báo cáo) và theo dõi chúng theo hai yếu tố:
- Thiếu chỉ mục trên một vài cột quan trọng.
- Một vài nhà phân tích dữ liệu giả mạo đã định kỳ khóa các bảng chính (bao gồm cả bảng "quá rộng") bằng cách truy vấn trực tiếp cơ sở dữ liệu sản xuất với MSAccess.
Tất nhiên, kiến trúc sư vẫn đang thúc đẩy phân vùng dọc của bảng treo vào vấn đề meta "quá rộng". Anh ta thậm chí còn củng cố trường hợp của mình bằng cách nhận được đề xuất từ một nhà tư vấn cơ sở dữ liệu khác, người có thể xác định chúng tôi cần thay đổi thiết kế lớn cho cơ sở dữ liệu mà không cần nhìn vào ứng dụng hoặc chạy bất kỳ phân tích hiệu suất nào.