Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / AL32UTF16 CLOB / 11 сообщений из 11, страница 1 из 1
11.04.2017, 20:34
    #39436810
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
Я или не знал, или забыл или both..
Коллеги перенесли базу на другой сервер и просел перформанс на нескольких запросах. Посмотрел. Столбец CLOB, внутри английский текст (XML), медианная длина - 2800, ~97% строк - короче 3900 bytes. STORAGE IN ROW.

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit

Сервер 1: почти все в табличном сегменте, размер 7G, NLS_CHARACTERSET WE8MSWIN1252
Сервер 2: почти все в LOB segment, размер 18G, NLS_CHARACTERSET AL32UTF8

это ожидаемо? Пофиксить можно? Мне казалось, что документация уверяла, что al32utf8 без нужды не раздувает размеры, но нашел у Льюиса

"Remember that if the CLOB uses a multibyte character set it will be translated internally to a fixed two-byte character set" - то бишь надежды нет? Я понимаю когда мы создаем varchar2(10 CHAR) нет информации о фактических значениях и резервироваться приходится по максимуму, но как-то ожидал, что клоб не будет вываливаться в оверхед если фактическая длина данных достаточно мала..
...
Рейтинг: 0 / 0
11.04.2017, 20:52
    #39436814
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
Почему в заголовке темы AL32UTF16 ?
...
Рейтинг: 0 / 0
11.04.2017, 20:55
    #39436819
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
Очепятка, пардон, о сиськах, наверное, думал. Намекаете, что при al32utf16 все волшебным образом меняется?
...
Рейтинг: 0 / 0
11.04.2017, 21:06
    #39436822
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
нет не намекаю, сам о таком не задумывался / не сталкивался.

XML тупо храню в BLOB'ах, т.ч. на такие проблемы не нарывался. Долго мучился с XmlType, плюнул и все в BLOB )))
...
Рейтинг: 0 / 0
11.04.2017, 21:45
    #39436838
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
на всякий случай, нашел Doc ID 257772.1 который подтверждает Льюиса "However , CLOB's (and NCLOB's) of varying-width character sets (ex: UTF8, AL32UTF8) are stored in an internal fixed-width Unicode character set on disk." и в большинстве случав это будет AL16UTF16.
То есть остается 1982 ascii символа которые могут храниться вместе с таблицей. Шедро.

В дополнение: BUG 3324897 - LOBS LESS THAN 3964 BYTES ARE STORED OUT-OF-LINE WHILE LOADING USING SQLLDR -- Closed as not a bug
...
Рейтинг: 0 / 0
12.04.2017, 07:29
    #39436956
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
JoeDна всякий случай, нашел Doc ID 257772.1 который подтверждает ЛьюисаСлишком глубоко копнул. Это общедоступно задокументировано ( 4967169 ): RTFM Storing Varying-Width Character Data in LOBs (FAQ)
...
Рейтинг: 0 / 0
12.04.2017, 18:37
    #39437502
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
ElicСлишком глубоко копнул. Это общедоступно задокументировано Как по мне - слишком расплывчато для документации. Устав должен быть понятен последнему дураку :)
"compatible with UCS2" даже не вызывает дискомфорта - ну компатибл и хорошо. Тем более, что тут же везде написано двадцать раз про размер LOB до 4000 In row (как я теперь понимаю подразумевая внутренний размер) и ниже совсем плохо - Data size 3500 enable storage in row. Без всяких экивоков. Для меня термин data в данном контексте - это про полезную составляющую, и совершенно не подразумевает внутренние размеры, заголовки, списки и т.п. Может я просто не достаточно sapienti, спорить не буду. Я надеялся что может есть\появилась какая малозаметная clause при создании лоба (чтонить типа "predictable content" или возможности указать локальный character set), которая позволит таки запихнуть данные :)
...
Рейтинг: 0 / 0
12.04.2017, 19:37
    #39437540
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
JoeDЯ надеялся что может есть\появилась какая малозаметная clause при создании лоба (чтонить типа "predictable content" или возможности указать локальный character set), которая позволит таки запихнуть данные :)Я поступаю так:
Код: plsql
1.
2.
3.
4.
5.
6.
create table …
, req_dump_varchar                varchar2(4000)
, req_dump_clob                   clob

create or replace view …
  , case when req.req_dump_varchar is not null then to_clob(req.req_dump_varchar) else req.req_dump_clob end as req_dump
...
Рейтинг: 0 / 0
12.04.2017, 21:32
    #39437576
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
ElicЯ поступаю так: Я предложил тоже самое, сказали что какие-то сложности с hibernate и проще пересоздать инстанс, так как al32utf8 никому собственно не нужен, на том и остановились, тем более что инстанс будет использоваться с вероятностью 99% одним приложением. Спасибо.
...
Рейтинг: 0 / 0
12.04.2017, 22:10
    #39437589
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
Упс, забыл главную причину - строк короче 1982 относительно немного, так что все равно почти все пойдет в клоб.
...
Рейтинг: 0 / 0
12.04.2017, 22:35
    #39437593
JoeD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AL32UTF16 CLOB
Блин, туплю.. 3964, конечно, таких много, так что причина не главная.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / AL32UTF16 CLOB / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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