禁忌26:慎重考虑字符集
在一个应用系统中,涉及应用服务器主机字符集、数据库字符集以及客户端字符集的兼容性问题,要在系统构架时统一考虑,确保从前台到后台到数据库的字符集都是兼容的。
禁忌27、慎用视图嵌套
视图最好建在表上,尽量不要基于视图嵌套建立视图,一方面一般视图嵌套不要超过2个为宜,视图嵌套层级多访问效率会下降,并且可维护性变差。
禁忌28:忌数据对象名过长
Oracle 的表名、字段名等对象命名字节个数限制在了30个字节,不能超过30。
禁忌29:谨慎表和索引的inittrans设置
每个块都有一个块首部。这个块首部中有一个事务表。事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的INITRANS 设置指定。对于表,这个值默认为2(索引的 INITRANS 也默认为2)。事务表会根据需要动态扩展,最大达到 MAXTRANS 个条目(假设块上有足够的自由空间)。所分配的每个事务条目需要占用块首部中的23~24 字节的存储空间。注意,对于 Oracle 10g 以上版本,MAXTRANS 则会忽略,所有段的 MAXTRANS 都是 255。
也就是说,如果某个事物锁定了这个块的数据,则会在这个地方记录事务的标识,当然那个事务要先看一下这个地方是不是已经有人占用了,如果有,则去看看那个事务是否为活动状态。如果不活动,比如已经提交或者回滚,则可以覆盖这个地方。如果活动,则需要等待(闩的作用)。
所以,如果有大量的并发访问使用的这个块,则参数不能太小,否则资源竞争将导致系统并发性能下降。
以上内容摘自《[转 ]Oracle中INITRANS和MAXTRANS参 数》。
在创建表和索引时,需要根据表数据的访问频度和数据量来评估设置的init trans 值,虽然不够时 Oracle 会自动增加,但增加的过程需要 Oracle 进行评估,且该评估机制是针对所有对象的,需要排队,如果inittrans值设置过小,就会影响系统的并发性能。因此系统设计和部署时需要考虑不同表的inittrans的设置。