Az Oracle-adatbázis teljesítménye az Azure NetApp Files önálló kötetein
Ez a cikk a következő témaköröket ismerteti a felhőbeli Oracle-ről. Ezek a témakörök különösen érdekesek lehetnek egy adatbázis-rendszergazda, felhőmérnök vagy tártervező számára:
- Ha online tranzakciófeldolgozási (OLTP) számítási feladatot (többnyire véletlenszerű I/O) vagy online elemzési (OLAP) számítási feladatot vezet (többnyire szekvenciális I/O), hogyan néz ki a teljesítmény?
- Mi a különbség a normál Linux kernel NFS -ügyfél (kNFS) és az Oracle saját Közvetlen NFS-ügyfele között?
- Ami a sávszélességet illeti, elegendő-e egy Azure NetApp Files-kötet teljesítménye?
Fontos
Az Orace dNFS helyes és optimális üzembe helyezéséhez kövesse az itt ismertetett javítási irányelveket.
Tesztelési környezet és összetevők
Az alábbi ábra a teszteléshez használt környezetet mutatja be. A konzisztencia és az egyszerűség érdekében az Ansible forgatókönyveket használták a tesztágy minden elemének üzembe helyezéséhez.
A virtuális gép konfigurációja
A tesztek a következő beállítást használták a virtuális géphez:
- Operációs rendszer:
RedHat Enterprise Linux 7.8 (wle-ora01) - Példánytípusok:
Két modellt használtak a teszteléshez – D32s_v3 és D64s_v3 - Hálózati adapterek száma:
Egy (1) a 3. alhálózatban - Lemezek:
Az Oracle bináris fájljai és operációs rendszere egyetlen prémium lemezre lett helyezve
Az Azure NetApp Files konfigurálása
A tesztek a következő Azure NetApp Files-konfigurációt használták:
- Kapacitáskészlet mérete:
A készlet különböző méretei konfigurálva lettek: 4 TiB, 8 TiB, 16 TiB, 32 TiB - Szolgáltatási szint:
Ultra (128 MiB/s sávszélesség 1 TiB lefoglalt kötetkapacitásonként) - Kötetek:
Egy és két kötetes teszt kiértékelése
Számítási feladatok generátora
A tesztek a SLOB 2.5.4.2 által létrehozott számítási feladatot használták. Az SLOB (Silly Little Oracle Benchmark) egy jól ismert számítási feladatgenerátor az Oracle-térben, amely az I/O-alrendszer SGA-pufferelt fizikai I/O-számítási feladatokkal való stresszelésére és tesztelésére lett kialakítva.
Az SLOB 2.5.4.2 nem támogatja a csatlakoztatható adatbázist (PDB). Ezért a program módosította a setup.sh
dokumentumot, és runit.sh
a szkriptek is hozzáadták a PDB-támogatást.
A tesztekben használt SLOB-változókat a következő szakaszok ismertetik.
Számítási feladat 80% SELECT, 20% FRISSÍTÉS | Véletlenszerű I/O – slob.conf
változók
UPDATE_PCT=20
SCAN_PCT=0
RUN_TIME=600
WORK_LOOP=0
SCALE=75G
SCAN_TABLE_SZ=50G
WORK_UNIT=64
REDO_STRESS=LITE
LOAD_PARALLEL_DEGREE=12
Számítási feladat 100%SELECT | Szekvenciális I/O – slob.conf
változók
UPDATE_PCT=0
SCAN_PCT=100
RUN_TIME=600
WORK_LOOP=0
SCALE=75G
SCAN_TABLE_SZ=50G
WORK_UNIT=64
REDO_STRESS=LITE
LOAD_PARALLEL_DEGREE=12
Adatbázis
A tesztekhez használt Oracle-verzió az Oracle Database Enterprise kiadás 19.3.0.0.
Az Oracle-paraméterek a következők:
sga_max_size
: 4096Msga_target
: 4096db_writer_processes
: 12awr_pdb_autoflush_enabled
:igazfilesystemio_options
: SETALLlog_buffer
: 134217728
Létre lett hozva egy PDB a SLOB-adatbázishoz.
Az alábbi ábrán a PERFIO nevű táblatér látható, amelynek mérete 600 GB (20 adatfájl, egyenként 30 GB) négy SLOB-felhasználói séma üzemeltetésére jött létre. Minden felhasználói séma 125 GB méretű volt.
Teljesítmény-mérőszámok
A cél az volt, hogy az alkalmazás által tapasztalt IO-teljesítményt jelentse. Ezért a cikkben szereplő összes diagram az Oracle-adatbázis által az Automatikus számítási feladattár (AWR) jelentéseivel jelentett metrikákat használja. A diagramokban használt metrikák a következők:
- Átlagos IO-kérések másodpercenként
Az átlagos olvasási IO-kérések/s és az átlagos írási IO-kérések/másodperc összegének felel meg a terhelésprofil szakaszból - Átlagos IO MB/s
Az átlagos olvasási IO MB/s és az átlagos írási IO MB/s összegnek felel meg a terhelésprofil szakaszából - Átlagos olvasási késés
Megfelel az Oracle wait event "db fájl szekvenciális olvasásának" átlagos késésének mikroszekundumokban - Szálak/séma száma
A felhasználói sémánkénti SLOB-szálak számának felel meg
Teljesítménymérés eredményei
Ez a szakasz a teljesítménymérés eredményeit ismerteti.
Linux kNFS-ügyfél és Oracle Direct NFS
Ez a forgatókönyv egy Azure-beli virtuálisgép-Standard_D32s_v3 futott (Intel E5-2673 v4 @ 2,30 GHz). A számítási feladat 75%-os SELECT és 25%-os FRISSÍTÉS, többnyire véletlenszerű I/O, és az adatbázis puffer találata ~7,5%.
Az alábbi ábrán látható módon az Oracle DNFS-ügyfél akár 2,8-szor nagyobb átviteli sebességet biztosított, mint a hagyományos Linux kNFS-ügyfél:
Az alábbi ábrán az olvasási műveletek késési görbéje látható. Ebben az összefüggésben a kNFS-ügyfél szűk keresztmetszete az ügyfél és az NFS-kiszolgáló (az Azure NetApp Files-kötet) közötti egyetlen NFS TCP-szoftvercsatorna-kapcsolat.
A DNFS-ügyfél több IO-kérést tudott leküldni másodpercenként, mivel több száz TCP-szoftvercsatornás kapcsolatot tudott létrehozni, így kihasználva a párhuzamosságot. Az Azure NetApp Files konfigurációjában leírtaknak megfelelően minden további lefoglalt tib kapacitás további 128MiB/s sávszélességet tesz lehetővé. A DNFS 1 GiB/s átviteli sebességre van felosztva, ami a 8 TiB kapacitás kiválasztásának korlátja. A nagyobb kapacitás miatt több átviteli sebesség lett volna hajtva.
Az átviteli sebesség csak az egyik szempont. Egy másik szempont a késés, amely elsődleges hatással van a felhasználói élményre. Az alábbi ábrán látható, hogy a késés növekedése sokkal gyorsabban várható a kNFS esetében, mint a DNFS esetében.
A hisztogramok kiváló betekintést nyújtanak az adatbázis késéseibe. Az alábbi diagram teljes nézetet nyújt a rögzített "db fájl szekvenciális olvasása" szempontjából, miközben a DNFS-t a legmagasabb egyidejűségi adatponton (32 szál/séma) használja. Ahogy az alábbi ábrán látható, az olvasási műveletek 47%-át 512 mikroszekundum és 1000 mikroszekundum között teljesítették, míg az olvasási műveletek 90%-át 2 ms alatti késéssel teljesítették.
Összefoglalva, egyértelmű, hogy a DNFS-nek kötelezőnek kell lennie, amikor az Oracle-adatbázispéldányok teljesítményének javítása az NFS-en.
Egykötetes teljesítménykorlátok
Ez a szakasz egy kötet teljesítménykorlátait ismerteti véletlenszerű I/O-val és szekvenciális I/O-val.
Véletlenszerű I/O
A DNFS sokkal nagyobb sávszélességet képes fogyasztani, mint amit egy 8 TB-os Azure NetApp Files teljesítménykvóta biztosít. Az Azure NetApp Files kötetkapacitásának 16 TiB-ra való növelésével, amely azonnali változás, a kötet sávszélessége 1024 MiB/s-ről 2X-ről 2048 MiB/s-ra nőtt.
Az alábbi ábrán egy 80%-os kiválasztási és 20%-os frissítési számítási feladat konfigurációja látható, és az adatbázis-puffer találati aránya 8%. A SLOB egyetlen kötetet tudott másodpercenként 200 000 NFS I/O-kérésre vezetni. Figyelembe véve, hogy minden művelet 8 KiB méretű, a vizsgált rendszer ~200 000 IO-kérést/másodpercet vagy 1600 MiB/s-t tudott kézbesíteni.
Az alábbi olvasási késési görbe ábrája azt mutatja, hogy az olvasási sebesség növekedésével a késés zökkenőmentesen növekszik az 1 ms-os vonal alatt, és a görbe térdét ~165 000 átlagos olvasási IO-kérelem/másodperc értéken éri el a ~1,3 ms átlagos olvasási késéssel. Ez az érték hihetetlen késési érték egy olyan I/O-sebesség esetében, amely szinte bármilyen más azure-felhőbeli technológiával elérhetetlen.
Szekvenciális I/O
Ahogy az alábbi ábrán látható, nem minden I/O véletlenszerű jellegű, figyelembe véve egy RMAN biztonsági mentést vagy egy teljes táblázatos vizsgálatot, például olyan számítási feladatokat, amelyek a lehető legtöbb sávszélességet igénylik. A korábban ismertetett konfigurációt használva, de a kötet 32 TiB-ra való átméretezése esetén az alábbi ábra azt mutatja, hogy egyetlen Oracle DB-példány 3900 MB/s átviteli sebességre képes felfelé haladni, nagyon közel az Azure NetApp Files-kötet 32 TB-os teljesítménykvótához (128 MB/s * 32 = 4096 MB/s).
Összefoglalva, az Azure NetApp Files segítségével az Oracle-adatbázisokat a felhőbe viheti. Teljesítményre képes, amikor az adatbázis igényli. A kötetkvótát bármikor dinamikusan és megszakításmentesen átméretezheti.