我们知道,在9i对数据库进行DDl操作在高并发时或数据量大时会影响DML操作,比如添加,删除字段时,

必须等到DDL完成时,DML操作才开始  ,以下例子为高并发时测试修改字段长度严重影响到生产性能:

session 1;

C:\Documents and Settings\Paul Yi>sqlplus "/as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Tue Apr 1 09:50:09 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL> drop table test;

Table dropped.

SQL> create table test (a char(500),b char(500), c char(500));

Table created.

SQL> alter table test nologging;

Table altered.

SQL> insert /*+ append */ into test select 'a','b','c' from dba_objects;

6174 rows created.

SQL> commit;

Commit complete.

SQL> insert into test select * from test;

6174 rows created.

SQL> /

12348 rows created.

SQL> /

24696 rows created.

SQL> /

49392 rows created.

SQL> commit;

Commit complete.

SQL> select count(*) from test;

COUNT(*)

----------

98784

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> alter table test modify b char(1000);

Table altered.

SQL> alter session set events '10046 trace name context off';

Session altered.

SQL>

session 2: --在修改字段的同时执行session 2的查询sql语句

sql> select   *   from test ;  --此时阻塞

session 3:

SQL> select sid,event from v$session_wait;

SID EVENT

---------- -------------------------------------------------------------

1 pmon timer

2 rdbms ipc message

3 rdbms ipc message

6 rdbms ipc message

8 rdbms ipc message

7 rdbms ipc message

4 rdbms ipc message

9 db file scattered read

5 smon timer

10 library cache lock   --等待事件

13 SQL*Net message to client

SID EVENT

---------- -------------------------------------------------------------

14 SQL*Net message from client

15 SQL*Net message from client

13 rows selected.

SQL> select sid,sql_hash_value from v$session where sid=10;

SID SQL_HASH_VALUE

---------- --------------

10      171085072

SQL> select sql_text from v$sqlarea where hash_value='171085072';

SQL_TEXT

------------------------------------------------------------------------

select * from test       --可以查到阻塞的sql

通过session 1跟踪10046事件可以看到,对以前数据也要修改长度和修改数据字典,所以主要等待时间在这里

update "TEST" set "B"=sys_op_trtb("B",  9, 1000, 1000)

update tab$ set ts#=:2,file#=:3,block#=:4,bobj#=decode(:5,0,null,:5),tab#=decode(:6,0,null,:6),intcols=:7,kernelcols=:8,clucols=decode(:9,0,null,:9),audit$=:10,flags=:11,pctfree$=:12,pctused$=:13,initrans=:14,maxtrans=:15,rowcnt=:16,blkcnt=:17,empcnt=:18,avgspc=:19,chncnt=:20,avgrln=:21,analyzetime=:22,samplesize=:23,cols=:24,property=:25,degree=decode(:26,1,null,:26),instances=decode(:27,1,null,:27),dataobj#=:28,avgspc_flb=:29,flbcnt=:30,trigflag=:31,spare1=:32,spare2=decode(:33,0,null,:33),spare4=:34,spare6=:35 where obj#=:1

update col$ set intcol#=:3,segcol#=:4,type#=:5,length=:6,precision#=decode(:7,0,null,:7),scale=decode(:5,2,decode(:8,-127/*MAXSB1MINAL*/,null,:8),178,:8,179,:8,180,:8,181,:8,182,:8,183,:8,231,:8,null),null$=:9,fixedstorage=:10,segcollength=:11,col#=:12,property=:13,charsetid=:14,charsetform=:15,spare1=:16,spare2=:17,spare3=:18,deflength=decode(:19,0,null,:19),default$=:20 where obj#=:1 and name=:2

update obj$ set obj#=:6,type#=:7,ctime=:8,mtime=:9,stime=:10,status=:11,dataobj#=:13,flags=:14,oid$=:15,spare1=:16, spare2=:17 where owner#=:1 and name=:2 and namespace=:3 and(remoteowner=:4 or remoteowner is null and :4 is null)and(linkname=:5 or linkname is null and :5 is null)and(subname=:12 or subname is null and :12 is null)

