Розкриття інформації: Я співробітник MySQL, працюю над кластером MySQL.
Я б сказав, що MySQL Cluster міг би досягти більш високої пропускної здатності / хоста, ніж шарований MySQL + InnoDB за умови, що:
- Запити прості
- Усі дані вписуються в пам'ять
Щодо затримки, кластер MySQL повинен мати більш стабільну затримку, ніж шарований MySQL. Фактична затримка для суто в пам'яті даних може бути подібною.
Коли запити стають складнішими, а дані зберігаються на диску, порівняння продуктивності стає більш заплутаним. Щоб отримати більш конкретну відповідь, потрібно детальніше описати свою програму та запити, які ви виконуєте, а також кількість хостів та обсяг даних. MySQL Cluster нещодавно отримав паралельне виконання локалізованих запитів (AQL), що означає, що він може бути конкурентоспроможним окремим MySQLD, незважаючи на те, що дані розподіляються по декількох хостах.
MySQL Cluster наразі обмежений "загостренням" понад 48 хостів. Заточений MySQL теоретично не має меж. Однак для заданої пропускної здатності може знадобитися менше хостів MySQL Cluster, ніж розділених хостів MySQL.
Більш цікаві відмінності, коли ви дивитесь на інші сфери, ніж продуктивність:
- MySQL Cluster підтримує довільні запити в усіх фрагментах
- MySQL Cluster підтримує довільні транзакції через усі фрагменти
- MySQL Cluster підтримує синхронну реплікацію фрагментів з автоматичним відмовою та відновленням
- MySQL Cluster підтримує онлайн-вузол для додавання (розширення кластера)
- Заточений MySQL - це більше "ролик"
Шарбінгова вбудована у вашу програму дає максимальний потенціал масштабування, але додає складності та обмежує вашу гнучкість у плані запитів та операцій між кроссовками. Якщо ваше загострення є передчасним, це може бути коренем деяких проблем для вас. MySQL Cluster дозволяє отримувати деякі переваги різкості, не обмежуючи ваш додаток лише одношаровим.
Щодо попередньої відповіді, кілька уточнень:
"Хоча MySQL Cluster є скаргою ACID, він не забезпечує відповідний механізм зберігання даних зі складними ключами."
MySQL Cluster підтримує складні первинні та вторинні ключі. Не впевнений, що в цьому не "підходить". Можливо, попередній плакат може пояснити?
"Для того, щоб дані, що мають однакові ключові характеристики, зберігалися в певному наборі вузлів даних, ви можете зробити наступне:
- Візьміть усі вузли даних в режимі офлайн, залишаючи лише ті вузли даних, для яких потрібно розмістити дані з однаковими ключовими характеристиками.
- Завантажте свої дані в кластер MySQL, який заповнює лише вибрані вузли даних
- Поверніть всі вузли даних онлайн "
Це неправильно. Розподіл даних не залежить від того, які вузли можуть бути в Інтернеті в будь-який час. MySQL Cluster підтримує різні схеми розподілу даних для підтримки оптимізації, яку ви описуєте. Я описую розподіл даних в MySQL Cluster в публікації блогу тут: Розподіл даних у MySQL Cluster