powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Еще раз про CLOB (занимаемое место)
25 сообщений из 25, страница 1 из 1
Еще раз про CLOB (занимаемое место)
    #39535848
y_fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица, секционированная по дате, и с 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
Еще раз про CLOB (занимаемое место)
    #39535905
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
y_fesПочему так различаются размеры, что я не учитываю?1) retention
2) сам механизм выделения блоков
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535916
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtendery_fesПочему так различаются размеры, что я не учитываю?1) retentiony_fes
Код: plsql
1.
PCTVERSION 0
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535917
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y_fesСтроки не обновляются, только вставляются.Удаляются?
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535918
y_fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

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

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


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


Elic, это не значит что при апдейте, старое сразу перетрется новым :)
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535930
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
y_fesА чуть подробней можно? У него такие высокие накладные расходы, или что-то криво сконфигурировано? Куда посмотреть?ну выделяется же не по чанкам и даже не по блокам...
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535936
y_fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Еще раз про CLOB (занимаемое место)
    #39535949
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderчто при апдейтеy_fesСтроки не обновляются,
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535955
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elicxtenderчто при апдейтеy_fesСтроки не обновляются,сразу и целиком или с конкатенацией?
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535957
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
в любом случае оба моих пункта относятся к самой формуле...
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39535958
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
y_fes,

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

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

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

xtenderв любом случае оба моих пункта относятся к самой формуле...
Чет` недогоняю ... К формуле чего? Или к какой?
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39536052
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
y_fesTABLESPACE xxxuniform? DBMS_SPACE.SPACE_USAGE?
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39536133
y_fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtendery_fesTABLESPACE xxxuniform? DBMS_SPACE.SPACE_USAGE?
Autoallocate
На DBMS_SPACE.SPACE_USAGE правов нет. :-( Если найду кого с правами - выдам результат.
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39536243
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Еще раз про CLOB (занимаемое место)
    #39536244
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y_fesОкруглял размер конкретного CLOB до максимального кол-ва целых 8к блоков.1) В каждом блоке есть служебная информация.
2) В каждом экстенте есть какое-то количество служебных блоков.
...
...
Рейтинг: 0 / 0
Еще раз про CLOB (занимаемое место)
    #39536677
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
6 крохотных лобиков
Код: plsql
1.
insert into qz_clob select level from dual connect by level <= 6;

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


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