首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >甲骨文nvarchar2占用的空间是varchar2的两倍吗?

甲骨文nvarchar2占用的空间是varchar2的两倍吗?
EN

Database Administration用户
提问于 2011-09-08 17:28:44
回答 3查看 12.2K关注 0票数 5

关于这个问题的第4点(参考MS ):

  1. VARCHAR不存储Unicode字符。
  2. NVARCHAR确实存储Unicode字符。
  3. 今天的应用程序应该始终与Unicode兼容。
  4. NVARCHAR占用的空间是存储空间的两倍。
  5. 第4点并不重要,因为存储空间非常便宜。

Oracle数据库也是如此吗?

EN

回答 3

Database Administration用户

发布于 2011-09-08 17:57:18

不完全同意。Oracle为VARCHAR提供了字节语义和字符语义。字符类型的缺省值是字节语义;定义为VARCHAR2(10)的列包含10个字节,这可能与10个字符不同。新列的默认值由参数NLS_LENGTH_SEMANTICS控制。

但是在UTF-8数据库中,可以将列定义为VARCHAR2(10 CHAR),它将包含10个字符。即使其中5个是单字节字符,5个是多字节字符,所有10个都符合。

NCHAR和NVARCHAR2总是使用字符语义。NVARCHAR(20)列将包含20个字符,但可能需要60个字节才能容纳所有字符。

NVARCHAR2限制为4000个字节,这是4000个单字节字符,但只有许多多字节字符的三分之一。(假设每个字符最多三个字节)。

磁盘空间比以前便宜得多。但是,您仍然需要将数据从磁盘中取出,才能使其有用。更多的字节,更多的时间;更多的时间,更多的开销。IME,磁盘空间的成本并不仅仅是那些不需要付费的人。

关于Oracle数据库概念的更多细节。

票数 4
EN

Database Administration用户

发布于 2011-09-09 03:18:20

是的-如果你使用AL32UTF8作为你的字符集,使用AL16UTF16作为你的国家字符集,你的数据主要是在ASCII中。

AL16UTF16总是每个字符需要2字节,AL32UTF8向后兼容ASCII,并且只对ASCII字符使用1字节。

但是对于某些语言来说,AL16UTF16可能比AL32UTF8更高效。

票数 2
EN

Database Administration用户

发布于 2011-10-04 07:05:05

是什么的两倍?如果假设字符集是像we8iso8859p1那样的8位字符集,而国家字符集是默认的al16utf16,那么是的(主要是)。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/5539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档