DB2 verze 10.1
DB2 10.1 je od konce dubna 2012 ke stažení v elektronické podobě.
Nová verze přinesla mnoho novinek, které zvyšují výkon, zlepšují bezpečnost, kompatibilitu a administraci. Níže jsou významné uvedené novinky.
Kompletní seznam nových funkcí naleznete v DB2 Information Center. Některé nové funkce jsou detailněji rozepsány v Redbooku Unleashing DB2 10 for Linux, UNIX, and Windows
Edice
U Edice DB2 Express-C a DB2 Express došlo ke zdvojnásobení maximální velikosti použitelné operační paměti.
Byla zrušena většina placených rozšíření funkcionalit jako Performance Optimalization Feature,Advanced Access Control Feature, DB2 Geodetic Feature. Zůstaly pouze Storage Optimalization Feature pro povolení komprese databáze a PureScale Feature propoužívání DB2 pureScale clusteru.
Administrace
Adaptivní komprese
Adaptivní komprese navazuje na kompresi databáze ve verzi 9.7. Zůstává kompresní slovník na úrovni tabulky a přidávají se menší kompresní slovníky na úrovni stránek. Adaptivní komprese na úrovni stránky vždy zapíná i tabulkovou kompresi.
Tabulková komprese vytváří v přední části tabulky jeden velký statický slovník o velikosti přibližně 75 - 100KB. Lempel-Ziv slovník obsahuje 4096 12bitových symbolů odkazující na nejčastější řetězce v tabulce. Řetězce se hledají na úrovni řádky (ignorují se sloupečky).
Stránková komprese vytváří dynamicky menší slovník na úrovni stránky a umožňuje komprimovat kratší frekventované řetězce, které nedokázala zabalit tabulková komprese. Slovník na stránce se automaticky udržuje při změnách dat.
Data jsou komprimována v tabulkách, indexech, transakčních logách i v bufferpools.
Kompresní poměr hodně závisí na datech. Obyčejně se pohybuje od 30% do 80%.
ALTER TABLE ... COMPRESS YES ADAPTIVE
Více teplotní úložiště dat
Již v minulých verzích DB2 používá ve výchozím nastavení ukládání dat do tabulkových prostorů typu automatic storage. Při vytváření databáze administrátor definuje cesty, kde mají být uložena data. Tento seznam lze průběžně aktualizovat. Tabulkové prostory jsou vytvářeny v těchto cestách.
Do verze 9.7 DB2 nerozlišovala v rychlostech jednotlivých cest. Verze 10.1 přináší podporu více teplotních úložišť dat. Často přistupovaná data (hot) lze umístit na rychlé disky (např. SSD). Naopak archivní stará data (cold) lze umístit na pomalejší disky.
Tato funkcionalita se výborně doplňuje v table partitiongem, kdy aktuální části leží v rychlých tablespaces a jak zastarávají, tak se postupně přesouvají na pomalejší disky.
CREATE STOGROUP sg_hot ON '/ssd/path1', '/ssd/path2' DEVICE READ RATE 100 OVERHEAD 6.725
CREATE TABLESPACE tbs1 USING STOGROUP sg_hot
CREATE TABLE sales (order_date DATE, order_id INT) PARTITION BY RANGE (order_date) (PART "2012" STARTING ('2012-01-01') ENDING ('2012-12-31') in "tbsp_hot", PART "2011" STARTING ('2011-01-01') ENDING ('2011-12-31') in "tbsp_cold")
ALTER TABLESPACE tbs1 USING STOGROUP sg_cold
ICT (Insert Time Cluster) tabulka
Tabulka fyzicky ukládá řádky tak, aby řádky vložené v podobný čas byly uloženy na stejných stránkách.
ICT vychází z tabulek MDC (multidimensional cluster), místo ručně definovaných dimenzí se clustrování provádí automaticky pomocí virtuálního sloupce s hodnotou času vložení řádky.
Výhodou je používá blokových indexů, blokových alokocí, fyzické uložení podle času vložení.
CREATE TABLE ... ORGANIZED BY INSERT TIME
Komprese archivních logů
Pokud je archivace logů ponechána na DB2, lze zapnout kompresi archivních logů. Ve chvíli, kdy uzavřený transakční log archivován a přenášen do archivní cesty, je komprimován.
UPDATE DB CFG FOR alias USING LOGARCHCOMPR1 YES
Monitorování
Event monitor
Nový event monitor zachycuje všechny důležité zásahy do konfigurace databáze, které mohou ovlivnit výkon databáze - změnu konfiguračních parametrů databáze a instance, změnu DB2 registrů, spouští DDL SQL příkazů, spouštění online utilit jako je LOAD, RUNSTATS, BACKUP, ADMIN_MOVE_TABLE.
Event monitor lze použít například pro auditování.
CREATE EVENT MONITOR evchanges FOR CHANGE HISTORY WHERE EVENT IN (ALL) WRITE TO TABLE evm_changes AUTOSTART
Usage list
Nový databázový objekt, který sleduje unikátní příkazy spouštěné proti tabulce nebo indexu. Z paměti pro monitorování se alokuje seznam o dané velikosti, do kterého se zapisují spouštěné příkazy. V kombinaci s výpisem package cache lze vypsat, jaké konkrétní SQL příkazy nejvíce pracují s tabulkou.
CREATE USAGE LIST usage_list_name FOR TABLE objekt LIST SIZE 100WHEN FULL WRAP ACTIVE ON START DATABASE
SET USAGE LIST list STATE = ACTIVE
SELECT TABNAME, TABSCHEMA,NUM_REFERENCES, NUM_REF_WITH_METRICS, ROWS_READ, ROWS_INSERTED, ROWS_UPDATED, ROWS_DELETED,EXECUTABLE_ID FROM TABLE (MON_GET_TABLE_USAGE_LIST('schema', 'list', -2)) AS L
Vysoká dostupnost
HADR
Možnosti HADR (High Availability and Disaster Recovery) se velmi rozšířily.
- Primární databáze může být replikována až na 3 standby databáze dostupné pro čtení.
- Změna konfigurace HADR lze provádět online.
- HADR poskytuje ochranu proti chybným transakcím (time delayed replay).
- Fronta transakčních logů na standby databázi minimalizuje zamrznutí primární databáze z důvodu úplného vytížení standby databáze.
Do HADR mohou být zapojeny až 4 databáze. Jedna je primární, do které lze zapisovat. Druhá je principal standby, do které se změny mohou zapisovat synchronně. Zbylé dvě jsou auxiliary standby a zapisuje se do nich pouze asynchronně. Všechny standby databáze jsou dostupné pro čtení.
Nový parametr HADR_REPLAY_DELAY nastavený na standby databázi definuje minimální zpoždění synchronizace změn mezi primární a standby databází. Pokud je na primární databáze spuštěna chybná transakce - chyba aplikace, nevhodný zásah administrátora apod. je možnost při brzké detekci opravit na primární databázi chybná data nebo přepnout HADR na záložní databázi, ve které ještě není chybný příkaz spuštěn.
V předchozích verzí DB2 mohlo docházet k omezení výkonu primární databáze, pokud standby databáze nedokázala dostatečně při synchronním módu replikovat všechny změny dat. V DB2 10.1 lze nastavit parametr HADR_SPOOL_LIMIT, který umožňuje na standby databázi vytvořit frontu transakcí ke zpracování. Pořád zůstávají zachovány výhody synchronního módu a navíc je primární databáze chráněna proti pomalé replikaci změn na standby databázi.
Díky novým vlastnostem lze vytvářet různé kombinace clusterů. Například jedna databáze slouží pro rychlé lokální přepnutí, další alokovaná v jiné lokalitě slouží pro HA a poslední databáze má opožděnou synchronizaci a chrání proti chybným transakcím.
Plnění datových skladů
DB2 10.1 obsahuje nový klientský příkaz INGEST pro rychlé průběžné plnění tabulek ze souborů a rour různých formátů. Utilita INGEST je vhodné pro plnění datových skladů ETL procesem.
Výhodou proti stávající utilitě LOAD je minimalizace dopadů plnění na ostatní souběžně pracující aplikace.
Plnění probíhá po blocích a je restartovatelné. Pro vkládání údajů se používají SQL příkazy INSERT, UPDATE, DELETE, MERGE a REPLACE.
INGEST FROM FILE soubor DELIMITED DUMPFILE dumpfile EXCEPTION TABLE extable MESSAGE msgfileRESTART NEW in1 INSERT INTO table (sloupce) VALUES (hodnoty)
INGEST LIST
INGEST SET parametr value
Výkon
Zlepšení paralelizace a výkonu databáze
DB2 10.1 zrychlila zpracování některých SQL dotazů a administrátorských úloh díky několika novým vlastnostem.
- Zavedení nového operátoru PED (Partial early distinct), který v prvních krocích zpracování SQL dotazu pomocí hash funkce částečně eliminuje duplicity.
- Zavedení nového operátoru PEA (Partial early Aggregation), který v prvních krocích zpracování SQL dotazu pomocí hash funkce provádí částečné agregace.
- Optimalizátor nevyžaduje pro používání Hash join totožné datové typy a lze použít i pro spojení s některými výrazy.
- Intra paralelismus lze individuálně zapínat pro každou aplikaci a není třeba ho zapínat pro celou instanci.
- V rámci intra paralelismu se zlepšil load balacing mezi jednotlivými subagenty.
- Při čtení dat z tablespace DB2 používá nově smart prefetching. Při správném fyzickém seřazení dat se používá původní sekvenční prefetching. Pokud nejsou data optimálně seřazena, jsou data přednačítána pomocí nového Readahed prefetching.
- Při používání indexů se může vyskytnout výkonový problém zvaný Index gap, který vzniká, pokud index není zcela optimalizovaný pro vytvořený index. Nová funkce Jump scan umožňuje automatické přeskakování děr v indexu a zvyšuje tak rychlost zpracování SQL dotazů.
- Při vyhodnocování SQL dotazů v datových skladech DB2 nově lépe detekuje schémata typu hvězda a pro jejich vyhodnocení může používat nové zig-zag spojení.
- Byl zlepšen algoritmus pro práci se statistickými pohledy, kdy optimalizátor dokáže používat statistické informace z více obecných pohledů.
- Sběr statistiky nad indexy ve výchozím nastavení používá vzorkování.
SQL
Časové tabulky
Norma SQL 2011 zavadí novou funkcionalitu pro správu historických dat. Pokud je nad tabulkou zapnuto sledování historie, lze SQL dotaz pokládat k libovolnému časovému okamžiku. Například, jak vypadala tabulka zaměstnanců před rokem.
Časové tabulky mohou být tří typů
- Systémové - DB2 všechny aktualizace (UPDATE, DELETE) ukládá s časem změny do historické tabulky a vytváří tak kompletní historii změn. SQL dotaz vrací hodnoty, které byly aktuální v daný čas. Lze se tedy pohybovat v současnosti a minulosti.
- Aplikační - u každého záznamu aplikace nebo uživatel uloží časové rozmezí odkdy dokdy je záznam validní. Lze tedy například do tabulky uložit budoucí záznamy, které se stanou validními až někdy v budoucnu. Nikde se automaticky nezaznamenává historie změn.
- Obojetné - spojení funkcionalit předchozích dvou typů tabulek
CREATE TABLE STAFF_TIME (ID INT, NAME VARCHAR (20), SALARY DECIMAL(8,2), SYS_START TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN, SYS_END TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END, TS_ID TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS TRANSACTION START ID, PERIOD SYSTEM_TIME (SYS_START, SYS_END))
CREATE TABLE STAFF_HISTORY LIKE STAFF_TIME
ALTER TABLE STAFF_TIME ADD VERSIONING USE HISTORY TABLE STAFF_HISTORY
SELECT * FROM STAFF_TIME FOR SYSTEM_TIME AS OF CURRENT TIMESTAMP – 10 MINUTES
CREATE TABLE STAFF_TIME (ID INT, NAME VARCHAR (20), SALARY DECIMAL(8,2), VALID_START DATE NOT NULL, VALID_END DATE NOT NULL, PERIOD BUSINESS_TIME (VALID_START, VALID_END)) PRIMARY KEY (ID, BUSINESS_TIME WITHOUT OVERLAPS)
SELECT * FROM STAFF_TIME FOR BUSINESS_TIME AS OF '2012-02-28-09.10.12.649592000000'
Skryté sloupce
DB2 10.1 zavadí skryté sloupce. Při definici tabulky lze u každého sloupce uvést klauzule IMPLICITLY HIDDEN.
Sloupec se pak nepoužívá při příkazech
- SELECT *
- INSERT INTO table VALUES
- IMPORT, LOAD, INGEST
Aby šlo sloupce používat, musí se explicitně uvést do výše zmíněných příkazů.
Triggry
Nově lze vytvořit jeden trigger, který bude obsahovat všechny tři operace INSERT, UPDATE a DELETE.
CREATE TRIGGER HIRED AFTER INSERT OR DELETE OR UPDATE OF SALARY ON EMPLOYEE
REFERENCING NEW AS N OLD AS O FOR EACH ROW
BEGIN
IF INSERTING
THEN UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1;
END IF;
IF DELETING
THEN UPDATE COMPANY_STATS SET NBEMP = NBEMP – 1;
END IF;
IF (UPDATING AND (N.SALARY > 1.1 * O.SALARY))
THEN SIGNAL SQLSTATE '75000' SET MESSAGE_TEXT = 'Salary increase>10%'
END IF;
END@
Bezpečnost
Row and Column Access Control
V předchozích verzích přidělování práv pomocí štítků LBAC vyžadovalo dodatečnou licenci. Nyní je pro všechny edice DB2 volně dostupné.
Nově bylo přidáno přidělování práv pomocí RCAC, které je v porovnání proti LBAC mnohem jednodušší.
Přístupová práva lze přidělovat až na úroveň konkrétních řádků a sloupců. Pro práci s danými řádky je potřeba správné oprávnění. Hodnoty sloupců, na které nemá uživatel právo, jsou maskovány pomocí uživatelsky definovaného výrazu (například NULL).
Ochrana řádků
CREATE OR REPLACE PERMISSION STAFF_MANAGER ON STAFF_RCAC FOR ROWS WHERE ( JOB not like 'Mgr%') OR (JOB like 'Mgr%' AND VERIFY_ROLE_FOR_USER (SESSION_USER,'STAFF_MANAGER') = 1) ENFORCED FOR ALL ACCESS ENABLE
ALTER TABLE STAFF_RCAC ACTIVATE ROW ACCESS CONTROL
CREATE ROLE STAFF_MANAGER
GRANT ROLE STAFF_MANAGER TO USER db2adm
Ochrana sloupců
CREATE MASK STAFF_SALARY_MASK ON STAFF_RCAC FOR COLUMN SALARY RETURN CASE WHEN VERIFY_ROLE_FOR_USER(SESSION_USER,'HR') = 1 THEN SALARY ELSE NULL END ENABLE
CREATE MASK STAFF_COMM_MASK ON STAFF_RCAC FOR COLUMN COMM RETURN CASE WHEN VERIFY_ROLE_FOR_USER(SESSION_USER,'HR') = 1 THEN COMM ELSE NULL END ENABLE
ALTER TABLE STAFF_RCAC ACTIVATE COLUMN ACCESS CONTROL
CREATE ROLE HR
GRANT ROLE HR TO USER INST1
Zrušené funkce
Control Center
DB2 10.1 zcela zrušila staré uživatelské prostředí Control Center a navazující nástroje.
Náhradou je volně stažitelné prostředí Optim Data studio, které je založené na platformě Eclipse a umožňuje spravovat a vývíjet aplikace nad různými relačními databázemi jako je DB2, Informix, Sybase, MySQL, Oracle, SQL Server.
Data Studio je dostupné ve dvou verzích Administration client určený pouze pro administraci a Full client určený i pro vývoj.
Query patroller
Query patroller byl nahrazen Workload Managerem.