Paralelisme en Exadata

download Paralelisme en Exadata

of 8

description

P

Transcript of Paralelisme en Exadata

  • Processament en parallel: Consultes en parallel i paralelisme en Exadata

    en el SGDB Oracle

    1 IntroducciAquest document s un estudi genric sobre elparallelisme en una base de dades Oracle.Analitzarem com es comporta loptimitzador quan spossible realitzar execucions en parallel. Enscentrarem principalment en la execuci de SQL enparallel per estendrem l'estudi al comportament enun sistema Exadata.

    2 Processament en parallel Quan sexecuta una consulta SQL per defecte esexecutada en srie per un nic procs. Encara que elservidor on sexecuta la base de dades tinguidiverses CPU, la comanda SQL sexecuta noms enuna sola CPU. El propsit de processament enparallel s distribuir lexecuci duna nica consultaSQL en diverses CPUs. Sense processament enparallel, la execuci duna consulta SQL estrestringida per la quantitat de procs que una CPUpor realitzar.

    execuci d'un procs en srie

    Durant lexecuci duna consulta SQL es realitzauna operaci daccs que escaneja a un segmentsencer, independentment del rendiment del sistemade E/S, el temps de resposta est limitat per lacapacitat de processament que una sola CPU puguiutilitzar. Aquesta amplada de banda estcondicionada per limitacions de maquinari que

    existeix en la ruta daccs de dades entre la CPU iel disc i que no s pot utilitzar completament quanlexecuci s en srie.

    Quan el procs servidor est a la CPU no estaccedint a disc (laccs asncron s una excepci) iper aix no saprofita del rendiment total que elsistema de E/S por proporcionar.

    2.1 ArquitecturaLa finalitat del processament en parallel sdescompondre una tasca gran en diverses tasquesms petites. Aix respecte a lexecuci dunaconsulta SQL significa que es creen diversosparallel query slave processes que cooperen perexecutar la consulta.

    La coordinaci entre el processos slave s fa sota elcontrol del procs servidor associat a la sessi queexecuta la consulta SQL, per aix s anomenatquery coordinator.

    El query coordinator assigna una subtasca acadascun dels esclaus i recull i combina elsresultats parcials dels conjunts de dades assignats,tornant el resultat final al client que ha fet lapetici.

    execuci d'un procs en parallel

    En l'exemple anterior es pot veure quatre processosslave, sexecuten en diferents nuclis de CPU, i enaquest cas el temps de resposta ja no est limitatper la capacitat de processament duna nica CPU.

    1

  • En un escaneig en parallel com en la figura anterior,es distribueix el treball entre els processos esclaus enunitats de treball anomenats grnuls. Cada procsesclau, en un moment donat, treballa en un nicgrnul. Si existeixen ms grnuls que processosesclaus quan un procs esclau ha finalitzat en ungrnul, treballar en un altre fins que tots hagin estatprocessats. Existeixen dos tipus de grnuls:

    partition granule: s una partici osubpartici sencera. Aquest tipus de grnulsnoms es poden utilitzar amb segmentsparticionats.

    block range granule: s un rang de blocsdun segment definit dinmicament en tempsdexecuci (no en temps de parse).

    2.2 Comunicaci entre processosQuan la comunicaci entre processos t lloc, elprocs que envia les dades sanomena productor i elprocs que rep les dades sanomena consumidor. Perenviar dades, el productor escriu en una cuaanomenada table queue. Per rebre les dades elconsumidor llegeix de la taula. Depenent deloperaci executada pels productors o consumidors,les files es distribueixen utilitzant un dels segentsmtodes (la columna PQ Distrib en la sortidagenerada pel paquet dbms_xplan ens proporciona lainformaci):

    broadcast: cada productor envia totes lesfiles a cada consumidor.

    broadcast local: s una variaci delanterior. Sutilitza per a enviar totes lesfiles a un subconjunt de processos esclaus.s utilitzat en entorn RAC per a minimitzarla comunicaci entre instncies.

    round-robin: el productors envien cada fila aun nic consumidor a la vegada, com aresultar, les files estan distribudesequitativament entre els consumidors.

    range: el productors envien rangs especficsde files a diferents consumidors. Es realitzaun particionament dinmic per rang per adeterminar quines files han de ser enviades aquin consumidor.

    hash: els productors envien files alsconsumidors segons el que determina unafunci de hash. Es realitza un particionamentdinmic per determinar quina fila s enviadaa quin consumidor.

    partition key: els productors envien files als

    consumidors basant-se en la clau departici.

    hybrid hash: els productors envien files alsconsumidors utilitzant un mtode dedistribuci broadcast o hash. Quinsutilitza es determina en tempsdexecuci.

    one slave: el productors envien totes lesfiles a un nic consumidor. Disponible desde la versi 12.1

    QC random: cada productor envia totes lesfiles al coordinador. El ordre no teimportncia. s el mtode ms com decomunicaci amb el coordinador.

    QC order: cada productor envia totes lesfiles al coordinador per, en aquest cas, siimporta el ordre.

    2.3 Relaci entre operacions en parallel

    Quan sexecuta un operaci en parallel, el pladexecuci mostra en la columna IN-OUT lessegents relacions entre operacions:

    parallel to serial (P->S): una operaci enparallel envia dades a una operaci ensrie. Sutilitza per a reflectir lenviamentde dades al coordinador.

    parallel to parallel (P->P): una operacien parallel envia dades a un altre operacien parallel. Sutilitza quan existeixen dosconjunts de processos esclaus.

    parallel combined with parent (PCWD):una operaci s executada en parallel perel mateix procs esclau que executaloperaci parent en el pla dexecuci. Pertant no existeix comunicaci.

    parallel combined with child (PCWC): unaoperaci sexecuta en parallel per elmateix procs esclau que executa laoperaci child en el pla dexecuci. Pertant no hi ha comunicaci.

    serial to parallel (S->P): una operaci ensrie envia dades a una operaci enparallel. Aquesta operaci hauria de serevitada per ineficient. La ra principal esque no es possible per a un sol procsproduir dades tant rpid com diversosprocessos poden consumir-la, per tant elconsumidors passen molt temps esperant.

    2

  • serial combined with parent (SCWP): unaoperaci sexecuta en srie per el mateixprocs esclau que executa loperaci parenten el pla dexecuci. No existeixcomunicaci.

    serial combine with child (SCWC): unaoperaci sexecuta en srie per el mateixprocs esclau que tamb executa loperacichild en el pla dexecuci. No existeixcomunicaci.

    pla d'execuci amb parallelisme

    2.4 Operacions de fluxe de dadesDiverses operacions paralleles dutes a terme comuna seqncia sanomena operaci de flux de dadeso, el que s el mateix, data flow operation (DFO).Moltes vegades, els plans dexecuci, tenen un nicaoperaci de flux de dades, per existeixen casos ones requereixen diferents fluxos de dades.

    Es pot saber el nombre daquestes operacions, en lasortida generada per el paquet dbms_xplan,comprovant la columna TQ. Amb ella, es potidentificar el nombre de fluxos de dades i, tamb,quines operacions sexecuten en el conjunt deprocessos esclaus. De fet la informaci queproporciona s la segent:

    Un valor null es correspon amb una operacidut a terme pel query coordinator.

    El valor prefixat per la lletra Q es corresponamb el ID de la operaci de flux de dades.

    El valor seguit de la coma es correspon amblidentificador de la table queue, on elconjunt de processos slave escriuen. El queno es pot saber s la quantitat de processosque pertanyen al conjunt.

    conjunt de processos esclaus

    Les operacions daccs no sn les niques que espoden parallelitzar, de fet, es poden realitzarmoltes ms operacions com per exemple:insercions, unions, funcions dagregaci iordenacions.

    Quan una consulta SQL executa dos o msoperacions independents s normal que el motor debase de dades utilitzi ms dun conjunt deprocessos esclaus.

    Quan s'utilitza noms un conjunt d'operadors s elque es coneix com intra-operation parallelism ,quan sutilitzen ms dun conjunt de processosesclaus per un flux de dades s coneix com inter-operation parallelism.

    2.5 Parmetres d'inicialitzaciEls parmetres dinicialitzaci relacionats amb laconfiguraci de processament en parallel es podendividir en dos grups: els relacionats amb elsprocessos esclaus i el relacionats amb la memria.

    2.5.1 Pool de processos esclausEl nombre mxim de processo esclaus per instncias limitat i administrat per un pool de processosesclaus. Una petici per part del coordinador deconsultes torna un conjunt de processos esclaus perpart del pool, que sutilitzen per executar laconsulta SQL, i finalment es torna un altre vegadaal pool. Els segents parmetres estan relacionatsamb la configuraci del pool:

    parallel_min_servers: especifica el nombrede processo esclaus que sn assignats quanarrenca la base de dades. Aquest processosestan sempre disponible i no necessiten serarrencats quan un procs els requereix. Elque excedeixen aquest mnim sarrenquendinmicament quan es requereix i, unavegada tornats al pool, si romanen inactiusper ms de cinc minuts es tanquen.

    El seu valor per defecte s zero, el que voldir que no es creen processos quansarrenca la base de dades. Elesdeveniment despera relacionat s el osthread startup.

    parallel_max_servers: especifica elnombre mxim de processos esclausdisponibles en el pool. La recomanaci sun valor de 10-20 vegades el nombre deCPUs, encara que el valor per defecte

    3

  • depn de diversos parmetresdinicialitzaci, versi i plataforma. No potsuperar el valor del parmetre del sistemaprocesses.

    En entorns RAC, cada instncia t el seu pool. Quansexecuta una consulta SQL i sexecuta en parallel,els processos esclaus poden ser assignats tantlocalment con remotament en una nica instncia oen diverses instncies. Els segents parmetressutilitzen per a controlar lassignaci de processosesclaus:

    parallel_instance_groups: restringeixenlassignaci del processos esclaus a un grupdinstncies especfiques. Han destarexecutant el mateix servei (service-aware).

    parallel_force_local: des de la versi 12.1 siaquest parmetre val true els processosesclaus es processant localment.

    2.5.2 MemriaLes table queues utilitzades per a la comunicacientre processos sn estructures de memria quepoden ser assignades a la shared pool o a la largepool. La recomanaci s utilitzar la large pool.Existeixen dos configuracions per a les table queuesen la large pool:

    Des de ladministraci automtica dememria.

    Establint a true el parmetreparellel_automatic_tuning. s tracta dunaparmetre obsolet per si no tenim habilitatladministraci de memria automtica slnica manera de configurar la large poolper al processament en parallel.

    Cada table queue est composta per tres, ms de cincen RAC, buffers per cada par de processos que escomuniquen. La mida en bytes, sestableixmitjanant el parmetre dinicialitzaciparallel_execution_message i depn de la versi.Les mides van des de 2 kilobytes en la 11.1 a 16kilobytes en la 12.1.

    2.5.3 Grau de parallelismeEl nombre de processos esclaus utilitzats en unoperaci intra-operation parallelism sanomenadegree of parallelism (DOP) i defineix el nombre deprocessos. El nombre de processos utilitzats enlexecuci duna consulta SQL pot ser ms gran queel grau de parallelisme. De totes maneres unaoperaci de flux de dades no pot utilitzar ms de dos

    vegades el grau de parallelisme definit.

    Quan una consulta SQL s processada en parallel,el motor de la base de dades ha de seleccionar elgrau de parallelisme a utilitzar. Existeixen diversosparmetres dinicialitzaci i altres factors que eldeterminen, per noms existeixen dos maneres:

    Manera manual: lusuari controla el graude parallelisme a nivell de sessi, objecteo consulta.

    Automtica: s el motor de base de dadesel automticament selecciona el grau deparallelisme adequat.

    A partir de la versi 11.2 sutilitza el parmetredinicialitzaci parallel_degree_policy no nomsper a triar entre manual i automtic, si no tamb pera configurar funcionalitats relacionades amb elprocessament en parallel. La configuracions queaccepta sn:

    manual: s el valor per defecte, activa laconfiguraci manual.

    limited: activa el grau de parallelismeautomtic noms per a consultes que fanreferncia a objectes on la clusula parallelsestableix a default.

    auto: s'habilita el mode automtic per atotes les consultes SQL, a ms a ms, dosfuncionalitats que no estan relacionadesamb el mode automtic de parallelisme:parallel statement queuing i in-memoryparallel execution.

    adaptative: aquest mode s similar a autoper tamb habilita la funcionalitatperformance feedback que tampoc estarelacionat amb el mode automtic deparallelisme.

    2.5.4 Processament en parallel automtic

    Quan l'execuci es realitza per mitj deconfiguraci automtica el grau de parallelismes'estableix entre uns valors mnim i mxim enfunci de la quantitat de processament que s'esperarealitzar.

    Hi ha un llindar en qu la consulta s'executa ensrie, i per altra banda, hi ha un grau mxim deparallelisme que no es pot sobrepassar.El llindar es defineix com el mnim temps que unaconsulta SQL ha de consumir per completar la sevaexecuci. El valor ve establert pel parmetre del

    4

  • sistema parallel_min_time_threshold i el seu valors uns 10 segons un exemple grfic seria:

    El mxim grau de parallelisme depn del parmetredel sistema parallel_degree_limit i pot serinicialitzat a un del segents parmetres:

    CPU: el mxim grau de parallelisme sigual al valor del grau de parallelisme perdefecte, s el valor per defecte.

    IO: el mxim grau de parallelisme vedefinit per la capacitat d'E/S.

    Un valor enter que especifica el mxim graude parallelisme.

    Per utilitzar-lo de forma automtica cal que escompleixin dues condicions:

    Que es disposin d'estadstiques de calibratgede l'E/S.

    S'ha d'habilitar la funcionalitat a nivell desistema per mitj del parmetreparallel_degree_policy inicialitzant-lo aauto. Hi ha la possibilitat de assignar-li elvalor limited, si s aix, noms les taules indexs que tinguin associat el grau deparallelisme per defecte seran consideresper a execuci en parallel.

    Si el grau de parallelisme seleccionat perl'optimitzador s subptim, des de la versi 12.1 enendavant s pot ajustar la forma en qu s calcula permitj del parmetre parallel _degree_level. El Seuvalor per defecte s 100, si s'especifiquen valorsmenors, el grau de parallelisme disminueixproporcionalment, si s superior a 100 s'incrementaproporcionalment.

    2.5.5 Limitant el grau de parallelisme

    El grau de parallelisme determinat pel motor de la base de dades pot ser redut, especficament, una reducci t lloc quan:

    El parallelisme adaptatiu est habilitat:est controlat pel parmetre de sistemaparallel_adaptive_multi_user, el seupropsit s controlar el nombre deprocessos esclaus assignats a un procsservidor. Accepta dos valors: FALSE iTRUE.

    El lmit d'E/S est habilitada, el seupropsit s establir un lmit de grau deparallelisme en concordana amb elmxim rendiment que el sistema d'E/S potsostenir.

    El lmit de grau de parallelisme estespecificat en el Database ResourceManager, proveeix un control sobre elsrecursos de base de dades assignats alsprocessos servidors.

    Un profile limitant el nombre de sessionsconcurrents.

    Diverses d'aquestes especificacions poden estarhabilitades concurrentment

    2.5.5 ReducciUna reducci t lloc quan el nombre de processosesclaus sollicitats al coordinador de consultes sms gran que el nombre de processos esclausdisponibles. Aix es produeix en dues situacions:

    Quan el grau de parallelisme est limitatper alguna de les tcniques descritesanteriorment.

    Quan les peticions al pool del coordinadorde consultes s ms gran que el nombredels processos esclaus disponibles.

    Quan es supera el lmit, hi ha tres possibilitats:

    Reduir el grau de parallelisme per mitjdel parmetre parallel_min_percent,accepta valors en 0 i 100. Amb aixaconseguim que almenys el percentatge deprocessos esclaus ha d'estar disponiblesabans d'elevar un error.

    Retornar un error indicant que no hi haprocessos esclaus disponibles.

    Inserir el procs en un cua i esperar finsque es pugui satisfer la petici, aquestenfocament s utilitzat des de l'11.2.

    2.5.6 Encuament de consultesLa finalitat de deixar en una cua les consultes que

    5

  • no es poden executar amb el grau de parallelismeper defecte , funcionalitat disponible des de la versi11.2, s evitar reduccions.

    Per fer-ho, Resource Manager reconeix quan no hiha disponibles suficients processos esclaus persatisfer una determinada consulta parallela. Quanaix succeeix, es suspn l'execuci encolant la sessien una llista d'espera. Una vegada que els recursosestan disponibles, es desencuen les sessions i esreactiva la seva execuci. La cua es administrada enmode FIFO.

    2.5.7 In-memoryFull table scans, full partition scans and fast fullindex scans executats en parallel utilitzen directreads per accedir a les dades, per tant, nos'insereixen blocs en la memria cau fent-ho en laPGA a nivell de procs.

    Una excepci s quan, des de la versi 11.2endavant, es fa s de l'execuci in-memory parallel.De fet, l'objectiu de les execucions in-memory sprecisament evitar les direct reads i emmagatzemartantes dades com sigui possible, per poder compartir-les amb execucions subsegents disminuint l'accs adisc.

    En el cas de taules particionades, mitjanant elspartition wise joins, es pot s dividir una uni degrans dimensions en diverses unions ms petites iprocessar-les en parallel., grficament seria:

    partition wise join

    En el cas d'entorns clusteritzats es pot utilitzar totsels nodes per assolir alts nivells de rendiment reduintla quantitat de CPU, memria i recursos de xarxautilitzats per a processament d'unions.

    distribuci de particions en un RAC

    3 Parallelisme i ExadataEn Exadata les execucions en parallel utilitzen lamateixa funcionalitat que en sistemes no Exadata.Ats que Exadata s, en el seu nucli, un sistema dedatawarehousing, la manipulaci i el processamenten parallel s un dels seus objectius principals.

    Exadata t una gran capacitat de processament anivell capa d'emmagatzematge, t ms recursosdisponibles que a la capa de base de dades.Cadascuna de les consultes via Smart Scan sparallelitzada a travs de les CPU en les cellesd'emmagatzematge.

    Aquest tipus de parallelitzaci s completamentindependent del parallelisme a nivell de capa debase de dades, existeix sempre, incls si l'activitats generada per un procs nic. Aix introdueixalgunes qestions interessants que s'han deconsiderar en relaci amb la parallelitzaci a nivellde base de dades.

    Una de les principals caracterstiques de laexecuci en parallel s distribuir mltiplesprocessos per a la realitzaci d'operacions en l'E/S,i com aquestes operacions tamb sn distribudesen mltiples processos a nivell de capad'emmagatzematge, el nivell de parallelismerequerit per les consultes executades en un Exadatahauria de ser menor que en altres plataformes fent de Smart Scan.

    3.1 Exadata i in-memorys cert que la memria s molt ms rpida quel'accs a disc, Smart Scan est dissenyat per serrpid i eficient quan accedeix a disc. La projeccide columnes i el filtre de predicats reduxendrsticament el volum de dades processades a lacapa de base de dades, accelerant l'execuci de lesconsultes.

    D'altra banda, si totes les dades poden sercarregades i processades en memria, el tempsd'execuci ser una fracci del temps necessari enprocessar el mateix volum de dades des del disc.Per tant hi han beneficis en l'execuci deparallelisme en memria:

    S'elimina prcticament la E /S. Desapareix el trfic entre la capa de base

    de dades i la capa d'emmagatzematge.

    6

  • De totes maneres cal tenir en compte la disponibilitatde recursos de CPU i memria. El processament ques'hauria de portar a terme en les cellesd'emmagatzematge durant els Smarts Scans serrealitzat en la capa de base de dades.

    En sistemes Exadata on un gran nombre de consultesno fan s de de Smart Scan, el processament enmemria podria incrementar el rendiment eliminantles lectures fsiques per lectures lgiques.

    4 Cas d'estudi: reduccionsEn aquest cas d'estudi veurem com es comporta elsistema en el cas de no disposar de suficient recursosper a executar consultes en parallel segons laconfiguraci del nostre sistema.

    Es podem donar tres casos diferent depenent delsvalor que prengui el parmetre parallel_min_percent:

    0: s el valor per defecte i especifica que elgrau de parallelisme pot ser redutsilenciosament, en altres paraules, el motorde base de dades pot proveir tants processosesclaus com sigui possible. Si queden menysde 2 processos disponibles l'execuci esserialitzada. Aix vol dir que les consultessempre s'executen, i l'error ORA-12827 mais'eleva.

    La parametritzaci del nostre sistema s lasegent:

    Aix vol dir que si executen 2 sessions ambun grau de parallelisme 80, la segona nofar s del parallelisme i ser serialitzada.

    Executen una primera sessi amb un grau deparallelisme de 80, que s el mxim que potassolir el nostre sisteme

    Mirem el nombre de processos esclaus en el

    sistema:

    Tenim 80 processos en execuci. Executenla mateixa consulta des de un altra sessi:

    s serialitzada ja que no disposa de msprocessos esclaus, el temps de resoluci sbastant ms elevat. Es important adonar-sede que no s'eleva el error ORA-12827.

    1-99: Els valors que van de 1 a 99defineixen un lmit per a la reducci. Sims no, s'ha de poder proveir elpercentatge especificat de processosesclaus; en cas contrari s'eleva l'errorORA-12827.

    La parametrizaci del sistema s lasegent:

    En aquest cas s'han de poder proveir com amnim 40 processos esclaus per evitar ques'elevi el error ORA-12827 ja que:

    50*80/100=40

    Si executem una primera sessi amb 40processos esclaus i una segona amb 41,s'elevar el error per a la segona sessi:

    7

  • 100: s'han de proveir tots els processosesclaus o s'eleva l'error ORA-12827

    La parametritzaci del nostre sistema s la segent:

    Per tant no es podem proveir ms de 80 processos esclaus sense elevar l'error ORA-12827.

    Efectivament, al sollicitar 81 processos esclaus s'eleva l'error.

    5 Cas d'estudi: encuament depeticions

    En aquest segon cas configurarem el sistema per aque quan no pugui ser ateses les sollicituds deprocessos esclaus, les sessions s'afegeixin a una cua iromanguin a la espera de poder ser executats amb elgrau de parallelisme adient. Per a que hi hagiencuament el parmetre parallel_degree_policy had'estar inicialitzat a auto.

    A continuaci executarem concurrentment 2 sessions

    amb un grau de parallelisme de 80 i per tant lasegona consulta ser encuada fins que el sistemadisposi de recursos per satisfer-la. La consulta ques'executa des de 2 sessions diferents s la segent:

    El valor del parmetre parallel_max_servers s:

    Per tant la segent consulta executada ha se serencuada:

    Es pot apreciar que la sessi 19 porta 1928 mili-segons encuada.

    8

    1 Introducci2 Processament en parallel2.1 Arquitectura2.2 Comunicaci entre processos2.3 Relaci entre operacions en parallel2.4 Operacions de fluxe de dades2.5 Parmetres d'inicialitzaci2.5.1 Pool de processos esclaus2.5.2 Memria2.5.3 Grau de parallelisme2.5.4 Processament en parallel automtic2.5.5 Limitant el grau de parallelisme2.5.5 Reducci2.5.6 Encuament de consultes2.5.7 In-memory

    3 Parallelisme i Exadata3.1 Exadata i in-memory

    4 Cas d'estudi: reduccions5 Cas d'estudi: encuament de peticions