Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija OUGF syysseminaari 2002 Sivu 1
Oracle 8i (8.1.7) muistinkäyttöä ja viritystä: SGA ja PGA mitä ne on ja niihin vaikuttavat init.orat SGA:n rakenne Kannan suorituskyvyn seuranta hit ratio ym. Hitausongelmat ja selvittely: sql-lauseet lukitukset OUGF syysseminaari 2002 Sivu 2
LCK0 RECO PMON SMON Program Global Area (PGA) SYSTEM GLOBAL AREA (SGA) Server Process User Process ARCH0 DBW0 CKPT LGWR OUGF syysseminaari 2002 Sivu 3
SGA Fixed Part (sisäinen työalue) Database Buffer Cache Keep Recycle Shared Pool Shared Pool Reserved Large Pool Java Pool Redo Log Buffer OUGF syysseminaari 2002 Sivu 4
Database Buffer Cache tietokantasivujen puskurialue koko: db_block_buffers*db_block_size db_block_lru_latches Seuranta: V$SYSSTAT V$BH OUGF syysseminaari 2002 Sivu 5
Database Buffer Cache (KEEP & RECYCLE) init.ora-parametrit: buffer_pool_keep buffer_pool_recycle Seuranta: V$BUFFER_POOL_STATISTICS (?/rdbms/admin/catperf.sql) OUGF syysseminaari 2002 Sivu 6
Shared_pool sql-lauseiden puskurialue koko shared_pool_size shared_pool_reserved_size (oa. 5% shared_pool_size) shared_pool_reserved_min_alloc (oa. 4K) V$SQLAREA: ADDRESS HASH_VALUE SQL_TEXT 04BE6960 2831283542 select * from asiakas where asid=1 and astyyppi=0 -- välilyöntejä 04CF2750 6963488 select * from asiakas where asid=1 and astyyppi=0 -- rivinvaihtoja 04C9BB98 303007209 select * from asiakas where asid=1 and astyyppi=0 -- välilyöntejä ja rivinvaihto OUGF syysseminaari 2002 Sivu 7
large_pool puskurialue Oraclen varmistus ja palautusoperaatioissa (RMAN), I/O server prosessit ja MTS koko: large_pool_size varaus: large_pool_min_alloc (oa. 4K) Käytetään jos: dbwr_io_slaves<>0 ja/tai backup_tape_io_slaves=true parallel_automatic_tuning=true OUGF syysseminaari 2002 Sivu 8
Redo log buffer LWGR-prosessi kirjoittaa redotietoja levylle kun alue on täyttymässä koko: log_buffer V$SYSSTAT: 'REDO BUFFER ALLOCATION RETRIES arvo lähellä nollaa dml käyttäjä LGWR OUGF syysseminaari 2002 Sivu 9
PGA alue muodostuu kantayhteyden luonnissa. Alue laajenee dynaamisesti PGA:lla muuttujien arvot sql-lauseiden tilatiedot, varsinaiset tiedot jne. PGA1 PGA2 session määritykset : nls-asetukset, optimoija,... PGA:han vaikuttavat parametrit sort_area_size (sessio-kohtainen, TEMP!) hash_area_size open_cursors sql-lause lause shared pool OUGF syysseminaari 2002 Sivu 10
Määritä tavoite ja viritä 1. liiketoiminta säännöt (Business Rules) 2. tietorakenteiden suunnittelu (Data Design) 3. sovellus suunnittelu (Application Design) 4.tietokannan loogiset rakenteet (Logical Structure of the Database) 5. tietokantaoperaatiot (Database operations) 6. suoritussuunnitelmat (Access Paths) 7. muistin käyttö (Memory Allocation) 8. I/O 9. resurssien odotus (Resource Contention) 10. käyttöjärjestelmä OUGF syysseminaari 2002 Sivu 11
Työasemassa ajettava sovellus on hidas, käyttäjät valittavat pitkistä vasteajoista Tietokantapalvelimen kuorma: 12:31:19 %usr %sys %wio %idle 12:31:24 89 11 0 0 12:31:29 94 6 0 0... 12:32:04 95 5 0 0 12:32:09 94 6 0 0 Oraclen puskurialueen osumatodennäköisyys noin 100%: Physical Reads Logical Reads Hit Ratio ---------------------- --------------- --------- 3517 18327639 99.99 OUGF syysseminaari 2002 Sivu 12
Vaihtoehtoja, mitä tehdään: etsitään vikaa tietoliikenteestä tietokantapalvelimelle lisätään: fyysisiä levyjä muistia CPUita viritetään parametreja: oraclen instanssin kantapalvelimen käyttöjärjestelmän tehdään jotain muuta, mitä? OUGF syysseminaari 2002 Sivu 13
TAULU-taulussa on 20000 riviä ja koko noin 16 Mb. Seuraavaa sql-lausetta suoritettiin 5000 kertaa pl/sql-blokissa: select * from TAULU where a_sar=:w_a and b_sar=:w_b; Läpimenoajat: 1. ajo taulun peräkkäishaulla kesti noin 4 min (21 lausetta/s) 2. ajo taulussa indeksi b_sar-sarakkeessa: 2 min (42 laus./s) 3. ajo taulussa indeksi a_sar-sarakkeelle: 2 s (2500 laus./s) Todellinen sql-lause oli: select * from asiakas where asid=:w_asid and astyyppi=:w_astyyppi; OUGF syysseminaari 2002 Sivu 14
Viiteavain (Foreign key) ja indeksointi Jos viiteavainta ei ole indeksoitu, niin update dept (deptno) tai delete from dept aiheuttaa taulutason S-lukon lapsitauluun: DEPT (DEPTNO) RX (rivitaso) EMP (DEPT_DEPTNO) S (taulutaso) OUGF syysseminaari 2002 Sivu 15