在最近的一个报告分析中,再次遭遇到全中文的数据结构设计。从图示中可以看到,所有的表名、索引名等,都是用中文命名的。
我们不考虑面向对象、方法那回事,单纯从技术角度讨论一下,中文命名在可能存在什么坏处呢?
从性能上来看,通常每个中文字占用两个字节,会显著增加存储空间,比如图示中“检验标本记录”会占用12个字节,而如果用拼音缩写“JYYBJL”,空间会减少一半,还可以进一步压缩,英文缩略也是如此。
以中文存储记录表名、索引名、字段名,会显著增加SQL文本长度,占用更多的DC字典缓存,占用更多的Shared Pool SQL Area,这可能会直接导致Shared Pool的内存过高,在这个案例中,SP的内存消耗超过了Buffer Cache。
由此Shared Pool上的竞争都可能加剧,也可能可以看到Library Cache Lock,Row Cache Objects等闩锁竞争。