AWS е доставчик на облак №1 за хостинг на база данни с отворен код и облак за внедряване на MySQL. Тъй като организациите продължават да мигрират към облака, важно е да се изправите пред проблеми с производителността, като висока латентност, ниска пропускателна способност и забавяне на репликацията с по-големи разстояния между вашите потребители и облачна инфраструктура. Докато много потребители на AWS по подразбиране използват своето решение за управлявана база данни, Amazon RDS, има налични алтернативи, които могат да подобрят вашата MySQL производителност в AWS чрез разширени опции за персонализиране и неограничена поддръжка на типове EC2 екземпляри. ScaleGrid предлага завладяваща алтернатива на хостването на MySQL на AWS, която предлага по-добра производителност, повече контрол и без заключване на доставчика в облак и същата цена като Amazon RDS. В тази публикация сравняваме производителността на MySQL Amazon RDS спрямо MySQL хостинг в ScaleGrid на AWS високопроизводителни инстанции.
TLDR
Разгръщането MySQL на ScaleGrid на AWS High Performance може да осигури 2x-3x пропускателната способност при половината от латентността на Amazon RDS за MySQL с допълнителното им предимство да имат 2 реплики за четене в сравнение с 1 инча RDS.
MySQL на тест за производителност на AWS
ScaleGrid | Amazon RDS | |
Тип на екземпляра | AWS High Performance XLarge (вижте подробностите за системата по-долу) | DB екземпляр r4.xlarge (Multi-AZ) |
Тип на внедряване | Набор от 3 възела главен-подчинен с полусинхронна репликация | Разгръщане в няколко AZ с 1 реплика за четене |
SSD диск | Локален SSD и общо предназначение – 2TB | Общо предназначение – 2TB |
Месечна цена (USD) | 1798$ | 1789$ |
Amazon RDS Разходи | Цена | Количество | Общо | Бележки |
Multi-AZ | ||||
DB екземпляр (hr) | $0,48 | 730 | 350,40$ | db.r4.xlarge |
DB екземпляр (hr) | $0,48 | 730 | 350,40$ | db.r4.xlarge |
Съхранение (GB) | $0,115 | 2000 | $230,00 | Общо предназначение – 2TB (Single-AZ) |
Прочетете реплика | ||||
DB екземпляр (hr) | $0,48 | 730 | 350,40$ | db.r4.xlarge (Single-AZ) |
Съхранение (GB) | $0,115 | 2000 | $230,00 | Общо предназначение – 2TB (Single-AZ) |
Други разходи | ||||
Архивно съхранение (GB) | $0,095 | 1000 | $95,00 | Освободете до 100% от хранилището на DB |
Прехвърляне на данни (извън към интернет) | $0,09 | 0 | $0,00 | Безплатно до 1GB/месец |
Прехвърляне на данни (излизане към региони) | $0,01 | 2000 | $20,00 | Изток на САЩ (Северна Вирджиния) |
Поддръжка | $162,62 | 1 | $162,62 | 10% от месечните разходи |
Общо | $1,788.82 |
Както можете да видите от таблицата по-горе, цените на MySQL RDS са в рамките на $10 спрямо напълно управляваното и всеобхватно решение за хостинг MySQL на ScaleGrid.
Какви са високопроизводителните набори реплики на ScaleGrid?
Комплектът реплики ScaleGrid MySQL на AWS High Performance използва хибрид от локален SSD и EBS диск, за да постигне както висока производителност, така и висока надеждност. Типична конфигурация се разгръща с помощта на набор от реплики с 3 възела:
- Master и Slave-1 използват локални SSD дискове.
- Slave-2 използва EBS диск (може да бъде с общо предназначение или осигурен IOPS диск).
Какво означава това? Тъй като Master и Slave-1 работят на локален SSD, вие получавате възможно най-добрата производителност на диска от вашите AWS машини. Няма повече мрежово базиран EBS, просто невероятно бърз локален SSD. Чете и записва на вашия Primary и дори чете от Slave-1 ще работи със скорост на SSD. Slave-2 използва EBS диск с данни и можете да конфигурирате количеството IOPS, необходимо за вашия клъстер. Тази конфигурация осигурява пълна безопасност за вашите данни, дори в случай, че загубите локалните SSD дискове.
Наборът реплики MySQL AWS High Performance XLarge на ScaleGrid използва екземпляри i3.xlarge (30,5 GB RAM) с локален SSD за главен и подчинен-1 и i3.2xlarge (61 GB RAM) екземпляр за Slave-2.
Конфигурация на MySQL
Подобна конфигурация на MySQL се използва както за внедряване на ScaleGrid, така и за RDS:
Конфигурация | Стойност |
версия | 5.7.25 издание на общността |
innodb_buffer_pool_size | 25G |
innodb_log_file_size | 1G |
innodb_flush_log_at_trx_commit | 1 |
sync_binlog | 1 |
innodb_io_capacity | 3000 |
innodb_io_capacity_max | 6000 |
slave_parallel_workers | 30 |
slave_parallel_type | LOGICAL_CLOCK |
Конфигурация за сравнителен анализ на производителността на MySQL
Конфигурация | Подробности |
Инструмент | Sysbench версия 1.0.17 |
Хост | 1 r4.xlarge, разположен в същия център за данни на AWS като Master MySQL |
# Таблици | 100 |
# реда на таблица | 5,000,000 |
Скрипт за генериране на работно натоварване | oltp_read_write.lua |
Сценарии и резултати за тестване на производителността на MySQL
За да гарантираме, че предоставяме информативни резултати за всички типове натоварвания на MySQL AWS, ние разбихме нашите тестове в тези три сценария, за да можете да оцените въз основа на интензивността на натоварването при четене/запис:
- Натоварване с интензивно четене: 80% чете и 20% пише
- Балансирано работно натоварване: 50% чете и 50% пише
- Натоварване с интензивно писане: 20% чете и 80% пише
Всеки сценарий се изпълнява с различен брой клиентски нишки на sysbench, вариращи от 50 до 400, и всеки тест се изпълнява за продължителност от 10 минути. Ние измерваме пропускателната способност по отношение на заявки в секунда (QPS) и 95-ти процентил латентност и гарантираме, че максималното забавяне на репликация на подчинените устройства не надхвърля 30 секунди. За някои от тестовете за внедряването на ScaleGrid, конфигурацията на MySQL binlog_group_commit_sync_delay е настроена така, че забавянето на подчинената репликация да не надхвърля 30 секунди. Тази техника се нарича „забавяне на главния за ускоряване на подчинените“ и е обяснена в блога на J-F Gagne.
Как да подобрим производителността на #MySQL AWS 2 пъти над Amazon RDS на същата цена Щракнете за туитСценарий 1:Работно натоварване с интензивно четене с 80% четене и 20% записване
Както можем да видим от тестовете с интензивно четене, високопроизводителните MySQL екземпляри на ScaleGrid в AWS са в състояние да обработват последователно около 27 800 QPS навсякъде от 50 до 400 нишки. Това е почти 200% увеличение в сравнение с MySQL RDS производителността, която е средно само 9411 QPS в същия диапазон от нишки.
ScaleGrid също поддържа 53% по-ниска латентност средно по време на всички тестове за производителност на MySQL AWS. Закъснението както на Amazon RDS, така и на ScaleGrid се увеличава постоянно с нарастването на броя на нишките, където ScaleGrid достига максимум 383 мс за 400 нишки, докато Amazon RDS е на 831 мс на същото ниво.
Сценарий 2:Балансирано работно натоварване с 50% четене и 50% записване
В нашите тестове за ефективност на балансирано работно натоварване, разгръщането на MySQL High Performance на ScaleGrid в AWS отново превъзхожда със средно 20 605 QPS в нишки, вариращи от 50 до 400. Amazon RDS само средно 8296 за същия брой нишки, което води до 148% подобрение с ScaleGrid.
Закъсненията както на ScaleGrid, така и на Amazon RDS значително намаляха при тестовете за балансирано натоварване в сравнение с тестовете с интензивно четене, разгледани по-горе. Amazon RDS има средна латентност от 258 мс в тестовете за балансирано работно натоварване, където ScaleGrid достига средно само 125 мс, постигайки над 52% намаление на латентността спрямо MySQL на Amazon RDS.
Сценарий 3:Работно натоварване с интензивно писане с 20% четене и 80% записване
В нашия последен сценарий с интензивно писане на работно натоварване на MySQL AWS, ScaleGrid постигна значително по-висока производителност със средно 17 007 QPS в диапазона от 50 до 400 нишки. Това е 123% подобрение спрямо Amazon RDS, който постигна само 7638 QPS за същия брой нишки.
Тестовете за забавяне на 95-ия процентил също дадоха значително по-ниска латентност за ScaleGrid при средно 114 мс за 50 до 400 нишки. Amazon RDS постигна средно 247 мс в своите тестове за закъснение, което доведе до средно намаление на латентността с 54% при внедряване на високопроизводителния MySQL на ScaleGrid в AWS услуги през Amazon RDS.
Анализ
Както забелязахме от резултатите от теста, натоварванията с интензивно четене доведоха както до по-висока пропускателна способност, така и до латентност спрямо балансирани натоварвания и натоварвания с интензивно записване, независимо как MySQL беше внедрен на AWS:
MySQL на AWS Средни тестове за производителност на производителността | ScaleGrid | Amazon RDS | Подобрение на ScaleGrid |
Пропускателна способност с интензивно четене | 27 795 | 9,411 | 195,4% |
Балансиране на производителността на работното натоварване | 20 605 | 8,296 | 148,4% |
Пропускателна способност с интензивно писане | 17 007 | 7 638 | 122,7% |
MySQL на AWS Средни стойности на теста за забавяне | ScaleGrid | Amazon RDS | Подобрение на ScaleGrid |
Закъснение с интензивно четене | 206ms | 439ms | -53,0% |
Закъснение на балансирано работно натоварване | 125ms | 258ms | -51,6% |
Закъснение с интензивно писане | 114ms | 247ms | -53,8% |
Обяснение на резултатите
- Виждаме, че ScaleGrid MySQL при внедряването на AWS осигурява близо 3 пъти по-добра пропускателна способност за натоварването с интензивно четене в сравнение с внедряването на RDS.
- С увеличаването на натоварването при запис, въпреки че абсолютната пропускателна способност намалява, ScaleGrid все още осигурява близо 2,5 пъти по-добра производителност.
- За натоварвания, изискващи интензивно писане, открихме, че забавянето на репликацията е започнало да се задейства за EBS slave при внедряването на ScaleGrid. Тъй като нашата цел беше да запазим забавянето на подчинената репликация в рамките на 30 секунди за нашите изпълнения, ние въведохме binlog_group_commit_sync_delay, за да гарантираме, че подчинените могат да постигнат по-добро паралелно изпълнение. Това контролираше забавянето и доведе до по-малка абсолютна пропускателна способност при внедряването на ScaleGrid, но все пак можехме да видим 2,2 пъти по-добра пропускателна способност в сравнение с внедряването на RDS.
- За всички сценарии с интензивно четене, интензивно записване и балансирано натоварване, ScaleGrid предлага 0,5 пъти по-ниски характеристики на латентност в сравнение с RDS.
Разгръщането с висока производителност на ScaleGrid може да осигури 2x-3x пропускателната способност при половината от латентността на RDS с допълнително предимство от наличието на 2 реплики за четене в сравнение с 1 в RDS. За да научите повече за предимствата на хостинг MySQL на ScaleGrid пред Amazon RDS за MySQL, разгледайте нашата страница за сравнение на доставчици на MySQL или започнете безплатна 30-дневна пробна версия, за да разгледате напълно управляваната DBaaS платформа.