Boa Chiappa. Tem aquele efeito colateral, especialmente em ambientes OLTP. Se aumentar muito o blocksize pode aumentar a contenção, correto? OLTP -> 8K BATCH -> pode-se pensar em 16K mediante testes, especialmente para tbs de indexes
Escrevi alguma bobagem? :) Att Vitor Jr --- Em oracle_br@yahoogrupos.com.br, "J. Laurindo Chiappa" <jlchiappa@...> escreveu > > Blz ??? > Bom, deixe-me começar a resposta REPETINDO o mesmo que já tinha dito, vamos > ver se a segnda é de vez : ponto é, falando de blocagem para I/O (como eu > mostrei nos links anteriores, há outros tipos de blocagem, e há inclusive o > buffer block size do SO, cfrme > http://www.ixora.com.au/tips/buffered_block_size.htm), o fato é que ***** NÃO > EXISTE **** - realmente NÃO Existe - isso de "tamanho dos blocos do sistema > operacional", especialmente no unix/linux : um FILESYSTEM tem blocksize, uma > PARTITION tem blocksize, um volume (se estivermos falando de storage) tem > blocksize... Então é fundamentalmente dependente do ambiente, NÃO TEM essa > figura de bloco do SO absoluto e único, captou ?? Hai capito ? Provavelmente > o material que vc diz está (por questões didáticas) fazendo uma > supersimplificação quando fala em "block size do SO", tem mais carne debaixo > desse angú... ==> Muito bem, então o passo#1 se vc está fazendo > micro-otimizações do tipo se preocupar com block sizes (e NÂO que vc deveria > se preocupar primariamente com isso, 99,9% das vezes o Retorno é > Incomensuravelmente Maior se vc se dedicar ao Tuning nas aplicações, > principalmente Reduzindo LIOs - já que mesmo um I/O perfeitamente alinhado > fisicamente se for feito milhares e milhares de vezes TEM OVERHEAD inerente) > seria mesmo Descobrir exatamente que tipo de I/O device vai ser usado : vai > ser filesystem ? Se sim, Qual filesystem ? Filesystem nativo OU de terceiros > ?? Se for de terceiros, qual software de controle será usado, e em que versão > ?? Ou vai ser usado raw partitions ?? Em qual hardware ?? Ou serão disk > volumes ?? Volumes controlados por algum lvm (ASM, onde em grande parte vc > não se preocupa com block size, já que há a figura do aallocation size cfrme > http://askdba.org/weblog/2008/05/allocation-unit-and-extents-in-asm/ ??), ou > não ??? SABENDO disso aí é que vc poderá descobrir qual block size está sendo > usado, se é o default do dispositivo ou não, como e se é possível mudar ou se > o blocksize está "bom".... okdoc ? > > Antes de falar sobre escolha de blocksize, deixe-me discorrer um pouco > sobre a teoria : a figura do block size é relevante quando vc faz I/Os ** > mínimos **, tipo lê um registro da tabela - o RDBMS Oracle (e não só ele, > virtualmente TODOS os RDBMSs profissionais) nesse cenário ao invés de ler só > os poucos bytes referentes ao registro, o RDBMS solicita ao SO que leia TODO > o bloco aonde está o tal registro, e bota esse bloco em cache.... A idéia é > que normalmente muito em breve os outros registros que estão nesse bloco > podem ser solicitados, aí não será feito acesso ao disco, certo ? > > Muito bem : sendo assim como eu disse, valeria então a pena se usar um > bloco de TROCENTOS bytes, em tese cacheando Muito mais dados ?? Na verdade o > Problema nessa abordagem é (entre outras questões) que quanto maior o bloco > um I/O mais overhead vai haver para o SO para o completar, ok ? Então > CLARAMENTE há um sweetspot, há um ponto entre o malefício/overhead contra o > futuro benefício do caching tem o seu máximo, e depois cai > vertiginosamente..... Cito o manual Oracle de Tuning Guide, especialmente o > cap. 8 I/O Configuration and Design .... O resumo da história é que na > ESMAGADORA maioria dos casos o custo x benefício melhor para uma aplicação > genérica ocorre com bloco de 8 KBytes, E para sistemas DW/batch tradicionais > pode-se pensar em 16 KB - só saia disso com uma PROVA técnica muito > específica, em cima de TESTES REAIS aí no seu hardware, sim ?? > > Aí o seu segundo ponto : veja, fisicamente é claro q ue quando o RDBMS pede > para para o SO ler um bloco de X bytes, se o disk device em questão tem um > blocksize de exatamente X tudo tá alinhado, um I/O solicitado em tese vai > custar um I/O real no Sistema Operacional, é o ideal.... Agora, que catzo de > vantagem teria se o bloco do database fosse MAIOR que o do SO ???? O RDBMS > pediria X bytes, o device tem blocksize de x-y, PORTANTO ao menos dois I/Os > físicos serão necessários , que vantagem Maria levou ???? MUITO provavelmente > se é essa mesma a recomendação desse tal material não me parece ser lá muito > fundamentada - passa pra gente o link se esse material está online, até para > contra-recomendarmos esse talzinho, pleitearmos uma correção... > O Outro ponto é block size externo MENOR que o bloco do database : > tranquilamente isso PODE acontecer até por motivos físicos : > http://lwn.net/Articles/377895/ lista o casos de discos fisicamente alinhados > para 4 KB, por exemplo... Ora, já que X bytes requisitados pelo RDBMS ** vão > ** exigir x+y I/Os físicos diretos, o que vc DEVERIA tentar é se assegurar > que ao menos os números são múltiplos exatos entre si E o mais próximo > possível do bloco do database: digamos que vc tenha block size externo no > dispositivo de 3 KB, se o bloco do database for de 8KB o SO terá que fazer 3 > I/Os, tendo alguma sobra, já se fosse 4 KB seriam dois I/Os... > > Finalmente, sobre utilização de índices com block size grande, talvez até > maior do que o default do database : isso até pode ser positivo, mas vc NÂO > PODE se esquecer da contrapartida, como mais tempo para lock de blocos, o > overhead para o SO com I/Os mais extensos.... Leia a série em > http://richardfoote.wordpress.com/2009/02/18/larger-block-tablespace-for-indexes-revisited-part-i-the-tourist/ > (essa é a parte I, leia tudo) para uma ref mais direta e confiável, yes ??? > Eu dou a mesma Recomendação acima : antes de mais nada, TESTE no SEU ambiente > e no SEU hardware o custoxbenefício desa opção, para só sair do da linha > geral de 8 KB com dados REAIS na mão, yep ??? > > []s > > Chiappa > > > --- Em oracle_br@yahoogrupos.com.br, Wanderson Barrence <wbarrence@> escreveu > > > > Fala Chiappa!!! > > > > Eu fiz essa pergunta porque eu estava lendo em alguns materiais e artigos > > sobre Oracle, que os blocos do banco de dados são definidos de acordo com o > > tamanho dos blocos do sistema operacional, como estou montando um banco de > > dados somente para relatório, verifiquei que para maior ganho de > > performance na consulta os blocos do banco de dados devem ser maiores, mas > > aí veio a pulga atrás da orelha, maior quanto?? > > > > A questão das tablespaces também é algo parecido, já vi em alguns estudos > > de que se pode separar os índices numa tablespace separada dos dados, com o > > objetivo de aumentar o tamanho bloco para que a performance nas consultas > > possam ser melhores, mas vem a questão novamente, aumentar o bloco em > > quanto??? > > > > Percebi que os sistemas operacionais que estou trabalhou tanto o Solaris > > quanto o RHEL trabalham com tamanhos de blocos de 8k, que é o tamanho > > default usado pelo Oracle, aí vem uma outra questão, os blocos do banco de > > dados podem ser maiores do que os blocos do SO?? > > > > Estou fazendo alguns testes, mas como nuvens nebulosas ainda pairam muitas > > dúvidas sobre a minha cabeça!!! > > > > É por isso que gostaria de saber opinião do grupo, e como o grupo lida com > > esse problema??? > > > > > > Att, > > > > -- > > Wanderson Barrence > > DBA Oracle 10g/11g > > Analista de Testes - CBTS > > ------------------------------------------------------------------ > > MSN: wbarrence@ > > ICQ: 170821994 > > Linkedin: http://br.linkedin.com/in/wbarrence > > > > > > > > Em 9 de novembro de 2012 20:55, J. Laurindo Chiappa > > <jlchiappa@>escreveu: > > > > > ** > > > > > > > > > Primeiro veja que o *** Sistema Operacional ** em si não tem nem impõe > > > block size para seus I/Os (que Imagino é o tipo de block size a que vc > > > está > > > se referindo - OUTROS existem, como o kernel cache block size, mas Entendo > > > pelo que vc fala que é de I/O mesmo que vc quer) : no caso vc pode ter > > > seus > > > I/Os em Filesystem (aí o filesystem é que vai ter um block size, que vc > > > consulta com tune2fs -l se for filesystem linux nativo, ou com o comando > > > do > > > teu fornecedor se for filesystem de terceiros, OU vc pode ter acesso > > > direto > > > às partições (aí vc pode consultar com fdisk -l), OU vc pode ter disk > > > volumes (que aí vc consulta o block size com os comandos do volume manager > > > que vc usa) .... okdoc ?? > > > A segunda pergunta : sim, vc pode ter tablespaces com blocksizes > > > não-default, diferentes do block size default do database - normalmente o > > > RDBMS Oracle aceita blocksizes de 2KB, 4 KB, 8KB (o default, e normalmente > > > o mais usado), 16 KB e 32 KB - a lista de blocksizes possíveis pode variar > > > ligeiramente de acordo com a versão do RDBMS e o SO em uso, consulte a doc > > > da sua versão de RDBMS no seu SO... Para vc criar uma tablespace com > > > blocksize não-default, primeiro vc cria um buffer cache específico para > > > ela > > > (parâmetro db_NNk_cache_size , onde NN é o tamanho em KBytes), e depois > > > simplesmente no comando CREATE TABLESPACE vc indica : > > > > > > create tablespace tafile 'lista de datafiles' size tamanhododatafile > > > blocksize NNk extent management tipodomanagement segment space management > > > tipodospacemanagement; > > > > > > ==> É ** bem ** difícil vc pegar um caso onde uma tablespace com blocksize > > > não-default tenho um ganho (seja em performance, seja em > > > gerenciamento/administração), mas é possível, sim... > > > > > > []s > > > > > > Chiappa > > > --- Em oracle_br@yahoogrupos.com.br, Wanderson Barrence <wbarrence@> > > > escreveu > > > > > > > > > > > Olá Pessoal, > > > > > > > > Alguém sabe me informar como eu faço para verificar o tamanho dos blocos > > > > que o sistema operacional está utilizando?? > > > > > > > > É possível configurar tablespaces com tamanhos de blocos diferentes??? > > > Caso > > > > sim, como eu faço esse tipo de configuração? > > > > > > > > Desde já fico agradecido pela ajuda de vocês. > > > > > > > > Att, > > > > > > > > -- > > > > Wanderson Barrence > > > > DBA Oracle 10g/11g > > > > Analista de Testes - CBTS > > > > ---------------------------------------------------------- > > > > MSN: wbarrence@ > > > > > > > ICQ: 170821994 > > > > Linkedin: http://br.linkedin.com/in/wbarrence > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > >