Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Еще раз про CLOB (занимаемое место) / 25 сообщений из 25, страница 1 из 1
13.10.2017, 10:25
    #39535848
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Есть таблица, секционированная по дате, и с CLOB – полем.
CLOB определяется с параметрами:
…..
LOB (ERROR_TEXT, EVENT_MSG) STORE AS (
TABLESPACE xxx CHUNK 4096 NOCACHE PCTVERSION 0 ENABLE STORAGE IN ROW STORAGE(INITIAL 1M PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS UNLIMITED))

Строки не обновляются, только вставляются.

Если посчитать сколько «весит» CLOB в одной из партиций получается
define EndDate ='10.10.2017 00:00:00'
define chunk = '8192'

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT 
  count(*) count, 
  round(avg(dbms_lob.getlength(event_msg))) avg_size , 
  round(sum(dbms_lob.getlength(event_msg))/1024/1024/1024) real_size, 
  round(sum('&chunk'* ceil(dbms_lob.getlength(event_msg)/'&chunk'))/1024/1024/1024) disk_size
FROM eventlog
WHERE part_date < to_date ('&EndDate','DD.MM.YYYY HH24:MI:SS');


COUNTAVG_SIZEREAL_SIZEDISK_SIZE5740200211618621933

Т.е. с учетом хранения 8Kb блоками, на диске под этот CLOB должно быть выделено примерно 933Gb.

А если посмотреть размер LOB-партиции, получается

Код: plsql
1.
2.
3.
SELECT round(sum(bytes)/1024/1024/1024) Gb
FROM dba_extents
WHERE segment_name = 'SYS_LOB0000090859C00015$$' and partition_name = 'SYS_LOB_P21730';


GB1398

Т.е. получается 911Gb и 1398Gb
Почему так различаются размеры, что я не учитываю?
...
Рейтинг: 0 / 0
13.10.2017, 11:50
    #39535905
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesПочему так различаются размеры, что я не учитываю?1) retention
2) сам механизм выделения блоков
...
Рейтинг: 0 / 0
13.10.2017, 12:04
    #39535916
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtendery_fesПочему так различаются размеры, что я не учитываю?1) retentiony_fes
Код: plsql
1.
PCTVERSION 0
...
Рейтинг: 0 / 0
13.10.2017, 12:06
    #39535917
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesСтроки не обновляются, только вставляются.Удаляются?
...
Рейтинг: 0 / 0
13.10.2017, 12:06
    #39535918
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtender,

Я так понимаю, задается либо RETENTION , либо PCTVERSION
"The LOB storage clause can specify RETENTION or PCTVERSION, but not both."
Здесь же задано PCTVERSION 0. Я делаю вывод что RETENTION в данном случае не применяется.

xtender2) сам механизм выделения блоков
А чуть подробней можно? У него такие высокие накладные расходы, или что-то криво сконфигурировано? Куда посмотреть?
...
Рейтинг: 0 / 0
13.10.2017, 12:09
    #39535919
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Elicy_fesСтроки не обновляются, только вставляются.Удаляются?
Строки-нет. Удаляется партиция целиком через несколько дней.
...
Рейтинг: 0 / 0
13.10.2017, 12:20
    #39535929
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesCHUNK 4096а округлять надо до размера блока. В основном будет в новый блок писаться.


Elicxtenderпропущено...
1) retentiony_fes
Код: plsql
1.
PCTVERSION 0


Elic, это не значит что при апдейте, старое сразу перетрется новым :)
...
Рейтинг: 0 / 0
13.10.2017, 12:20
    #39535930
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesА чуть подробней можно? У него такие высокие накладные расходы, или что-то криво сконфигурировано? Куда посмотреть?ну выделяется же не по чанкам и даже не по блокам...
...
Рейтинг: 0 / 0
13.10.2017, 12:27
    #39535936
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtendery_fesCHUNK 4096а округлять надо до размера блока. В основном будет в новый блок писаться.
Я округлял до 8К блока
define chunk = '8192'
...
round(sum('&chunk'* ceil(dbms_lob.getlength(event_msg)/'&chunk'))/1024/1024/1024) disk_size
...
Elicпропущено...
пропущено...
Elic, это не значит что при апдейте, старое сразу перетрется новым :)
Апдейтов нет, только вставки и через несколько дней удаление всей партиции.
...
Рейтинг: 0 / 0
13.10.2017, 12:42
    #39535949
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtenderчто при апдейтеy_fesСтроки не обновляются,
...
Рейтинг: 0 / 0
13.10.2017, 12:48
    #39535955
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Elicxtenderчто при апдейтеy_fesСтроки не обновляются,сразу и целиком или с конкатенацией?
...
Рейтинг: 0 / 0
13.10.2017, 12:49
    #39535957
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
в любом случае оба моих пункта относятся к самой формуле...
...
Рейтинг: 0 / 0
13.10.2017, 12:49
    #39535958
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fes,