oracle扩字段长度有什么影响,修改字段长度应用会影响到生产性能相关推荐

  1. mysql中怎么修改字段_mysql表中怎么修改字段?

    在mysql表中,可以使用"ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;"语句来修改字段名称:使用"ALTER TABLE 表名 MODIF ...

  2. mysql修改字段名称脚本_mysql数据库修改字段及新增字段脚本

    1.修改字段的长度 ALTER TABLE MODIFY COLUMN 字段名  数据类型(修改后的长度) 例句:ALTER TABLE test_table MODIFY COLUMN id INT ...

  3. mysql修改字段长度很慢

    SQL数据库修改某张表主键的长度 在外码表设计中选择"关系",将外码引用的更新规则改为"级联"后,即可修改.你这样设置了以后你修改主码表的字段长度,外码表对应的 ...

  4. oracle添加字段sql_如何用SQL语句添加和修改字段?

    用SQL语句添加字段并不难,下面小编整理了SQL添加和修改字段的基本命令,希望对各位小伙伴有所帮助. 增加字段: alter table 表名 add 字段名 type not null defaul ...

  5. mysql怎么修改表中的文字_mysql表中怎么修改字段?

    在mysql表中,可以使用"ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;"语句来修改字段名称:使用"ALTER TABLE 表名 MODIF ...

  6. 【无标题】mysql增加字段和备注_mysql 修改表名,修改字段类型,增加字段,删除字段,添加字段备注,添加索引...

    mysql语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) 3.修改字段 ...

  7. MySQL增加字段,修改字段,增加索引等语句

    mysql增删改查基本语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) ...

  8. 修改字段类型 Alter table 表名 modify 字段名 字段类型mysql数据库概念及入门语句...

    1.数据库的概念 数据库(DataBase,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.她是一个按数据结构来存储和管理数据的计算机软件系统.数据库的概念实际包括两层意思: ...

  9. Javascript如何修改数组长度?

    修改数组长度 使用"数组名.length"可以获取或修改数组的长度.数组长度的计算方式为数组中元素的最大索引值加1,示例代码如下. var arr = ['a', 'b', 'c' ...

  10. sql增加字段,修改字段属性,设置字段不为空,设置默认值

    新增字段 ALTER TABLE 表名 ADD 字段名 BIT NOT NULL DEFAULT 0; EXEC sys.sp_addextendedproperty @name=N'MS_Descr ...

最新文章

  1. 绩效真的重要吗?绩效管理系统有哪些?
  2. LeanCloud学习笔记(1)
  3. ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载
  4. HDU-1569 方格取数(2) 最小割最大流
  5. 真实收货地址大全2016_中国古典诗词大全汇集了诗经、唐诗、宋词、元曲以及纳兰词,12册精美套装。...
  6. 论文浅尝 | KGQR: 用于交互式推荐的知识图谱增强Q-learning框架
  7. 《论文笔记》ROBUST MAP ALIGNMENT FOR COOPERATIVE VISUAL SLAM
  8. BZOJ2934 : [Poi1999]祭坛问题
  9. 【多线程经典实例】实现一个线程安全的单例模式
  10. 【JavaEE】Spring 事务传播机制
  11. linux下如何创建oracle数据库实例,Linux下新建Oracle数据库实例
  12. python3使用MyQR库生成动态二维码
  13. 江苏小高考计算机什么时候考,2021江苏小高考时间 什么时候考试
  14. html markdown写笔记,谈谈为知笔记的Markdown功能
  15. 美化微信小程序的界面--微信小程序开发中使用vant的完整步骤
  16. 如何在Google搜索到我的网站?
  17. TCP/IP知识总结面试题之Socket服务
  18. 高等流体力学复习04
  19. java中如何将字符串数组转换成字符串(转)
  20. 中小网站在域名、服务器等选择上的一点总结

热门文章

  1. repast HPC初探(运行其自带例子过程中出现的问题)
  2. 拼装机器人感想_机器人学习心得总结
  3. 《Windows游戏编程大师技巧》二、Windows编程模型
  4. 前后端分离项目session跨域失效的解决方案
  5. 小型制造类企业IT云平台
  6. Real-Time Rendering 4th 译文《二十一 虚拟现实与增强现实》
  7. Android3D相册项目,Android Gallery实现3D相册(附效果图+Demo源码)
  8. 【快代理】隧道代理使用教程
  9. eclipse安装yuicompressor插件
  10. [书目20090216]高绩效人士的五项管理 李践作品