工单提交等待中

tech2022-10-27  127

问题背景:

某采用B/S结构的工单处理平台,经常出现提交时长时间等待的现象,依据排除了服务器资源和性能不足原因,初步判定原因:

平台使用人数增多;关键表的数据量累计较大;关键表update、insert时排队;

问题分析:

首先分析了update语句。更新的字段数量和数据内容都较少;而且,update中where条件字段已创建索引继续baidu发现,索引创建太多的话,update和insert时会触发索引维护,影响性能。难道是这原因?后来发现,已经创建的索引中有一个“bitmap”类型的索引

Oracle 数据库的位图索引 (Bitmap Index) 确实是针对那些数值稀疏 (low-cardinality , 低基数 ) 的字段,但是还应记住的一点是,它是针对那些 值不经常改变的 字段的。在实际应用中,如果某个字段的值需要频繁更新,那么就不适合在它上面创建位图索引。在位图索引中,如果你更新或插入其中一条数值为 N的记录,那么相应表中数值为 N的记录(可能成百上千条)全部被 Oracle锁定,这就意味着其它用户不能同时更新这些数值为 N的记录,其它用户必须要等第一个用户提交后,才能获得锁,更新或插入数据。”

解决方案:

删除索引: drop index index_name on table_name ;创建索引: create bitmap index index_name on table_name (column_name) 查询索引:

SELECT  i.index_name,     i.index_type,     i.table_owner,     i.table_name,     i.uniqueness,     c.column_name FROM     user_indexes i,     user_ind_columns c  WHERE     i.index_name = c.index_name;

问题验证:等待时间的考验吧!

 

 

最新回复(0)