Dúvida enviada pelo amigo Carlos:
Por favor nos tire uma duvida, pela sua experiência ocorre degradação (queda de performance) ao usar big tablespace com opção de autoextend ?
Seria mais performático usar tablespace padrão sem autoextend neste caso criando vários datafiles de 32GB e o gerenciamento do crescimento ficando por conta do DBA ?
AUTOEXTEND
Re: AUTOEXTEND
Lentidão por conta de AUTOEXTEND pode acontecer tanto em BIGFILE TABLESPACE quanto em SMALLFILE TABLESPACE.
Isto pode acontecer se:
- Você tem muitas ocorrências de AUTOEXTEND por dia. Imagine um NEXT 1M, por exemplo, toda hora alguma sessão que esteja inserindo dados nesta TABLESPACE sofre uma pequena travada. É bem pequena, mas como são muitas, é um impacto;
- Você tem um grande AUTOEXTEND. Por exemplo, um NEXT 10G. Seja em BIGFILE ou SMALLFILE, é uma boa travada na hora do crescimento.
E na manutenção manual, o trabalho e impacto é o mesmo tanto em BIGFILE quanto em SMALLFILE: você pode ter BIGFILE, e fazer RESIZEs regularmente de 32GB. Dá trabalho do mesmo jeito que ficar adicionando DATAFILEs SMALLFILE de 32GB.
O bom é que isto é mensurável, ou seja, é possível saber se você está com este problema ou não. É o evento "Data file init write".
O que eu prefiro é deixar em AUTOEXTEND com um NEXT adequado para o banco (NEXT 100M são quantas ocorrências durante o dia? 10 ou 1000?), e monitorar se o evento ocorrem.
Então, se você está desconfiado que isto é um problema, olhe no STATSPACK ou AWR o quanto este evento impacta no dia. Se é pouco, nem vale a pena se preocupar com isso.
No teste abaixo, eu mostro que a lentidão no AUTOEXTEND pode acontecer tanto em SMALLFILE quanto em BIGFILE. Assim como aconteceria no momento em que você criasse um DATAFILE de 32GB, ou fizesse um RESIZE para +32GB.
Isto pode acontecer se:
- Você tem muitas ocorrências de AUTOEXTEND por dia. Imagine um NEXT 1M, por exemplo, toda hora alguma sessão que esteja inserindo dados nesta TABLESPACE sofre uma pequena travada. É bem pequena, mas como são muitas, é um impacto;
- Você tem um grande AUTOEXTEND. Por exemplo, um NEXT 10G. Seja em BIGFILE ou SMALLFILE, é uma boa travada na hora do crescimento.
E na manutenção manual, o trabalho e impacto é o mesmo tanto em BIGFILE quanto em SMALLFILE: você pode ter BIGFILE, e fazer RESIZEs regularmente de 32GB. Dá trabalho do mesmo jeito que ficar adicionando DATAFILEs SMALLFILE de 32GB.
O bom é que isto é mensurável, ou seja, é possível saber se você está com este problema ou não. É o evento "Data file init write".
O que eu prefiro é deixar em AUTOEXTEND com um NEXT adequado para o banco (NEXT 100M são quantas ocorrências durante o dia? 10 ou 1000?), e monitorar se o evento ocorrem.
Então, se você está desconfiado que isto é um problema, olhe no STATSPACK ou AWR o quanto este evento impacta no dia. Se é pouco, nem vale a pena se preocupar com isso.
No teste abaixo, eu mostro que a lentidão no AUTOEXTEND pode acontecer tanto em SMALLFILE quanto em BIGFILE. Assim como aconteceria no momento em que você criasse um DATAFILE de 32GB, ou fizesse um RESIZE para +32GB.
Code: Select all
C:\Users\ricar>sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Qui Fev 6 10:42:35 2020
Version 19.6.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Conectado a:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
10:42:36 SYS@ORCL> SET TIMING ON
10:42:42 SYS@ORCL> CREATE TABLESPACE TESTE_SMALLFILE DATAFILE 'D:\oradata\ORCL\TESTE_SMALLFILE.DBF' SIZE 1M AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
Tablespace criado.
Decorrido: 00:00:00.38
10:42:49 SYS@ORCL> CREATE BIGFILE TABLESPACE TESTE_BIGFILE DATAFILE 'D:\oradata\ORCL\TESTE_BIGFILE.DBF' SIZE 10M AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
Tablespace criado.
Decorrido: 00:00:00.26
10:42:55 SYS@ORCL> CONN / AS SYSDBA
Conectado.
10:43:11 SYS@ORCL> SET TIMING ON
10:43:14 SYS@ORCL> CREATE TABLE TESTE_SMALLFILE TABLESPACE TESTE_SMALLFILE AS SELECT * FROM ALL_OBJECTS;
Tabela criada.
Decorrido: 00:00:08.94
10:44:26 SYS@ORCL> CONN / AS SYSDBA
Conectado.
10:45:05 SYS@ORCL> CREATE TABLE TESTE_BIGFILE TABLESPACE TESTE_BIGFILE AS SELECT * FROM ALL_OBJECTS;
Tabela criada.
Decorrido: 00:00:13.25
10:45:36 SYS@ORCL>