Proč je výběr HW důležitý ?

Pokud podceníme analýzu při nákupu nového serveru, nevhodně zvolený HW bude mít zásadní dopad na práci databázového systému. Proto je před nákupem nového HW nutné pečlivě analyzovat typ aplikace a jakým způsobem bude pracovat s daty. Výběr správného HW má dopad na výkon celé aplikace :

  • Ovlivní licenční model a cenu licence databázového systému
  • Ovlivní výkon operací (single thread vs. parallelism)
  • Ovlivní výkon jednotlivých typů dotazů (OLTP vs. DWH/DSS)
  • Ovlivní memory management při zpracování operací
  • Neoptimální výkon IO operací

Při výběru HW se nechte inspirovat :

  • Standardizované benchmarky TPC-E, TPC-H atd. (http://www.tpc.org/)
  • Případové studie dodavatele HW a SW
  • Analýzou aktuálně používaného/staršího serveru

Význam výběru vhodného typu CPU

  • Od verze SQL Server 2012 je Enterprise edice licencována na fyzická jádra CPU
  • Bez ohledu na typ a výkon CPU je cena Core licence stejná
    • AMD procesory s 6+ core jsou zvýhodněny cenou licence (25% sleva)
  • Intel hyper-threading nemá vliv na cenu licence
  • Pro databázový systém je důležitý výkon CPU při single-thread operacích
  • Cena licence SQL Serveru obvykle mnohonásobně převyšuje cenu CPU
    • Jaký smysl má licencovat jádra podprůměrně výkonného CPU ?
  • Výběr procesoru ovlivní i další části serveru
    • Obvykle různé typy CPU dle počtu procesorů, kterými lze server osadit (socket)
    • Omezení fyzické paměti RAM (často mají procesory přímo vestavěný memory controller nebo/a ovlivňují maximální množství paměti)
    • Ovlivní I/O operace
    • Ovlivní budoucí možnost upgrade serveru (investice do novějšího typu CPU)

Základní přehled edicí SQL Serveru

Edice SQL Serveru
Edice HW limit Licenční model Cena 1 core Cena Server + CAL
Enterprise dáno OS Core $6.800 N/A
Business Intelligence SSAS a SSRS dáno OS 
DE jako Standard
Server + CAL N/A $8.600 Server
$210 CAL
Standard 64 GB RAM 
4 socket/16 cores
Core i
Server + CAL
$1.800 $900
$210 CAL
    • Cena licencí se může lišit dle verze SQL Serveru a dodavatele (ceny jsou orientační)
    • Standard edice SQL 2014 má limit RAM zvýšen na 128 GB
    • Je nutné licencovat minimálně 4 core na 1 socket
    • DE = Database Engine, OS = Operating Systém, SSAS = Analysis Services, SSRS = Reporting Services

Typy úložiště pro databáze

  • Interní disky serveru
  • Direct Attached Storage (DAS)
  • Storage area network (SAN)
  • PCI-E internal storage (interní SSD – ideálně RAID 1)
  • Server message block file share (SMB ve verzi 3.0)
    • Použitelný od Windows Server 2012

Způsob práce s daty

Typy IO operací dle způsobu použití dat

  • Sekvenční vs. Random
  • Read vs. Write
  • Operace s jednotlivými typy databázových souborů
    • Čtení z datového soubor
    • Zápis do transakčního logu

Způsob práce s daty zásadně ovlivní výběr HW. Poměrně obvykle se v praxi setkáváme s různými způsoby práce s daty což stíží finální výběr HW. Jednotlivé způsoby použití a práce s daty mohou být natolik rozdílné, že kladou specifické požadavky na jednotlivé komponenty serveru. Nesmíme zapomenout na to, že kromě aplikace bude s daty pracovat i správce systému při údržbě, zálohování nebo při zajištění HA/DR.

  • OLTP
    • Nejčastější způsob práce s daty
    • Typický velkým množstvím krátkých a rychlých transakcí (řády jednotek sekund)
    • Obvykle velký počet zápisu/změn v datech
      • Změny v datech jsou logovány do souboru transakčního logu databáze
      • Zápis do transakčního logu je sekvenční (a může být úzkým hrdlem systému)
      • Zápis a čtení z datových souborů je obvykle typu random (čtení a zápis jednotlivých stránek – výkon random IO je důležitý)
    • Obvykle jsou prováděny jedním vláknem a těží tedy z výkonu jednoho logického procesoru
    • TPC-E OLTP benchmark pro porovnání a výběr HW
  • DWH/DSS (DataWarehouse/Decision support system)
    • Relační datový sklad
    • Typický velkým množstvím náročných a dlouho trvajících SELECT operací
    • Zásadně převažují read operace (write operace obvykle při importu dat)
    • Vzhledem k náročnosti je obvykle každý jeden dotaz  zpracovány více procesory (parallelism)
    • Důležitým faktorem je počet logických procesorů (výkon jednoho procesoru je také důležitý)
    • Kombinace sekvenčního i random čtení z datových souborů (výkon sequential IO je důležitý )
  • OLAP
    • Vzhledem ke zvyšujícímu se objemu dat je stále populárnější
    • Velké množství MDX dotazů
      • Zásadně převažují read operace z kostky
      • Malé množství write operací (write především při procesování kostky)
      • Dotazy jsou obvykle složité a těží tedy z vyššího počtu logických jader
      • Důležitá je velikost paměti RAM
    • Zápis dat do kostky je obvykle sekvenční
    • Čtení dat z datového zdroje při procesování kostky je obvykle sekvenční
  • Mix
    • Kombinace jednotlivých typů není neobvyklá
      • OLTP + Reporting
      • DWH s častými update operacemi
      • Mnoho databází s různým způsobem práce v jediné instanci
      • Mnoho databází se stejným způsobem práce v jediné instanci
        • Pokud má mnoho databází sekvenční přístup, celkově pak v oblasti IO provádějí random IO
  • Database Maintenance
    • Údržba a tvorba indexů
      • Vyznačuje se sekvenčním čtením z datových souborů
      • Sekvenční a random zápis do datových souborů
      • Sekvenční zápis do transakčního logu
      • Komprese indexu zvyšuje požadavky na CPU, ale snižuje IO zápis do datových souborů
      • REBUILD indexu může být optimalizován Bulk Logged modelem, který sníží objem zápisů do transakčního logu
      • REORGANIZE operace je vždy plně logována a není tedy rozdíl ve FULL/BulkLogged recovery modelu
    • DBCC CHECKDB (kontrola integrity databáze)
      • Sekvenční čtení z datových souborů
        • Může být prováděno paralelně při rozdělení databáze na více datových souborů
      • Zátěž na CPU
      • Obvykle zápis do tempdb
  • Backup/Restore
    • Sekvenční zápis do cíle zálohy
    • Sekvenční čtení z datových souborů a transakčního logu
    • Differential Backup může provádět spíše random čtení z datových souborů (dle změněné části databáze)
    • Transaction Log backup provádí sekvenční čtení z transakčního logu databáze
    • Nativní komprese při zálohování sníží objem sekvenčních IO zápisů, data jsou komprimována před umístěním do cíle zálohy (náročnější pro CPU o 5-10%)
    • Full DB Restore operace provádí čtení ze zálohy a zápis do datových souborů/logu sekvenčně
    • Differential a Log Restore provádějí více random zápisů do datových souborů databáze
  • HA/DR (High Availability/Disaster Recovery)
    • Clustering nemá vliv na IO operace
    • Log shipping nemá zásadní vliv na IO operace (pouze s přihlédnutím k nutnosti zálohy logu a kopírování zálohy)
    • Database Mirroring
      • Čtení z transakčního logu Principal serveru
      • Zápis do transakčního logu Mirror serveru a následné přehrávání transakcí
    • Transakční replikace
      • Čtení z transakčního logu publikované databáze
      • Čtení a zápis do databáze Distribution (pozor na lokálního distributora)
    • AlwaysOn Availability Groups
      • Čtení z transakčního logu databází primární repliky

Množství a náročnost operací

  • Performance čítače
    • Transaction/sec
    • Batch Requests/sec
  • Počet současně pracujících uživatelů (aplikačních připojení do databázového systému)
  • Počet hostovaných databází
    • Vyšší počet hostovaných databází způsobuje random IO operace
  • Velikost databází
    • Požadavky na diskový prostor, uložení záloh apod.
    • Ovlivní memory manegement
  • Množství změn v datech ovlivní generování zápisů do transakčního logu (MB/sec)

 Výběr procesoru dle typu operací

  • OLTP
    • Důležitý je výkon jednoho jádra
  • DWH/DSS
    • Klade důraz na počet jader
  • OLAP
    • Důležitý je jak počet jader tak i výkon jednoho jádra

Výběr serveru dle počtu socketů

  • Počet socketů se obvykle váže k potřebě škálovatelnosti systému
  • Server s více sockety neznamená, že je server rychlejší
    • 2 socket servery jsou z důvodu rozšířenosti obvykle osazovány novějšími a rychlejšími procesory
    • 2 socket servery jsou obvykle výkonnější než více socketové servery v jedno vláknových operacích
    • 2 socket servery jsou obvykle cenově dostupné a poskytují dostatečný výkon pro většinu typů operací
    • 2 x 2 socket servery jsou výkonnější než 1 x 4 socket server
    • Cena 4+socket server roste nelineárně

Co rozhoduje o ceně celkového řešení ?

  • Cena HW samotného serveru
    • # socket, typ a model CPU, RAM
  • Storage
    • Úložiště pro databáze a zálohy
    • Komprese dat (Enterprise edice) a komprese záloh (Standard edice) může snížit požadavky na storage
  • Cena licence SQL Serveru
    • V závislosti na edici
      • Podporovaný HW (RAM, Socket/core)
      • Podporované funkce databázového systému
    • Obvykle cena licence SQL Serveru výrazně převyšuje cenu HW Serveru
    • Volba vhodného typu procesoru je zásadní vzhledem k licenčnímu modelu
      • Logická jádra technologie hyper-threading nejsou licencována a dokáží zvýšit výkon o 20-30%

Intel nebo AMD ?

  • Procesory Intel jsou jedničkou na poli výkonu single-thread operací
    • Oproti AMD mají obvykle méně jader a mají vyšší pořizovací cenu
  • Procesory AMD jsou levnější, mají obvykle více jader, která mají nižší výkon
    • Při licencování AMD procesorů na jádra je sleva 25%
      • Ani tento fakt nezvrátí výrazně vyšší finanční náklady licencí SQL Server per core
      • AMD procesory volíme pouze tehdy, kdy nelicencujeme per core, požadujeme velký počet core s nižším výkonem
  • Protože jsou ceny i dražších Intel CPU zanedbatelné vzhledem k celkové ceně řešení, Intel procesory jsou většinou jasnou volbou

 Typ Intel procesoru dle typu operací

  • Two-socket server (OLTP)
    • Intel Xeon E5-2667 v2 (22nm Ivy Bridge-EP)
      • 3.3 GHz, 25MB L3 cache, 8 GT/s QPI
      • 8 cores + hyper-threading, 4GHz Turbo boost
      • 4 memory chanels, 768 GB max memory
    • nebo Xeon E5-2643 v2 (3.5GHz, 6 core)
  • Two-socket server (DW/DSS)
    • Intel Xeon E5-2697 v2 (22 nm Ivy Bridge-EP)
      • 2.7 GHz, 30MB L3 cache, 8GT/s QPI
      • 12 cores + hyper-threading, 3.5GHz Turbo boost
      • 4 memory chanels, 768 GB max memory