0x01 SqlServer 生产环境的做法
在SqlServer中,通常用 nvarchar 来存储字符串类型的数据,我们生产环境大量使用该类型,数据长度一般为 nvarchar(255) 、nvarchar(2000)、nvarchar(4000)、nvarchar(max)。
其中,nvarchar(1) 可以存储:一个汉字或者一个字母。
0x02 达梦数据库中需要怎么存
达梦数据库中,在数据库安装时需要关注字符集,重点关注两种类型:GBK 和 UTF8,正确的选择关系到你后面数据是否能存下的问题。敲重点。
就数据类型而已,达梦这边主要用 varchar 和 text 类存储字符串,其中 varchar 最大能存 8188个字符,text 则能存2G的数据。
GBK 中 varchar 类型,一个汉字要占用2个字符,字母和数字占用1个字符。
UTF8 中 varchar 类型,一个汉字要占用3个字符,字母和数字占用1个字符。
这意味着,SqlServer 中原来的 nvarchar(4000) 类型转到达梦。
在 GBK 中,你要用 varchar(8000) 才能存下。
而 UTF8 中,你则需要 text 才能存下,要注意 text 虽然能存下,他是clob类型的,程序中要对应处理。
当然,还有一个要注意的问题,你在达梦需要“开启超长记录”,否则一个 nvarchar(4000) 就把一行记录的存储空间用完了。像我们业务中 SqlServer 大量的单表几百个字段根本没法玩。
0x03 小结
- 达梦中如无必要,请选择GBK的编码,同样的varchar能存更多中文字符。
- 字段多了请开启超长记录,否则一个字段用完了一行的空间。