Lataa esitys
Esittely latautuu. Ole hyvä ja odota
1
SAS-ajojen optimoinnista
Asko Kauppinen ja Lauri Mantere Aureolis Oy SUGIF Tech club 09/2012
2
Aiheet 1. Yleistä 2. BASE-SAS optimointi 2.1 Yleiset käytännöt
2.2 Levyoperaatioiden ja CPU-käytön optimointi 3. SAS DI-Studiolla tehtynä 3.1 Projektin käytännöt 3.2 Compress-optiot 3.3 Hyviä käytäntöjä
3
1. Yleistä Esityksessä keskitytään hyviin ohjelmointikäytäntöihin (ajojen tai jobien asetukset, toimintatavat) Paremmalla infralla ja/tai rajapinnoilla voidaan toki kasvattaa ajojen tehokkuutta ilman että ohjelmakoodin tehokkuuteen olisi panostettu
4
2.1 Yleiset käytännöt Käytetään rajausehtoja oikein, käytetään indeksejä, pudotetaan/pidetään tarvittavat muuttujat
5
2.2 Levyoperaatiot - Compress
Tauluja pakkaamalla voidaan pyrkiä vähentämään levyoperaatioiden vaatimaa aikaa, mutta samalla CPU-ajan käyttö lisääntyy Hyödyllistä jos ajon suorituksen kelloajan ja prosessoriajan välillä iso ero kelloajan suhteen Levytilan säästö on ensimmäinen tavoite Esim. SAS-taulu 30GB 9GB
6
2.2 Levyoperaatiot - jatkoa
Jos SAS-taulu sisältää runsaasti sekä merkki että numeerista dataa niin compress=binary on paras pakkausoptio vaikka se on compress=char optiota kalliimpi prosessoriajan mielessä options compress=binary; /* asetus kaikille luoduille tauluille */
7
3. SAS DI-Studiolla tehtynä
BASE-SAS:a käyttäneen on helppo lähteä tekemään projekteja DIS:llä, kyseessä on käyttöliittymä SAS:n toiminnallisuuksiin Joitain käytäntöjä voi olla hyvä muuttaa, varsinkin isommissa projekteissa kun useampia tekijöitä samaan aikaan
8
3.1 Projektin käytännöt Jaetaan toiminnallisuus loogisiin kokonaisuuksiin, ei tehdä megajobia joka yrittää ratkaista kaiken – ylläpito, tuotannon seuranta ja kehittäminen helpompaa Metadatan hyödyntäminen kuvausten tekemisessä kansiot, kuvaus-kentän käyttö, vastuut
10
3.1 Jatkoa Määritellään DIS:n käyttämään autoexec.sas tiedostoon automaattinen makrokirjastoviittaus, jonne makrot on SAS-ohjelmina tallennettu Tämän jälkeen jobien Properties/Precode ja postcode kohdassa on mahdollista käyttää näitä makroja Tai precode/postcode kohdissa transformaatiossa
12
3.2 Compress-optiot Luvun 2 esimerkkeinä esitetyt pakkausoptiot voidaan toteuttaa taulukohtaisesti, jobin asetuksissa tai kirjastokohtaisesti määrityksessä DIS:ssä
13
3. 2 – Taulukohtainen asetus
14
3. 2 – Jobikohtainen asetus
15
3. 2 – Kirjastokohtainen asetus
16
3.3 Hyviä käytäntöjä - rajaukset
Esimerkkitilanne: Jobi, jossa haetaan osajoukko tuote-dimensiosta ja yhdistetään tiedot faktatauluun tai tauluihin inner joinilla. Voitaisiin optimoida tekemällä tuoterivejä rajoittava väliaikainen taulu ja sen jälkeen käyttämällä sitä kyselyissä faktatauluihin
17
3.3 Hyviä käytäntöjä - esisorttaus
Esimerkkitilanteessa samaa taulua tarvitaan useassa kyselyssä Kyselystä saadaan tehokkaampi kun taulu sortataan ensin ja sortattua taulua käytetään kaikissa kyselyissä tämän jälkeen Relaatiokannan taulun käsittely eroaa, edellinen toimii parhaiten SAS-taulujen kohdalla
20
Bonus - Rinnakkaisajo Moniajo yhdellä koneella
Usein SAS ohjelmissa on osia, jotka voidaan ajaa rinnakkain ja jotka vaativat eri resurssia, IO-riippuvaista datan siirtoa, CPU-riippuvaista laskentaa Ajetaan samalla koneella osia, jotka eivät kilpaile samasta resurssista
21
Bonus - Rinnakkaisajo Moniajo useammalla koneella
Jos ohjelmassa on useita osia, jotka vaativat runsaasti CPU:ta jaetaan nämä etäkoneille ja luetaan valmiit tulokset takaisin
22
Bonus - Rinnakkaisajo Options sascmd='/usr/sasroot/SAS_9.2/SASFoundation/9.2/sas -nosyntaxcheck‘ autosignon comamid=tcp; rsubmit task1 wait=no inheritlib=(datat); /* Steppejä 1*/ endrsubmit; rsubmit task2 wait=no inheritlib=(datat); /* Steppejä 2*/ /* Steppejä 3*/ waitfor task1 task2;
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.