关于这个问题的第4点(参考MS ):
Oracle数据库也是如此吗?
发布于 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数据库概念的更多细节。
发布于 2011-09-09 03:18:20
是的-如果你使用AL32UTF8作为你的字符集,使用AL16UTF16作为你的国家字符集,你的数据主要是在ASCII中。
AL16UTF16总是每个字符需要2字节,AL32UTF8向后兼容ASCII,并且只对ASCII字符使用1字节。
但是对于某些语言来说,AL16UTF16可能比AL32UTF8更高效。
发布于 2011-10-04 07:05:05
是什么的两倍?如果假设字符集是像we8iso8859p1那样的8位字符集,而国家字符集是默认的al16utf16,那么是的(主要是)。
https://dba.stackexchange.com/questions/5539
复制相似问题