Коротка відповідь
Так , ви можете написати змістовний орієнтир досліджуваної справи, якщо ви робите це обережно, і розумієте, що якщо це актуально для конкретного випадку, це може бути не для інших випадків. Це однаково справедливо при порівнянні баз даних одного типу (реляційна база даних проти іншої реляційної бази даних) або баз даних різних типів.
Ні , ви не можете написати орієнтир, який магічним чином доведе, що конкретна база даних є способами кращими за інші в кожному випадку для кожного додатка.
Довга відповідь
Однозначно можна сказати, що "перехід із бази даних до іншої покращив продуктивність нашого сайту".
Ви вимірюєте ефективність попередньої бази даних за допомогою профілювання або статистики виконання, збираючи достатньо інформації про запити та те, наскільки вони швидкі.
Ви переміщуєте додаток до нової бази даних.
Ви робите ті ж заходи.
Ви порівнюєте
Наприклад, якщо повний перелік 3 182 432 товарів завантажено за 2.834 с. на старій базі даних і завантажується за 0,920 с. у новій базі даних, враховуючи, що в обох випадках програма має порожній кеш, це виграш: нова база даних покращила ефективність вашого сайту щодо цього запиту.
Тепер, як і будь-який показник ефективності, він упереджений:
Погоджено, новий запит швидше. Але зачекайте, ваша DBA не знала, як використовувати базу даних, яку ви мали раніше , тому запит, що завантажує всі продукти, не оптимізований . Якщо ви перепишете його так, ви зможете завантажити ці продукти за 0,855 с. замість 2.834.
Гаразд, у вас кращий результат. Але ви не вважаєте, що несправедливо порівнювати базу даних зі свіжими даними, щойно розгорнулися, з 10-річною базою даних, для якої останній план технічного обслуговування був виконаний три роки тому? До речі, ви не вважаєте, що вам слід було оновити продукт бази даних хоча б раз протягом останніх чотирьох років?
Деякі запити швидше. Деякі - повільніше. Як ви обчислюєте середній результат, щоб знати, що ви загалом отримали продуктивність при переході до нової бази даних? Гаразд, час завантаження всіх 3 182 432 продуктів швидше. Але чи має значення, хоча запит виконується на веб-сайті лише у рідкісних випадках, коли адміністратор виконує якесь конкретне завдання, яке він виконував лише два рази за останні десять років? З іншого боку, виконання всіх запитів на домашній сторінці для нового користувача витрачає 0,281 с. з новою базою даних, коли вона становила 0,207 с. зі старою базою даних. Цей результат має значення набагато більше, тим більше, що ці запити не можна кешувати тривалий час, і виконуються десятки тисяч разів на день.
Обидві бази даних повинні бути протестовані на одних і тих же серверах , однаковому апаратному забезпеченні, однаковій структурі. Наприклад, ви не можете перевірити одну базу даних на одному жорсткому диску, а іншу - на RAID1 двох SSD. Коли ви переносите великий проект на нову базу даних, є ймовірність, що ви просто розмістите нову базу даних на сотнях інших розгорнутих стелажних серверів, коли попередня база даних все ще залишиться на попередніх машинах.
Підводячи підсумок, ви можете порівняти запити до бази даних програми та отримати точні показники . Але потім, ви повинні дати значення цифрам. У такому стані заманливо сказати, що ви здобули ефективність сайту: інакше керівництво буде розлючено дізнатися, що ви витратили тисячі доларів і місяців роботи лише для того, щоб все було повільніше.
Найстрашніша помилка - це взяти ці висновки з орієнтирів і зробити деяку дурість на кшталт "Microsoft SQL Server втричі швидше, ніж Oracle": сказати це так, як сказати, що "Java краща за PHP". Визначте краще. Краще в яких випадках? Для якого типу додатків? Для якої команди розробників?
Чим більше ви інтерпретуєте та узагальнюєте, тим більше річ стає нерелевантною та безглуздою.
Запит, який select [...]
ви можете знайти у версії файлу № 832 у ProductFactory.cs
рядку 117, виконується за 0,5 с. з новою базою даних при тестуванні в умовах, визначених у додатку M, нефункціональних вимог, випадок 3. Це дозволяє передати нефункціональну вимогу 527 (див. стор. 80, редакція 9). Цією ж вимогою не було задоволено попередню базу даних, коли результати тестування були в діапазоні 0,9..1,3 с. в тих же умовах.
є важливим для розробника та достатньо точним, щоб знати, що було протестовано, як і які були результати. Це відповідає на ваше запитання №2.
На жаль, це не має сенсу для управління. Замість цього:
Перенесення нашого продукту з MySQL на найновішу версію Microsoft SQL Server покращило загальну продуктивність нашого продукту на п’ять, зменшивши при цьому витрати на два та екологічний слід на три. Ми віримо, що перенесення всіх наших програм на Microsoft SQL Server в наступному році дасть ще кращі результати та підвищить конкурентоспроможність нашого ринку.
є чистим маркетинговим джиббером, і, технічно, нічого не означає, але дивно має значення для управлінського та маркетингового відділів.
Нарешті, чи можемо ми порівняти різні типи баз даних? Я б сказав, що це цілком можливо. Скажімо, у мене є веб-сайт, на якому розміщені великі фотографії. Ці фотографії зберігаються в varbinary(max)
Microsoft SQL Server 2005 (тому я не можу використовувати filestream
). Мене турбує ефективність при завантаженні цих фотографій, тому я вирішую зберігати фотографії як файли, використовуючи файлову систему як свою нову базу даних. По-перше, ці файли зберігаються на тій же машині, що і база даних. Я профілюю нове рішення та отримую результат, який показує, що в моєму випадку файли завантажуються на 4% швидше з файлової системи, ніж з Microsoft SQL Server. Орієнтир дуже зрозумілий. Тепер я можу подумати про розгортання виділеного сервера, оптимізованого для прямого зберігання файлів, а не про використання сервера, оптимізованого для Microsoft SQL Server.