ual'nyj processor vybiraet iz ocheredi gotovyh ocherednoj potok s naivysshim prioritetom. Kak pravilo, OnLine DS stremitsya vypolnyat' potok na odnom i tom zhe virtual'nom processore, poskol'ku peredacha ego drugomu processoru trebuet peresylki nekotorogo ob容ma dannyh. Tem ne menee, esli potok gotov k vypolneniyu, on mozhet byt' prodolzhen drugim processorom, s cel'yu isklyucheniya prostoev i obespecheniya obshchego balansa zagruzki.
2.2.1.5 |konomiya pamyati i drugih resursov
Racional'noe ispol'zovanie resursov operacionnoj sistemy dostigaetsya za schet togo, chto potoki razdelyayut resursy (pamyat', kommunikacionnye porty, fajly) virtual'nogo processora, na kotorom oni vypolnyayutsya. Virtual'nyj processor sam koordiniruet dostup potokov k svoim resursam. Processy zhe, v otlichie ot potokov, imeyut individual'nye nabory resursov, i, esli resurs trebuetsya neskol'kim processam, to dostup k nemu reguliruetsya operacionnoj sistemoj.
Pereklyuchenie virtual'nogo processora s odnogo potoka na drugoj, v celom, proishodit bystree, chem pereklyuchenie operacionnoj sistemy s odnogo processa na drugoj. Operacionnaya sistema dolzhna prervat' odin process, vypolnyaemyj central'nym processorom, sohranit' ego tekushchee sostoyanie (kontekst) i zapustit' drugoj process, predvaritel'no pomestiv v yadro ego kontekst, chto trebuet fizicheskoj perezapisi fragmentov pamyati. Poskol'ku potoki razdelyayut virtual'nuyu pamyat' i deskriptory fajlov, to pereklyuchenie virtual'nogo processora s potoka na potok mozhet svodit'sya k perezapisi nebol'shogo upravlyayushchego bloka potoka, chto sootvetstvuet vypolneniyu primerno 20 mashinnyh komand. Pri etom virtual'nyj processor kak process operacionnoj sistemy prodolzhaet vypolnyat'sya bez preryvaniya.
2.2.2 Organizaciya razdelyaemoj pamyati
Razdelyaemaya pamyat' - eto mehanizm operacionnoj sistemy, na kotorom osnovano razdelenie dannyh mezhdu virtual'nymi processorami i potokami servera. Razdelenie dannyh pozvolyaet:
Upravlenie razdelyaemoj pamyat'yu realizovano takim obrazom, chto ee fragmentaciya minimiziruetsya, poetomu proizvoditel'nost' servera pri ee ispol'zovanii ne degradiruet s techeniem vremeni. Iznachal'no vydelennye segmenty razdelyaemoj pamyati narashchivayutsya po mere nadobnosti avtomaticheski ili vruchnuyu. Pri osvobozhdenii pamyati, zanyatoj serverom, ona vozvrashchaetsya operacionnoj sisteme.
V razdelyaemoj pamyati nahoditsya informaciya obo vseh vypolnyaemyh potokah, poetomu potoki otnositel'no bystro pereklyuchayutsya mezhdu virtual'nymi processorami. V chastnosti, v razdelyaemoj pamyati vydelyaetsya oblast' stekov potokov. Stek hranit dannye dlya funkcij, vypolnyaemyh potokom, i druguyu informaciyu o sostoyanii pol'zovatel'skogo seansa. Razmer steka dlya kazhdogo seansa ustanavlivaetsya pri pomoshchi peremennoj okruzheniya.
Vazhnyj optimiziruyushchij mehanizm servera - keshi hranimyh procedur i slovarej dannyh. Slovari dannyh (system catalog), dostupnye tol'ko na chtenie, a takzhe hranimye procedury, razdelyayutsya mezhdu vsemi pol'zovatelyami servera, chto pozvolyaet optimizirovat' sovokupnoe ispol'zovanie pamyati. Pri zagruzke v razdelyaemuyu pamyat' slovar' dannyh zapisyvaetsya v struktury, obespechivayushchie bystryj dostup k informacii, a hranimye procedury preobrazuyutsya v vypolnyaemyj format. Vse eto mozhet sushchestvenno uskorit' vypolnenie prilozhenij, obrashchayushchihsya ko mnogim tablicam s bol'shim chislom stolbcov i/ili ko mnogim hranimym proceduram.
2.2.3 Organizaciya operacij obmena s diskami
Operacii vvoda-vyvoda, kak pravilo, obrazuyut naibolee medlennuyu komponentu obrabotki baz dannyh. Poetomu ot ih realizacii sushchestvenno zavisit obshchaya produktivnost' servera. Dlya optimizacii vvoda-vyvoda i povysheniya nadezhnosti v servere INFORMIX-OnLine DS primenyayutsya sleduyushchie mehanizmy:
2.2.3.1 Upravlenie diskovoj pamyat'yu
INFORMIX-OnLine DS podderzhivaet kak sobstvennyj mehanizm upravleniya diskovoj pamyat'yu, tak i upravlenie sredstvami fajlovoj sistemy OS UNIX. Preimushchestva sobstvennogo mehanizma upravleniya diskovoj pamyat'yu:
Fajlovuyu sistemu ispol'zuyut v situaciyah, kogda net vozmozhnosti vydelit' pod bazy dannyh special'nye razdely na diskah, ili esli perechislennye soobrazheniya ne kritichny.
2.2.3.2 Asinhronnyj vvod-vyvod
Dlya uskoreniya operacij vvoda-vyvoda server ispol'zuet sobstvennyj paket asinhronnogo vvoda-vyvoda (AIO) ili paket asinhronnogo vvoda-vyvoda yadra OS (KAIO), esli on dostupen. Pol'zovatel'skie zaprosy na vvod-vyvod obrabatyvayutsya asinhronno, poetomu virtual'nym processoram CPU ne prihoditsya zhdat' zaversheniya operacii obmena, chtoby prodolzhit' obrabotku.
2.2.3.3 Operezhayushchee chtenie
Server OnLine DS mozhet byt' skonfigurirovan takim obrazom, chtoby pri chtenii posledovatel'noj tablicy ili indeksnogo fajla obespechivalos' operezhayushchee chtenie neskol'kih stranic v to vremya, poka obrabatyvayutsya uzhe prochitannye v razdelyaemuyu pamyat' dannye. Takim obrazom, sokrashchaetsya vremya ozhidaniya obmena s diskom, i pol'zovatel' bystree poluchaet rezul'taty zaprosa.
2.2.4 Podderzhka fragmentacii tablic i indeksov
INFORMIX-OnLine DS podderzhivaet gorizontal'nuyu lokal'nuyu fragmentaciyu tablic. |to takoj sposob hraneniya tablicy, kogda sovokupnost' ee strok razbivaetsya na neskol'ko grupp soglasno nekotoromu pravilu, i eti gruppy hranyatsya na raznyh diskovyh razdelah. Fragmentaciya tablic sposobstvuet dostizheniyu sleduyushchih celej:
Ris.3. Operacii chteniya-zapisi fragmentirovannoj tablicy vypolnyayutsya parallel'no, v rezul'tate vremya obrabotki sokrashchaetsya proporcional'no chislu fragmentov.
Razlichayutsya dva tipa pravil fragmentacii tablic:
Pravilo razbieniya tablicy zadaetsya v SQL-instrukciyah
CREATE TABLE (sozdat' tablicu), ALTER TABLE (izmenit' tablicu). Primer:
CREATE TABLE account ...
FRAGMENT BY EXPRESSION
id_num > 0 AND id_num <= 20 IN dbsp1
id_num >20 AND id_num <= 40 IN dbsp2
REMAINDER IN dbsp3
Zdes' dbsp1, dbsp2, dbsp3 - imena oblastej diskovogo prostranstva, vydelennogo pod BD.
INFORMIX-OnLine DS podderzhivaet takzhe fragmentaciyu indeksov. Razlichayutsya dva vida fragmentacii indeksov - zavisimaya (sootvetstvuyushchaya fragmentacii tablicy) i nezavisimaya. Fragmentirovannoj tablice mozhet sootvetstvovat' nefragmentirovannyj indeks. Sozdanie indeksa s pravilom fragmentacii, ne sovpadayushchim s pravilom fragmentacii tablicy, polezno v teh sluchayah, kogda v raznyh prilozheniyah vyborki iz tablicy osushchestvlyayutsya na osnove raznyh podmnozhestv ee atributov.
Strategiya fragmentacii tablic i indeksov vybiraetsya v zavisimosti ot celi, kotoraya presleduetsya, ot struktury tablicy i haraktera zaprosov k nej. Razlichnye strategii podrobno opisany v dokumentacii. Naprimer, esli osnovnoj cel'yu yavlyaetsya umen'shenie konkurencii pri odnovremennom dostupe k tablice, to optimal'noj budet fragmentaciya tablicy po diapazonam znacheniya klyucha (ili drugogo stolbca, na osnove kotorogo proizvoditsya osnovnoj dostup k tablice) i zavisimaya fragmentaciya indeksa.
INFORMIX-OnLine DS predostavlyaet sredstva nablyudeniya, pozvolyayushchie ocenit' effektivnost' fragmentacii tablic i indeksov po sleduyushchim parametram:
Esli nablyudeniya pokazyvayut, chto vybrannaya strategiya ne udovletvoryaet postavlennoj celi, to pravila fragmentacii mogut byt' izmeneny dinamicheski, bez ostanovki servera.
Vazhno, chto fragmentaciya tablic i indeksov prozrachna dlya prilozhenij, rabotayushchih s bazoj dannyh. Izmenenie pravila fragmentacii ne trebuet nikakih izmenenij v prikladnyh sistemah - ono lish' povyshaet (ili snizhaet) skorost' i ekonomichnost' ih vypolneniya.
2.2.5 Parallel'naya obrabotka zaprosov
Parallel'naya obrabotka zaprosov (Parallel Data Query, PDQ) - eto tehnologiya, kotoraya pozvolyaet raspredelit' obrabotku odnogo slozhnogo zaprosa na neskol'ko processorov, mobilizovat' dlya ego vypolneniya maksimal'no dostupnye sistemnye resursy, vo mnogo raz sokrashchaya vremya polucheniya rezul'tata. Osnovnye tipy zadanij, na kotoryh proyavlyaetsya effekt tehnologii PDQ:
Prakticheski eto oznachaet, chto otchet ili otvet na slozhnyj zapros, ot kotorogo zavisit prinyatie otvetstvennogo resheniya, mozhno poluchit' ne zavtra (posle nochnoj obrabotki), a neposredstvenno vo vremya obychnoj operativnoj dnevnoj raboty. Snimayutsya problemy, svyazannye s obrabotkoj i obsluzhivaniem (arhivirovaniem, kopirovaniem) ochen' bol'shih tablic - blagodarya fragmentacii, parallel'noj obrabotke i vozmozhnostyam vypolneniya administrativnyh dejstvij v operativnom rezhime. V rezul'tate rasshiryaetsya klass potencial'nyh prilozhenij, i, sootvetstvenno, krug pol'zovatelej, bolee gibkim stanovitsya rezhim raboty IS, prichem vse eto dostigaetsya ne na uzkospecializirovannyh, a na obychnyh shiroko rasprostranennyh apparatnyh platformah. Takim obrazom, mozhno govorit' o novom kachestve, kotoroe privnosit s soboj tehnologiya PDQ.
Maksimal'nye preimushchestva eta tehnologiya daet na mnogoprocessornyh platformah v usloviyah primeneniya fragmentacii tablic, gde vremya vypolneniya zaprosa sokrashchaetsya v desyatki raz; odnako vyigrysh v proizvoditel'nosti dostigaetsya i na odnoprocessornyh mashinah i nefragmentirovannyh tablicah za schet togo, chto dostup k diskam osushchestvlyaetsya parallel'no s drugimi vidami obrabotki, i za schet maksimal'no polnogo ispol'zovaniya pamyati.
2.2.5.1 Na chem osnovana tehnologiya PDQ
Realizaciya zaprosa sostoit iz otdel'nyh dejstvij - skanirovaniya, sortirovki, gruppirovaniya i dr. |ti dejstviya nazyvayutsya iteratorami. Iteratory obrazuyut derevo realizacii zaprosa v tom smysle, chto rezul'taty vypolneniya odnih iteratorov yavlyayutsya ishodnymi dannymi dlya drugih. Pri obychnoj obrabotke iteratory vypolnyayutsya posledovatel'no. V osnove tehnologii PDQ lezhat sleduyushchie vidy optimizacii i regulirovaniya:
2.2.5.2 Iteratory
Iterator - eto programmnyj ob容kt, kotoryj osushchestvlyaet iterativnuyu (ciklicheskuyu) obrabotku nekotorogo mnozhestva dannyh. Iteratory razlichayutsya tipom proizvodimoj obrabotki, no imeyut edinoobraznyj vneshnij interfejs (ris. 4). Kazhdyj iterator otkryvaet odin (ili bolee) vhodnyh potokov dannyh (data flow), posledovatel'no schityvaet ih i, posle obrabotki, pomeshchaet rezul'taty v vyhodnoj potok. Iteratoru bezrazlichen istochnik vhodnogo potoka i naznachenie vyhodnogo potoka - eto mozhet byt' disk, drugoj iterator, setevoe soedinenie. My budem govorit' o postavshchikah i potrebitelyah potokov dannyh. Nizhe perechisleny tipy iteratorov, primenyaemye v INFORMIX-OnLine DS:
Ris. 4. Rabota iteratora ne zavisit ot istochnikov vhodnyh dannyh. Vyvod postupaet ob容ktu, kotoryj vyzval iterator.
SCAN - Skaniruet fragmentirovannye i nefragmentirovannye tablicy i indeksy.
NESTED LOOP JOIN - Realizuet standartnuyu logiku soedinenij metodom vlozhennyh ciklov (chitaet stroku iz odnoj tablicy, nahodit vse sovpadeniya vo vtoroj tablice, chitaet sleduyushchuyu stroku iz pervoj tablicy i t. d.).
MERGE JOIN - Vypolnyaet fazu sliyaniya dlya soedineniya metodom sortirovki i sliyaniya.
HASH JOIN - Realizuet novyj metod soedinenij s heshirovaniem. Dlya odnoj iz dvuh soedinyaemyh tablic stroitsya hesh-tablica, vtoraya tablica zondiruetsya. Optimizator reshaet, kakaya iz tablic budet heshirovat'sya.
GROUP - Gruppiruet dannye (GROUP BY) i vychislyaet agregatnye funkcii.
SORT - Sortiruet dannye.
MERGE - Vypolnyaet ob容dineniya UNION i UNION ALL (dlya UNION ispol'zuetsya kombinaciya iteratorov MERGE i SORT).
REMOTE - Realizuet udalennye skanirovaniya dlya operatorov SELECT.
Iterator kak programmnyj ob容kt sostoit iz staticheskih i dinamicheskih struktur dannyh. Staticheskaya struktura soderzhit ssylki na funkcii (ili metody), primenimye k iteratoru. Dinamicheskaya struktura soderzhit informaciyu o tekushchem sostoyanii iteratora (otkryt, zakryt, vypolnyaet ocherednuyu iteraciyu), odnu ili dve ssylki na postavshchikov.
Metody iteratora
CREATE() - Sozdaet iterator. Vydelyaet pamyat' dlya iteratora, inicializiruet ego struktury, a takzhe ostal'nye metody (open(), next(), close(), free()), t.e. ustanavlivaet ssylki na funkcii, sootvetstvuyushchie dannomu tipu iteratora. Zatem vyzyvaet metod create() dlya svoih iteratorov-postavshchikov, kotorye sozdadut svoih postavshchikov, esli takovye imeyutsya, i t. d. Takim obrazom, vyzov metoda create() dlya kornevogo iteratora privodit k sozdaniyu vsego dereva iteratorov.
OPEN() - Zapuskaet iterator. Vypolnyayutsya specificheskie dlya dannogo tipa iteratora inicializiruyushchie dejstviya, vozmozhno, zapros dopolnitel'noj pamyati. Naprimer, pri zapuske iteratora skanirovaniya opredelyaetsya, kakie fragmenty neobhodimo skanirovat', ustanavlivaetsya ukazatel' na pervyj iz nih, sozdaetsya vremennaya tablica (esli ona nuzhna), posylaetsya soobshchenie
MGM (MGM - komponenta servera, kotoraya reguliruet vydelenie resursov pod zaprosy, obrabatyvaemye sredstvami PDQ; sm. ob etom nizhe, p. "Balans mezhdu OLTP i DSS-prilozheniyami") o zapuske potoka skanirovaniya. Dalee primenyaetsya metod open() po otnosheniyu k postavshchikam iteratora, kotorye primenyat ego k svoim postavshchikam i t.d. Takim obrazom, dlya zapuska vsego dereva iteratorov dostatochno primenit' metod open() k kornevomu iteratoru.
NEXT() - Vypolnyaet odnu iteraciyu. Vypolnenie nachinaetsya s togo, chto iterator primenyaet metod next() k svoim postavshchikam, zastavlyaya ih takzhe primenit' next() k svoim postavshchikam i t. d., poka ne srabotayut iteracii postavshchikov nizhnego urovnya. Zatem dannye podnimayutsya snizu vverh - kazhdyj iterator, poluchiv dannye ot svoego postavshchika, primenyaet k nim svoj specificheskij vid obrabotki i peredaet rezul'tat svoemu potrebitelyu. Metod next() primenyaetsya ciklicheski, poka ne postupit priznak konca potoka dannyh.
CLOSE() - Zakryvaet iterator. Vysvobozhdaet pamyat', vydelennuyu pri zapuske. Fakticheski, eta pamyat' mogla uzhe byt' vysvobozhdena metodom next(), kogda on poluchil priznak konca dannyh, poskol'ku obshchij princip sostoit v tom, chtoby osvobozhdat' pamyat' srazu zhe, kak tol'ko ona stanovitsya ne nuzhna. Odnako, eto ne vsegda vozmozhno. Poetomu na metod close() vozlagaetsya otvetstvennost' za to, chtoby pamyat' v lyubom sluchae byla osvobozhdena.
Metod close() rekursivno primenyaetsya k postavshchikam, tem samym, zakryvaetsya vse derevo iteratorov.
FREE() - Osvobozhdaet iterator. Vysvobozhdaet pamyat', vydelennuyu pri sozdanii. Primenyaet free() k postavshchikam, takim obrazom, osvobozhdaetsya vse derevo iteratorov.
Blagodarya edinoobraziyu interfejsa, iteratory raznyh tipov mogut soedinyat'sya drug s drugom proizvol'nym obrazom (ris. 5). Iterator ne zabotitsya o tom, kakoj tip imeyut ego postavshchiki, poskol'ku on vzaimodejstvuet s nimi tol'ko posredstvom metodov. Iz opisaniya metodov sleduet, chto zapusk dereva, sostavlennogo iz iteratorov, realizuet ih parallel'noe vypolnenie. Dlya kazhdogo iteratora sozdaetsya potok vypolneniya, kotoryj prodvigaetsya po mere togo, kak poluchaet dannye ot svoih postavshchikov. Takim obrazom v servere realizuetsya vertikal'nyj parallelizm - odnovremennoe, konvejernoe vypolnenie razlichnyh iteratorov.
Ris. 5. Iteratory vypolnyayutsya parallel'no, kazhdyj mozhet prodvigat'sya po mere togo, kak postupayut dannye ot ego postavshchikov.
Drugoj vid parallelizma - gorizontal'nyj - zaklyuchaetsya v tom, chto vmesto odnogo iteratora (naprimer, skanirovaniya) sozdaetsya neskol'ko odnotipnyh parallel'no vypolnyaemyh iteratorov. Gorizontal'nyj parallelizm realizuetsya pri pomoshchi iteratorov special'nogo vida - iteratorov obmena (EXCHANGE). Posle togo, kak derevo realizacii zaprosa postroeno, optimizator opredelyaet, kakie ego komponenty imeet smysl rasparallelit'. Nad takoj komponentoj vstavlyaetsya iterator EXCHANGE. Iterator EXCHANGE sozdaet i zapuskaet neskol'ko ekzemplyarov svoego postavshchika, obespechivaet koordinaciyu postupayushchih ot nih potokov dannyh i ih peredachu svoemu potrebitelyu. Peredacha dannyh osushchestvlyaetsya v etom sluchae ne cherez vhody potrebitelya, a cherez ocheredi paketov v razdelyaemoj pamyati.
Stepen' i naibolee optimal'nye sposoby primeneniya vertikal'nogo i gorizontal'nogo parallelizma dlya kazhdogo konkretnogo zaprosa opredelyaetsya optimizatorom. Optimizator prinimaet resheniya, ishodya iz znachenij parametrov konfiguracii, ustanavlivaemyh administratorom, pol'zovatelem i klientskim prilozheniem, a takzhe s uchetom nekotoryh vnutrennih soobrazhenij, takih kak chislo nalichnyh processorov, fragmentaciya uchastvuyushchih v zaprose tablic, slozhnost' zaprosa i t. d.
Rezul'taty testov pokazyvayut, chto mehanizmy PDQ i optimizacii INFORMIX-OnLine DS obespechivayut s uvelicheniem chisla processorov prakticheski proporcional'nyj rost proizvoditel'nosti.
2.2.5.3 Primery primeneniya parallelizma
Parallel'naya sortirovka
Sortirovka - eto fundamental'naya operaciya obrabotki baz dannyh, primenyaemaya pri vypolnenii takih dejstvij, kak postroenie indeksov, soedinenie metodom sortirovki i sliyaniya, gruppirovanie; poetomu uskorenie sortirovki uluchshaet kachestvo mnogih prilozhenij.
Pri parallel'noj sortirovke sovokupnost' dannyh razbivaetsya na sekcii, kotorye peredayutsya dlya sortirovki neskol'kim processoram. Zatem vypolnyaetsya sliyanie otsortirovannyh sekcij.
Na praktike skorost' sortirovki ogranichivaetsya vremenem skanirovaniya dannyh iz tablic. |to ogranichenie v znachitel'noj mere snimaetsya primeneniem PDQ-algoritmov parallel'nogo skanirovaniya.
Parallel'noe skanirovanie
Operacii postroeniya indeksov, soedinenij, podgotovki otchetov, neobhodimye v bol'shinstve prilozhenij, trebuyut skanirovaniya bol'shih ob容mov dannyh, esli v nih uchastvuyut bol'shie tablicy. Tehnologiya PDQ pozvolyaet sushchestvenno snizit' vremya skanirovaniya. Esli tablica fragmentirovana, to sekcii skaniruyutsya parallel'no, pri etom vyigrysh vo vremeni primerno proporcionalen chislu diskov. Pri skanirovanii posledovatel'nyh tablic ili indeksov primenyaetsya konfiguraciya servera OnLine DS s operezhayushchim chteniem - vremya otklika sokrashchaetsya za schet togo, chto chtenie ocherednyh stranic idet parallel'no s obrabotkoj uzhe prochitannyh.
Parallel'noe postroenie indeksov
Procedura postroeniya indeksa nachinaetsya s ocenki ob容ma dannyh i opredeleniya chisla potokov, neobhodimyh dlya ih skanirovaniya. Zatem vypolnyaetsya parallel'noe skanirovanie dannyh s primeneniem, tam, gde eto vozmozhno, operezhayushchego chteniya. Schitannye dannye pomeshchayutsya v uchastki razdelyaemoj pamyati, i zapuskaetsya parallel'naya sortirovka uchastkov, dlya kazhdogo iz kotoryh stroitsya Vpodderevo; zatem iz nih formiruetsya obshchij indeks. Potoki sortirovki nachinayut vypolnyat'sya, ne dozhidayas' zaversheniya vseh potokov skanirovaniya, tochno tak zhe, potok postroeniya indeksa ne ozhidaet zaversheniya vseh potokov sortirovki - vse, chto mozhno, vypolnyaetsya parallel'no. V rezul'tate dostigaetsya uskorenie, vplot' do desyatikratnogo, po sravneniyu s posledovatel'nymi metodami postroeniya indeksov - v zavisimosti ot ob容mov dannyh, chisla ispol'zuemyh diskov i dostupnoj pamyati.
2.2.5.4 Balans mezhdu OLTP i DSS-prilozheniyami
V sovremennyh informacionnyh sistemah, kak pravilo, trebuetsya odnovremennoe vypolnenie raznyh po harakteru zaprosov k baze dannyh. Vydelyayutsya prilozheniya obrabotki dannyh tipa OLTP, DSS i paketnoj obrabotki.
Primer OLTP-zaprosa: Est' li svobodnyj nomer v kakoj-libo berlinskoj gostinice na 8-e dekabrya?
Primer DSS-zaprosa: Kakovy budut zatraty na realizaciyu strategii X ohrany zdorov'ya sotrudnikov po sravneniyu so strategiej Y s uchetom demograficheskogo profilya kompanii? Zavisit li effektivnost' strategii ot regiona?
Primerami zadanij paketnoj obrabotki mogut sluzhit' massovaya zagruzka dannyh, vydacha bol'shih slozhnyh otchetov, vypolnenie nekotoryh administrativnyh dejstvij, naprimer, po reorganizacii bazy dannyh.
Otvety na zaprosy pervogo tipa dolzhny vydavat'sya prakticheski mgnovenno, zaprosy vtorogo i tret'ego tipov mogut obsluzhivat'sya dostatochno dolgo, no pri otsutstvii ili maloj intensivnosti OLTP-prilozhenij zhelatel'no poluchat' otvety na DSS-zaprosy maksimal'no bystro.
Tehnologiya PDQ ispol'zuetsya v osnovnom dlya bystrogo vypolneniya DSS-zaprosov i paketnyh prilozhenij. Esli ee primenenie nichem ne ogranicheno, to sil'no rasparallelennoe vypolnenie neskol'kih slozhnyh zaprosov privodit k nedopustimomu zamedleniyu OLTP-prilozhenij, vypolnyayushchihsya na tom zhe servere. Upravlenie stepen'yu rasparallelivaniya zaprosov i dolej sistemnyh resursov, vydelyaemyh dlya PDQ-obrabotki, v srede INFORMIX-OnLine DS osushchestvlyaetsya pri pomoshchi neskol'kih parametrov konfigurirovaniya i peremennyh okruzheniya, znacheniya kotoryh dinamicheski nastraivaemy. Znacheniya etih parametrov i peremennyh ustanavlivayutsya sistemnymi administratorami i, v opredelennoj stepeni, prikladnymi programmistami i pol'zovatelyami.
Programmist ili pol'zovatel' zadaet tip kazhdogo zaprosa (obychnyj ili PDQ) i zhelaemuyu stepen' rasparallelivaniya dlya PDQ-zaprosov. Administrator, so svoej storony, dinamicheski ogranichivaet maksimal'nuyu dopustimuyu stepen' rasparallelivaniya PDQ-zaprosov, a takzhe opredelyaet dolyu sistemnyh resursov, vydelyaemyh pod obrabotku PDQ-zaprosov. Parallel'naya sortirovka primenyaetsya dlya lyubyh zaprosov, v tom chisle, obychnyh.
Takim obrazom, rezhim raboty servera INFORMIX-OnLine DS mozhet dinamicheski izmenyat'sya. V chasy naibolee aktivnoj raboty prilozhenij OLTP zaprosy DSS vypolnyayutsya bez rasparallelivaniya (kogda dlya kazhdogo zaprosa sozdaetsya vsegda tol'ko odin potok klassa CPU) ili s nevysokoj stepen'yu rasparallelivaniya. V ostal'noe vremya, ili na serverah, gde prilozheniya OLTP otsutstvuyut, ustanavlivaetsya maksimal'naya stepen' ispol'zovaniya PDQ.
Sobstvenno raspredeleniem resursov i prioritetov v sootvetstvii s ustanovlennymi znacheniyami zanimaetsya special'naya komponenta servera OnLine DS - Menedzher vydeleniya pamyati (Memory Grant Manager - MGM). Menedzher vydeleniya pamyati reguliruet ob容m sistemnyh resursov, potreblyaemyh PDQ-zadaniyami, a takzhe:
2.2.6 Optimizator vypolneniya zaprosov po stoimosti
Optimizator zaprosov opredelyaet naibolee optimal'nyj s tochki zreniya zatrat sistemnyh resursov plan realizacii kazhdogo zaprosa k baze dannyh. Uchityvaetsya chislo obmenov s diskom, zatraty razdelyaemoj pamyati, zatraty na peresylku dannyh po seti i dr. Plan mozhet vklyuchat' parallel'noe vypolnenie operacij ili byt' strogo posledovatel'nym, chto zavisit kak ot struktury zaprosa, tak i ot resursov, vydelyaemyh MGM. Optimizator opiraetsya na statisticheskuyu informaciyu o raspredelenii dannyh po stolbcam tablic, periodicheskim sborom kotoroj upravlyaet administrator.
Naprimer, esli trebuetsya vypolnit' soedinenie dvuh tablic, nahodyashchihsya v raznyh uzlah seti, to optimizator splaniruet etu operaciyu takim obrazom, chto men'shaya po ob容mu tablica budet peredana na server, soderzhashchij bol'shuyu tablicu, gde i budet vypolneno soedinenie (ne obyazatel'no vypolnyat' ego na tom servere, k kotoromu proizvedeno pervoe podklyuchenie). Dopolnitel'naya optimizaciya dostigaetsya za schet fil'tracii tablicy pered ee peresylkoj, t. e. iz座atiya iz nee ne uchastvuyushchih v dannoj operacii soedineniya strok i/ili stolbcov.
Optimizator daet vozmozhnost' razrabotchiku predvaritel'no poluchit' plan vypolneniya zaprosa, v tom chisle, raspredelennoj tranzakcii. Poluchiv takoj plan, razrabotchik mozhet vyyasnit', chto ne raspolagaet dostatochnoj pamyat'yu, chtoby sohranit' poluchennye v rezul'tate dannye, ili chto vypolnenie zaprosa potrebuet slishkom bol'shih zatrat sistemnyh resursov. V takoj situacii on libo otlozhit vypolnenie zaprosa na drugoe vremya, libo pereformuliruet zapros tak, chtoby suzit' ob容m vozvrashchaemyh dannyh, libo primet kakoe-to drugoe reshenie.
Prikladnoj programmist ili pol'zovatel' ustanavlivaet odin iz dvuh vozmozhnyh urovnej optimizacii - vysokij ili nizkij. Vysokij uroven' optimizacii predpolagaet perebor bol'shogo chisla vozmozhnyh variantov i sam trebuet bol'shih zatrat sistemnyh resursov, v chastnosti, pamyati. Optimizaciya nizkogo urovnya obhoditsya deshevle, poskol'ku perebiraetsya nebol'shoe chislo predpolozhitel'no optimal'nyh variantov, no ostaetsya veroyatnost' "upustit'" nailuchshij variant. Naprimer, plan vypolneniya hranimoj procedury vychislyaetsya zaranee s vysokim urovnem optimizacii i sohranyaetsya, posle chego ustanavlivaetsya nizkij uroven' - togda pri obrashchenii k procedure ispol'zuetsya postroennyj zaranee naibolee optimal'nyj plan.
2.2.7 Sredstva obespecheniya nadezhnosti
Server INFORMIX-OnLine DS predostavlyaet sleduyushchie sredstva dlya vosstanovleniya posle sboev i obespecheniya otkazoustojchivosti:
2.2.7.1 . Zerkalirovanie diskovyh oblastej
Zerkalirovanie v INFORMIX-OnLine DS - eto dublirovanie svyaznoj diskovoj oblasti, vydelennoj pod bazu dannyh, na takuyu zhe po razmeru oblast'. Ishodnaya oblast' nazyvaetsya pervichnoj, a ee kopiya - zerkal'noj. Celi, dlya kotoryh primenyaetsya zerkalirovanie - vysokaya gotovnost' i optimizaciya operacij chteniya.
Vysokaya gotovnost' dostigaetsya za schet togo, chto pri vyhode iz stroya diska, na kotorom nahoditsya pervichnaya oblast', server avtomaticheski prodolzhaet rabotu s ostavshimsya diskom bez perehoda servera v rezhim off-line. Vse operacii chteniya-zapisi proishodyat s zerkal'noj oblast'yu (pri uslovii, chto ona nahoditsya na drugom diske). Vosstanovlenie kopii na pervichnom diske posle ego vklyucheniya proizvoditsya v operativnom rezhime.
Zatraty na zerkalirovanie skladyvayutsya iz zatrat diskovogo prostranstva i zatrat na dopolnitel'nye operacii zapisi. V usloviyah, kogda imeetsya neskol'ko virtual'nyh processorov obmena s diskom, operacii zapisi na oba diska proizvodyatsya parallel'no, i zatraty vtorogo roda svodyatsya k minimumu. K tomu zhe oni kompensiruyutsya optimizaciej operacij chteniya, o kotoroj govoritsya nizhe.
V ideal'nom sluchae zerkalirovanie dolzhno byt' obespecheno dlya vseh oblastej bazy dannyh. Krajne zhelatel'no podderzhivat' zerkalirovanie dlya kritichnyh oblastej, sostavlyayushchih kornevoe prostranstvo bazy dannyh i prostranstva, gde hranyatsya logicheskij i fizicheskij zhurnaly. Pri vyhode iz stroya lyubogo iz nih, esli net zerkal'nogo dublya, server nemedlenno perevoditsya v rezhim off-line. Pri otkaze drugih nezerkaliruemyh oblastej nedostupnymi stanovyatsya tol'ko hranyashchiesya na nih tablicy ili fragmenty tablic - do zaversheniya procedury ih vosstanovleniya. Poetomu dlya naibolee kritichnyh tablic takzhe zhelatel'no podderzhivat' zerkalirovanie.
Optimizaciya operacij chteniya dostigaetsya za schet razbieniya (split read). Stranicy, otnosyashchiesya k nachal'noj polovine oblasti, chitayutsya s pervichnoj oblasti, a stranicy iz vtoroj poloviny - s zerkal'noj. V rezul'tate uskoryaetsya poisk stranicy na diske, poskol'ku maksimal'nyj probeg diskovyh golovok sokrashchaetsya vdvoe.
2.2.7.2 Tirazhirovanie
Tirazhirovanie - eto podderzhanie na drugoj vychislitel'noj ustanovke kopii ob容ktov bazy dannyh. V INFORMIX-OnLine DS realizovano prozrachnoe tirazhirovanie dannyh s osnovnogo servera baz dannyh na vtorichnyj (ili podderzhivayushchij) server, k kotoromu razreshen dostup tol'ko na chtenie i kotoryj mozhet nahodit'sya v drugom geograficheskom punkte. V etoj terminologii server, ne uchastvuyushchij v tirazhirovanii, nazyvaetsya standartnym.
Glavnaya cel' tirazhirovaniya v INFORMIX-OnLine DS - eto obespechenie vysokoj gotovnosti (High Availability Data Replication - HDR). V sluchae otkaza osnovnogo servera vtorichnomu serveru avtomaticheski ili vruchnuyu pridaetsya status standartnogo, s dostupom na chtenie i zapis' (ris. 6, ris. 7). Prozrachnoe perenapravlenie klientov pri otkaze osnovnogo servera ne podderzhivaetsya, no ono mozhet byt' realizovano v ramkah prilozhenij.
Ris. 6. Tirazhirovanie. Osnovnoj server dostupen na chtenie i zapis', vtorichnyj - tol'ko na chtenie.
Ris. 7. Kogda osnovnoj server vyhodit iz stroya, vtorichnyj perehodit v rezhim standartnogo servera i stanovitsya dostupen na chtenie i zapis'.
Posle vosstanovleniya osnovnogo servera, v zavisimosti ot znacheniya parametra konfiguracii, vybiraetsya odin iz dvuh vozmozhnyh scenariev:
Tirazhirovanie osushchestvlyaetsya putem peredachi informacii iz zhurnala tranzakcij (logicheskogo zhurnala) v bufer tirazhirovaniya osnovnogo servera, otkuda ona peresylaetsya v bufer tirazhirovaniya vtorichnogo servera. Takaya peresylka mozhet proishodit' libo v sinhronnom, libo v asinhronnom rezhime. Sinhronnyj rezhim garantiruet polnuyu soglasovannost' baz dannyh - ni odna tranzakciya, zafiksirovannaya na osnovnom servere, ne ostanetsya nezafiksirovannoj na vtorichnom, dazhe v sluchae sboya osnovnogo servera. Asinhronnyj rezhim ne obespechivaet absolyutnoj soglasovannosti, no uluchshaet rabochie harakteristiki sistemy.
Zerkalirovanie, kotoroe takzhe yavlyaetsya prozrachnym sredstvom podderzhaniya vysokoj gotovnosti, obespechivaet tol'ko kopirovanie diskovyh oblastej v predelah odnoj ustanovki servera INFORMIX-OnLine DS i zashchishchaet tol'ko ot diskovyh sboev. Mehanizm tirazhirovaniya obespechivaet podderzhanie polnoj udalennoj kopii baz dannyh i zashchishchaet ot vseh vidov otkazov, vklyuchaya polnyj krah odnoj iz ustanovok.
Pomimo obespecheniya otkazoustojchivoj raboty, tirazhirovanie daet sleduyushchie preimushchestva:
2.2.7.3 Bystroe vosstanovlenie pri vklyuchenii sistemy
Pri vklyuchenii server vsegda proveryaet, ne proizoshlo li poslednee vyklyuchenie sistemy avarijno. V etom sluchae baza dannyh ne razrushena, no mnozhestvo tranzakcij, vypolnyavshihsya v moment sboya, ostalis' v nezavershennom, nekorrektnom sostoyanii. Esli server vyyavil takuyu situaciyu, to on zapuskaet proceduru bystrogo vosstanovleniya, kotoraya obespechivaet vozvrat sistemy v korrektnoe sostoyanie.
2.2.7.4 Arhivirovanie i vosstanovlenie dannyh
INFORMIX-OnLine DS pozvolyaet sozdavat' arhivnye kopii dannyh, a v dal'nejshem fiksirovat' te izmeneniya, kotorye proizoshli na servere s momenta sozdaniya arhiva. Izmeneniya sohranyayutsya v fajlah zhurnala tranzakcij. Arhivnye lenty i lenty s kopiyami zhurnalov tranzakcij mogut zapisyvat'sya parallel'no s dostupom pol'zovatelej k serveru. Procedura vosstanovleniya sostoit iz dvuh shagov - schityvaniya dannyh iz arhivnoj kopii i primeneniya k nim teh izmenenij, kotorye byli zafiksirovany v zhurnalah tranzakcij.
V sostav servera INFORMIX-OnLine DS vhodit utilita OnArchive, predostavlyayushchaya razvitye i gibkie sredstva arhivirovaniya, kopirovaniya zhurnalov tranzakcij i vosstanovleniya informacii. Nizhe perechisleny osnovnye vozmozhnosti etoj utility:
2.2.8 Dinamicheskoe administrirovanie
V usloviyah, kogda bazy dannyh uvelichivayutsya v razmerah, stanovyatsya raspredelennymi i sluzhat osnovoj dlya osobo otvetstvennyh prilozhenij masshtaba predpriyatiya, kotorye dolzhny rabotat' kruglosutochno, vozrastaet rol' razvityh dinamicheskih sredstv administrirovaniya. |ti sredstva dolzhny pozvolyat' administratoram operativno sledit' za takimi harakteristikami raboty servera, kak ispol'zovanie pamyati i virtual'nyh processorov, ocheredi asinhronnogo vvoda-vyvoda, ocheredi paketnyh zadanij i prilozhenij DSS, nalichnoe diskovoe prostranstvo, effektivnost' shem fragmentacii i t. p. Esli kakie-to iz harakteristik neudovletvoritel'ny, to neobhodima vozmozhnost' dinamicheski, ne ostanavlivaya sistemy, izmenit' parametry konfiguracii ili zapustit' neobhodimye administrativnye utility.
Bol'shinstvo parametrov konfiguracii servera yavlyayutsya dinamicheski nastraivaemymi, ih mozhno izmenit', ne ostanavlivaya servera, pri pomoshchi utility ON-Monitor. Pomimo rassmotrennyh v