MySQL Sharding vs MySQL Cluster


13

Враховуючи лише ефективність , чи може MySQL кластер обіграти користувацькі дані, що посилюють рішення MySQL? заточування = горизонтальне перегородка

Коли я маю на увазі шардинг, я розглядаю шардинг, зроблений на рівні додатків, наприклад, рівномірний розподіл записів у незалежних екземплярах MySQL. Для двох серверів це може бути (ключ мод 2).

Відповіді:


21

Розкриття інформації: Я співробітник 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 підтримує складні первинні та вторинні ключі. Не впевнений, що в цьому не "підходить". Можливо, попередній плакат може пояснити?

"Для того, щоб дані, що мають однакові ключові характеристики, зберігалися в певному наборі вузлів даних, ви можете зробити наступне:

  1. Візьміть усі вузли даних в режимі офлайн, залишаючи лише ті вузли даних, для яких потрібно розмістити дані з однаковими ключовими характеристиками.
  2. Завантажте свої дані в кластер MySQL, який заповнює лише вибрані вузли даних
  3. Поверніть всі вузли даних онлайн "

Це неправильно. Розподіл даних не залежить від того, які вузли можуть бути в Інтернеті в будь-який час. MySQL Cluster підтримує різні схеми розподілу даних для підтримки оптимізації, яку ви описуєте. Я описую розподіл даних в MySQL Cluster в публікації блогу тут: Розподіл даних у MySQL Cluster


Гей, Фрейзьє. Я прочитав надане вами посилання. Щойно для роз'яснення, мій коментар "складового ключа" базувався на унікальних індексах. Компанія мого роботодавця випробувала MySQL Cluster близько 1 кварталу 2007 року, і це не сподобалось через низьку ефективність. ІМХО - це поганий вибір клієнта для ключів (невеликих кардиналій) та його запитів. MySQL Cluster, мабуть, визріло більше відтоді на основі вашого посилання. Що стосується мого другого твердження, саме стільки користувачів MongoDB заповнюють конкретні черепки. Деякі клієнти мого роботодавця зробили це за допомогою власних налаштувань MySQL.
RolandoMySQLDBA

У вашому посиланні вона згадувала "впорядковану перевірку індексу", яку не вдалося обрізати, оскільки відповідні рядки не гарантовано зберігаються в одному фрагменті таблиці. Ось чому я пропонував виділити дані до специфічних осколків (вузлів даних), щоб мінімізувати місця розповсюдження даних. Оскільки ваша відповідь виявляє позитивну сторону кластера MySQL, вона краще відповідає оригінальному розміщеному питанню. Моя відповідь помиляється на користь обережності, песимізму та того, що сьогодні якимось наївною силою MySQL Cluster.
RolandoMySQLDBA

Замість мого рентгенівства та захоплення +1 для вашої відповіді !!!
RolandoMySQLDBA

Привіт Роландо, Дякую за роз’яснення ваших заяв. Це правда, що нерізані впорядковані сканування індексів є «дорогими» в Кластері, оскільки задіяні всі вузли даних. Здається, що ці сканування низьких показників кардинальності були б дорогими для будь-якої системи, але на кластері вони стали помітно дорогими. Ваша обережність і песимізм, без сумніву, врятували вас не раз :) Дякую за +1
Фрейзер Клемент
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.