Nowość – Amazon RDS Optimized Reads i Optimized Writes
Już w 2009 roku Jeff Barr napisał Wprowadzenie do Amazon RDS – The Amazon Relational Database Service i powiedział:
„RDS ułatwia konfigurowanie, obsługę i skalowanie relacyjnej bazy danych w chmurze. Otrzymujesz bezpośredni dostęp do bazy danych bez martwienia się o udostępnianie infrastruktury, konserwację oprogramowania lub typowe zadania związane z zarządzaniem bazą danych”.
Od tej premiery twórcy AWS nadal robią wszystko, co w ich mocy, aby pomóc Ci uniknąć wszystkich tych elementów, jednocześnie pracując nad tym, aby RDS stał się coraz bardziej opłacalny. Przykładowo, niedawno uruchomiono Graviton2 DB Instances, które zapewniają do 52% lepszą cenę/wydajność oraz nową opcję wdrażania Multi-AZ, która zapewnia do 33% lepszą cenę/wydajność oraz 2x szybsze opóźnienie zatwierdzania transakcji.
Dzisiaj autorzy chcą opowiedzieć o dwóch nowych funkcjach, które przyspieszą Twoje obciążenia Amazon RDS for MySQL:
- Amazon RDS Optimized Reads umożliwiają szybsze przetwarzanie zapytań poprzez umieszczanie tymczasowych tabel generowanych przez MySQL na blokowej pamięci masowej SSD opartej na NVMe, która jest fizycznie połączona z serwerem hosta. Zapytania korzystające z tabel tymczasowych, takie jak sortowanie, agregacja skrótów, sprzężenia o dużym obciążeniu i Wspólne Wyrażenia Tabeli (CTE), mogą być wykonywane nawet o 50% szybciej dzięki zoptymalizowanym odczytom.
- Amazon RDS Optimized Writes zapewniają nawet dwukrotną poprawę przepustowości transakcji zapisu bez dodatkowych opłat i przy tym samym poziomie IOPS. Zoptymalizowane zapisy doskonale sprawdzają się w przypadku obciążeń z dużym obciążeniem zapisem, które generują wiele jednoczesnych transakcji. Obejmuje to płatności cyfrowe, platformy handlu finansowego i gry online.
Amazon RDS Optimized Reads
Amazon RDS for MySQL without Optimized Reads umieszcza tymczasowe tabele w woluminach Amazon Elastic Block Store (Amazon EBS). Zoptymalizowane odczyty przenoszą operacje na obiektach tymczasowych z EBS do magazynu instancji dołączonego do instancji r5d, m5d, r6gd i m6gd. W rezultacie woluminy EBS mogą być efektywniej wykorzystywane do odczytów i zapisów trwałych danych, a także operacji w tle, takich jak opróżnianie, scalanie buforów wstawiania i tak dalej. Ta zwiększona wydajność jest (oczywiście) zawsze miła, ale jest szczególnie korzystna w niektórych przypadkach użycia:
- Zapytania analityczne obejmujące złożone wyrażenia tabelaryczne, tabele pochodne i operacje grupowania.
- Repliki odczytu obsługujące niezoptymalizowane zapytania dla aplikacji.
- Zapytania On-Demand lub Dynamic Reporting Query ze złożonymi operacjami, takimi jak GROUP BY i ORDER BY, które nie zawsze mogą używać odpowiednich indeksów.
- Inne obciążenia korzystające z wewnętrznych tabel tymczasowych.
Możesz monitorować zmienną stanu MySQL created_tmp_files, aby obserwować tempo tworzenia tabel tymczasowych.
Ilość miejsca dostępnego w instancji różni się w zależności od rodziny i rozmiaru instancji. Oto przewodnik:
nstance Family | Minimum Storage |
Maximum Storage |
m5d | 75 GB | 3.6 TB |
m6gd | 118 GB | 3.8 TB |
r5d | 75 GB | 3.6 TB |
r6gd | 118 GB | 3.8 TB |
Korzystanie z Optimized Reads
Aby skorzystać z tej nowej funkcji, wybierz silnik MySQL w wersji 8.0.28 lub nowszej i uruchom Amazon RDS for MySQL na jednym z typów instancji wymienionych powyżej:
Możesz monitorować użycie pamięci instancji, obserwując nowe metryki CloudWatch, w tym FreeLocalStorage, ReadIOPSLocalStorage, WriteIOPSLocalStorage i tak dalej (pełną listę nowych i istniejących metryk znajdziesz w Podręczniku użytkownika).
Zoptymalizowane Odczyty są dostępne we wszystkich regionach AWS, w których dostępne są kwalifikujące się typy instancji bazy danych.
Amazon RDS Optimized Writes
Domyślnie MySQL używa bufora podwójnego zapisu na dysku, który służy jako przystanek pośredni między pamięcią a ostatecznym miejscem przechowywania na dysku. Każda strona bufora to 16 KiB, ale jest zapisywana w końcowej pamięci na dysku w porcjach 4 KiB. Ten dodatkowy krok pozwala zachować integralność danych, ale zużywa również dodatkową przepustowość I/O. W przypadku uruchamiania obciążeń wymagających dużej ilości zapisu, które opisano wcześniej, może to wymagać zapewnienia dodatkowych operacji I/O na sekundę, aby spełnić wymagania dotyczące wydajności i przepustowości.
Zoptymalizowane zapisy wykorzystują jednolite strony bazy danych o rozmiarze 16 KiB, bloki systemu plików i strony systemu operacyjnego oraz zapisują je w pamięci masowej w sposób atomowy (all or nothing), co skutkuje nawet dwukrotną poprawą wydajności, o której wspomniano wcześniej.
Wykorzystanie Optimized Writes
Aby korzystać ze zoptymalizowanych zapisów, należy utworzyć od podstaw nową instancję bazy danych na instancji db.r5b lub db.r6i z najnowszą wersją MySQL 8.0:
To ustawienie wpływa na format migawek bazy danych, co ma dwie ważne konsekwencje:
- Nie można przywrócić istniejącej niezoptymalizowanej migawki do nowej, zoptymalizowanej, aby włączyć Optimized Writes.
- Przywrócenie migawki utworzonej z włączoną optymalizacją spowoduje włączenie Optimized Writes w nowej instancji.
Jeśli skalujesz do typu instancji, który nie obsługuje Optimized Writes, Amazon RDS włączy tryb podwójnego zapisu MySQL w instancji jako awaryjną. Jeśli skalujesz do instancji obsługującej zoptymalizowane zapisy z takiej, która tego nie obsługuje, Amazon RDS uruchomi MySQL w trybie podwójnego zapisu, zaczeka na zakończenie odzyskiwania i odtwarzania dziennika, a następnie ponownie uruchomi MySQL z wyłączoną funkcją podwójnego zapisu.
Optimized Writes są teraz dostępne w regionach wschodnich Stanów Zjednoczonych (Ohio, Wirginia Północna), Zachodnich Stanów Zjednoczonych (Oregon), Azji i Pacyfiku (Singapur, Tokio) oraz Europy (Frankfurt, Irlandia, Paryż) i możesz zacząć z nich korzystać już dziś!
źródło: AWS