`
up2pu
  • 浏览: 223122 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]修改字段长度应用会影响到生产性能

    博客分类:
  • DB
阅读更多
我们知道,在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)



原文地址:http://space.itpub.net/7199859/viewspace-220511
分享到:
评论

相关推荐

    H2 Database 教程

    H2数据库适合嵌入到Java应用程序中,不需要额外的安装步骤,便于测试和开发。 1. H2数据库特点 H2数据库具有以下特点:支持多种Java虚拟机,包括服务器和客户端版本;支持广泛的SQL语句;提供了一个Web控制台,方便...

    ORACLE中CLOB字段转String类型

    ### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...

    sharepoint 列表自定义字段类型

    - **性能影响**: 考虑到自定义字段类型可能对列表性能的影响,避免过度复杂的设计。 - **兼容性与升级**: 确保自定义字段类型与SharePoint的版本兼容,并考虑未来升级的影响。 综上所述,SharePoint的自定义字段...

    oracle数据库中的对表中字段的增删改查

    但要注意,删除字段可能会导致与该字段关联的数据丢失,并可能影响到依赖于这个字段的其他对象,如索引、触发器或约束。删除字段的命令如下: ```sql ALTER TABLE users DROP COLUMN email; ``` 请注意,Oracle...

    oracle 实际值超过数据库某个字段指定长度报错解决

    此外,考虑到性能和存储成本,应谨慎选择合适的字段长度,避免过于宽松的定义导致浪费资源。 综上所述,解决Oracle中`ORA-01438`错误的关键在于理解数据需求并调整字段定义以适应这些需求。同时,优化数据处理策略...

    oracle中blob 字段类型的应用

    在实际应用中,使用Blob字段类型时,需要考虑性能和存储需求。由于Blob数据存储在数据库中,这可能会增加数据库的大小和I/O负载。因此,对于非常大的文件,可能需要考虑使用Bfile或外部存储解决方案以优化性能。 在...

    SQLServer常用字段类型

    2. **Timestamp**:自动递增的列,用于检测行的更改,每次修改行时其值都会更新,是数据版本控制的重要工具。 3. **Uniqueidentifier**:用于存储全局唯一标识符(GUID),确保每一行数据的唯一性,适用于分布式...

    oracle变更数据表字段类型

    为了更清楚地展示如何在Oracle中更改字段类型,我们将通过一个具体的例子来演示整个过程。 假设我们有一个名为`test_skate`的表,其中包含一个`ID`字段,其类型为`NUMBER`。现在我们需要将其类型更改为`VARCHAR2(50...

    ABAP的系统字段,供参考

    可以利用此字段通过指定偏移量和长度来直接访问单个字母,而不受代码页的影响。这对于进行简单的字符操作非常有用。 ##### 2. `sy-batch` - **类型**:`C(1)` - **说明**:如果ABAP程序在后台运行,则该字段会被...

    对比MySQL中int、char以及varchar的性能

    在MySQL数据库中,数据类型的选用对于性能有着显著的影响,特别是当我们处理大量数据时。本文主要讨论了int、char和varchar这三种常见数据类型在性能上的差异。通常,这些差异在无索引和有索引的情况下的表现会有所...

    MySQL字段类型列表

    在设计数据库表结构时,选择合适的字段类型至关重要,因为它直接影响到数据的存储效率、查询速度以及数据库的整体性能。合理地使用字段类型,可以有效节省存储空间,提高查询效率,并确保数据的准确性。在实际应用中...

    mysql的字段类型及简单的操作命令

    MySQL 字段类型及操作命令 MySQL 是一个关系型数据库管理系统,广泛应用于各种 web 应用程序中。 MySQL 中的字段类型是指数据库表...只有熟练掌握这些知识,才能更好地设计和维护数据库,提高应用程序的性能和安全性。

    SQL SERVER的字段类型说明

    在SQL Server中,字段类型(或数据类型)是定义数据库中每列数据特性的关键元素。这些类型决定了数据可以存储的格式、范围以及占用的空间。...理解并正确应用这些字段类型是SQL Server数据库设计的基础。

    易语言数据库字段结构编辑

    6. 动态调整字段结构:在数据库应用的生命周期中,有时可能需要对字段结构进行修改。易语言提供了一些动态修改数据库结构的函数,如增加、删除和修改字段。 7. 数据操作:最后,有了清晰的字段结构,我们可以编写...

    SQL SERVER字段类型说明

    ### SQL Server 字段类型详解 #### 一、概述 在 SQL Server 数据库系统中,字段类型的选择对于确保数据的正确存储与高效处理至关重要...在实际应用中,应根据具体需求仔细考虑每种类型的特点,选择最合适的字段类型。

    sql语句替换某列所有字段中的某个字符(如替换‘1,2,3,4’中的4)

    - 执行效率:如果表中数据量巨大,应考虑更新操作对性能的影响,可能需要优化查询或在非高峰时段执行。 通过上述讨论,我们可以看到,利用SQL语句中的`REPLACE()`函数,可以高效且批量地完成对数据库表中特定字符的...

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    5. **验证结果**:完成转换后,验证结果以确保数据完整性和准确性没有受到影响。 ### 结论 数据库中CLOB类型转换的问题是一个复杂但又常见的任务,需要综合考虑多种因素并采取合理的措施以避免潜在的风险。通过...

    ChenHuajun#chenhuajun.github.io#2017-09-12-PostgreSQL字符类型长度变更的性能

    背景业务有时会遇到表中的字符型字段的长度不够用的问题,需要修改表定义。但是表里的数据已经很多了,修改字段长度会不会造成应用堵塞呢?测试验证做了个小测试,如下建表

    提高性能的SQL编写建议

    - 根据实际需要定义字段长度与类型,避免浪费存储空间。 - 连表查询时,确保字段类型一致以提高查询效率。 - 对于新的字段,依据具体应用场景定义长度和类型。 - 关于`Char`与`Varchar2`的区别: - `Char`类型...

Global site tag (gtag.js) - Google Analytics