Боже добрий, я думаю, я їх усіх бачив. Найчастіше це намагання виправити проблеми з продуктивністю кимсь, хто надто ледачий, щоб вирішити свій шлях до ПРИЧИНИ цих проблем із роботою або навіть дослідити, чи існує насправді проблема продуктивності. У багатьох з цих випадків мені цікаво, чи це не просто випадок, коли людина хоче спробувати певну технологію і відчайдушно шукає цвях, який підходить під їх новий блискучий молоток.
Ось останній приклад:
Архітектор даних приходить до мене з розробленою пропозицією вертикально розділити ключову таблицю в досить великому і складному застосуванні. Він хоче знати, який тип зусиль у розвитку потребує коригування змін. Розмова пішла так:
Я: Чому ти це вважаєш? Яку проблему ви намагаєтеся вирішити?
Йому: Таблиця X занадто широка, ми розділяємо її з міркувань продуктивності.
Я: Що змушує вас вважати це занадто широким?
Він: Консультант сказав, що це занадто багато стовпців, щоб їх було в одній таблиці.
Я: І це впливає на продуктивність?
Він: Так, користувачі повідомили про періодичні уповільнення у модулі XYZ програми.
Я: Як ви знаєте, ширина таблиці є джерелом проблеми?
Йому: Це ключова таблиця, використовувана модулем XYZ, і вона подібна до 200 стовпців. Має бути проблема.
Я (пояснення): Але модуль XYZ, зокрема, використовує більшість стовпців цієї таблиці, а стовпці, які він використовує, непередбачувані, оскільки користувач налаштовує додаток для відображення даних, які вони хочуть відображати з цієї таблиці. Цілком ймовірно, що 95% часу ми з вами все-таки приєднаємось до всіх столів разом, що завдасть шкоди продуктивності.
Він: Консультант сказав, що він занадто широкий, і нам потрібно це змінити.
Я: Хто цей консультант? Я не знав, що ми найняли консультанта, і взагалі не спілкувались із командою розвитку.
Він: Ну, ми їх ще не найняли. Це частина пропозиції, яку вони запропонували, але вони наполягали на тому, що нам потрібно реструктуризувати цю базу даних.
Я: А- а-а. Тож консультант, який продає послуги з перероблення баз даних, вважає, що нам потрібно перепроектувати базу даних ....
Розмова продовжувалась і далі так. Потім я ще раз поглянув на цю таблицю і визначив, що її, мабуть, можна звузити простою нормалізацією, не потребуючи екзотичних стратегій розподілу. Звичайно, це було суперечливим питанням, коли я досліджував проблеми з продуктивністю (раніше не повідомлявся) і відстежував їх до двох факторів:
- Відсутні індекси в кількох ключових стовпцях.
- Кілька негідних аналітиків даних, які періодично блокували ключові таблиці (включаючи "занадто широку"), запитуючи виробничу базу даних безпосередньо з MSAccess.
Звичайно, архітектор все ще наполягає на вертикальному розділенні таблиці, що висить на "занадто широкій" мета-проблемі. Він навіть підкріпив свою справу, отримавши пропозицію від іншого консультанта по базі даних, який зміг визначити, чи потрібні серйозні зміни в базі даних, не дивлячись на додаток або не проводячи аналіз ефективності.