设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 服务 百度 专业
当前位置: 首页 > 站长百科 > 正文

oracle – 以字节为单位的Clob大小

发布时间:2021-01-16 10:12 所属栏目:[站长百科] 来源:网络整理
导读:我有一个具有以下NLS设置的数据库 NLS_NCHAR_CHARACTERSET - AL16UTF16NLS_CHARACTERSET - AL32UTF8 有一个表,其中包含存储base64编码数据的clob列. 由于字符主要是英文和字母,我假设每个字符仅占用1个字节作为clob,使用NLS_CHARACTERSET的字符集进行编码.

我有一个具有以下NLS设置的数据库

NLS_NCHAR_CHARACTERSET  - AL16UTF16

NLS_CHARACTERSET - AL32UTF8

有一个表,其中包含存储base64编码数据的clob列.
由于字符主要是英文和字母,我假设每个字符仅占用1个字节作为clob,使用NLS_CHARACTERSET的字符集进行编码.

使用内联启用的clob列,clob将以内联方式存储,除非它的大小超过4096字节.但是,当我尝试使用2048个字符存储一组数据时,我发现它没有内联存储(通过检查表DBA_TABLES).那么它是否意味着每个字符只使用1个字节?任何人都可以详细说明这个吗?

另一项测试补充:
使用块大小为8kb的clob列创建一个表,使初始段大小为65536字节.
在clob列中插入一行包含32,768个字符.可以通过查询dba_segments来告知第二个范围创建.

解决方法

http://docs.oracle.com/cd/E11882_01/server.112/e10729/ch6unicode.htm#r2c1-t12

它说:

Data in CLOB columns is stored in a format that is compatible with
UCS-2 when the database character set is multibyte,such as UTF8 or
AL32UTF8. This means that the storage space required for an English
document doubles when the data is converted

因此看起来CLOB在内部将所有内容存储为UCS-2(Unicode),即每个符号固定2个字节.因此,它存储内联4096/2 = 2048个字符.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读