округлили до размера блока? что получилось?
...
Рейтинг: 0 / 0
13.10.2017, 13:06
    #39535968
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtendery_fes,
округлили до размера блока? что получилось?
Ну как я и писал ...
Округлял размер конкретного CLOB до максимального кол-ва целых 8к блоков.
В сумме все получилось 933, партиция 1398.

Возвращаясь ко второму пункту:
Пространство выделяется экстентами, 1М в данном случае (не знаю, что у них там со служебным заголовком).
Далее блоки. У них служебный заголовок, так что считать что все 8к используются под мой CLOB, согласен, некорректно.

Но я далек от мысли, что служебные заголовки блоков дают 45% прирост.

xtenderв любом случае оба моих пункта относятся к самой формуле...
Чет` недогоняю ... К формуле чего? Или к какой?
...
Рейтинг: 0 / 0
13.10.2017, 15:10
    #39536052
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesTABLESPACE xxxuniform? DBMS_SPACE.SPACE_USAGE?
...
Рейтинг: 0 / 0
13.10.2017, 17:10
    #39536133
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtendery_fesTABLESPACE xxxuniform? DBMS_SPACE.SPACE_USAGE?
Autoallocate
На DBMS_SPACE.SPACE_USAGE правов нет. :-( Если найду кого с правами - выдам результат.
...
Рейтинг: 0 / 0
14.10.2017, 08:52
    #39536243
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
xtenderну выделяется же не по чанкам и даже не по блокам...Хммм... Если лоб пишется весь сразу, то вполне себе блочно:
Код: plsql
1.
 create table qz_clob(c clob) lob(c) store as qz_clob$lob$c (disable storage in row pctversion 0 nocache);

5 крохотных лобиков
Код: plsql
1.
insert into qz_clob select level from dual connect by level <= 5;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Dump of First Level Bitmap Block
 --------------------------------
   nbits : 2 nranges: 1         parent dba:  0x01000089   poffset: 0     
   unformatted: 0       total: 8         first useful block: 3      
   owning instance : 1
   instance ownership changed at 
   Last successful Search 
   Freeness Status:  nf1 0      nf2 0      nf3 1      nf4 0      
 
   Extent Map Block Offset: 4294967295 
   First free datablock : 8      
   Bitmap block lock opcode 0
   Locker xid:     :  0x0000.000.00000000
   Dealloc scn: 17024647.0 
   Flag: 0x00000005 (-/-/-/LOB/-/HWM)
   Inc #: 0 Objd: 97679 
  HWM Flag: HWM Set
      Highwater::  0x01000090  ext#: 0      blk#: 8      ext size: 8     
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 5     
  mapblk  0x00000000  offset: 0     
  --------------------------------------------------------
  DBA Ranges :
  --------------------------------------------------------
   0x01000088  Length: 8      Offset: 0      
  
   0:Metadata   1:Metadata   2:Metadata   3: FULL 
   4: FULL    5: FULL    6: FULL    7: FULL 
  --------------------------------------------------------

Dump of First Level Bitmap Block
 --------------------------------
   nbits : 2 nranges: 1         parent dba:  0x01000089   poffset: 1     
   unformatted: 6       total: 8         first useful block: 1      
   owning instance : 1
   instance ownership changed at 
   Last successful Search 
   Freeness Status:  nf1 0      nf2 0      nf3 1      nf4 0      
 
   Extent Map Block Offset: 4294967295 
   First free datablock : 1      
   Bitmap block lock opcode 0
   Locker xid:     :  0x0000.000.00000000
   Dealloc scn: 17024647.0 
   Flag: 0x00000005 (-/-/-/LOB/-/HWM)
   Inc #: 0 Objd: 97679 
  HWM Flag: HWM Set
      Highwater::  0x010000a0  ext#: 1      blk#: 8      ext size: 8     
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 12    
  mapblk  0x00000000  offset: 1     
  --------------------------------------------------------
  DBA Ranges :
  --------------------------------------------------------
   0x01000098  Length: 8      Offset: 0      
  
   0:Metadata   1:unformatted   2:unformatted   3:unformatted
   4: FULL    5:unformatted   6:unformatted   7:unformatted
  --------------------------------------------------------
2*8128
Код: plsql
1.
2.
3.
4.
5.
6.
declare c clob := rpad('3',8192,'3');
begin 
insert into qz_clob values(c);
insert into qz_clob values(c);
end;
/

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dump·of·First·Level·Bitmap·Block
·--------------------------------
···nbits·:·2·nranges:·1·········parent·dba:··0x010000a9···poffset:·0·····
···unformatted:·1·······total:·8·········first·useful·block:·3······
···owning·instance·:·1
···instance·ownership·changed·at·
···Last·successful·Search·
···Freeness·Status:··nf1·0······nf2·0······nf3·1······nf4·0······
·
···Extent·Map·Block·Offset:·4294967295·
···First·free·datablock·:·5······
···Bitmap·block·lock·opcode·0
···Locker·xid:·····:··0x0000.000.00000000
···Dealloc·scn:·17024647.0·
···Flag:·0x00000005·(-/-/-/LOB/-/HWM)
···Inc·#:·0·Objd:·97700·
··HWM·Flag:·HWM·Set
······Highwater::··0x010000b0··ext#:·0······blk#:·8······ext·size:·8·····
··#blocks·in·seg.·hdr's·freelists:·0·····
··#blocks·below:·5·····
··mapblk··0x00000000··offset:·0·····
··--------------------------------------------------------
··DBA·Ranges·:
··--------------------------------------------------------
···0x010000a8··Length:·8······Offset:·0······
··
···0:Metadata···1:Metadata···2:Metadata···3: FULL 
···4: FULL ···5:unformatted···6: FULL ···7: FULL 
··--------------------------------------------------------
...
Рейтинг: 0 / 0
14.10.2017, 08:57
    #39536244
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesОкруглял размер конкретного CLOB до максимального кол-ва целых 8к блоков.1) В каждом блоке есть служебная информация.
2) В каждом экстенте есть какое-то количество служебных блоков.
...
...
Рейтинг: 0 / 0
16.10.2017, 08:01
    #39536677
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Elic
6 крохотных лобиков
Код: plsql
1.
insert into qz_clob select level from dual connect by level <= 6;

Пардон, там их 6.
...
Рейтинг: 0 / 0
16.10.2017, 11:08
    #39536755
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fes, кодировка у базы какая?
...
Рейтинг: 0 / 0
16.10.2017, 12:38
    #39536814
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Nobody1111y_fes, кодировка у базы какая?
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8
...
Рейтинг: 0 / 0
16.10.2017, 13:02
    #39536831
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesNLS_CHARACTERSET AL32UTF8В многобайтовой БД clob-ы хранятся в UTF16. Поэтому real_size нужно умножать на 2.
...
Рейтинг: 0 / 0
16.10.2017, 14:48
    #39536907
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Elicy_fesNLS_CHARACTERSET AL32UTF8В многобайтовой БД clob-ы хранятся в UTF16. Поэтому real_size нужно умножать на 2.
То есть dbms_lob.getlength возвращает размер без учета этого обстоятельства?
...
Рейтинг: 0 / 0
16.10.2017, 14:52
    #39536914
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
y_fesТо есть dbms_lob.getlength возвращает размер без учета этого обстоятельства?Разница между символами и байтами непонятна?
...
Рейтинг: 0 / 0
16.10.2017, 15:23
    #39536932
y_fes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про CLOB (занимаемое место)
Elicy_fesТо есть dbms_lob.getlength возвращает размер без учета этого обстоятельства?Разница между символами и байтами непонятна?
Упс ...
ага, все ясно. Спасибо всем.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Еще раз про CLOB (занимаемое место) / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]