Telling over parallelle grener med pakken dbms_atomic

Navngitte atomiske verdier

Kroppen av en parallell løkke må ikke endre en variabel som er deklarert utenfor løkken. Tidligere kunne man kun jobbe med en tabell per rad pluss en count(*) etter hvert. Det er fortsatt mulig, men det er for eksempel ikke mulig å fastslå innenfor en parallell gren om den er den sist kjørende grenen.

dbms_atomic-pakken gir muligheter for å dele verdier innenfor en økt og referere til dem via et navn. Disse verdiene er pålitelige også i parallell behandling med PARALLEL (se Meer datadoorvoer dankzij "parallel" PSQL constructies).

Verdiene av disse delte verdiene kan ha én av tre typer:

  • tall,
  • tekst,
  • liste av tekst.

Navnet på hver prosedyre og funksjon i dbms_atomic ender på datatypen til verdien den opererer på (med unntak av remove). Så compare_and_set_number opererer på et tall.

En navngitt verdi oppstår ved første bruk og har deretter én type. Å lese en ukjent navn gir null.

Telling i en parallell løkke

Den mest brukte operasjonen er increment_number. Den øker verdien av et tall og returnerer den nye verdien.

Dataordbok

Verdiene av økten er i Dataordbok-visningen SystemPSqlAtomics:

select name
,      kind
,      number_value
,      element_count
,      total_length
,      operation_count
,      contended_count
,      wait_duration_ms
,      last_modified_by_instance
from   SystemPSqlAtomics@DataDictionary
order
by     wait_duration_ms desc

Varighet av en verdi

En verdi lever så lenge økten lever, ikke så lenge oppgaven eller løkken lever.

Begrensninger

En økt inneholder maksimalt 10 000 navn, en liste maksimalt 100 000 elementer, og en tekst maksimalt 10 000 000 tegn. Ved (truende) overskridelse følger en feilmelding.

Tilgjengelighet

dbms_atomic er tilgjengelig fra versjon 27.0 på alle produkter.

Se også