精华内容
下载资源
问答
  • 业务场景:基于导出的功能上,要求一次性查询10w条数据。但是这个10w的开始值和结束值不固定(比如:startNum = 123; endNum = 100123;)难点一: dubbox时间超时规定为1s,服务调用图如下: 难点二: 数据封装转换...

    业务场景:

    基于导出的功能上,要求一次性查询10w条数据。但是这个10w的开始值和结束值不固定(比如:startNum = 123; endNum = 100123;)

    • 难点一: dubbox时间超时规定为1s,服务调用图如下: 0a0295290888d2b9c8f91d890596b460.png

    • 难点二:
      数据封装转换性能消耗较高,目前使用的BeanUtils

    • 难点三: 并发能力很弱,在分割查询的过程中,如果有其他的服务进入,很容易导致数据混乱

    公司使用的数据库为oracle,目前我自己实现的查询功能总耗时8s。这个时间能不能再次缩短?有没有比较好的方案对数据分割查询?

    对于JDBC batchsize 和 fetchsize的一次尝试

    Batch和Fetch两个特性非常重要,Batch相当于JDBC的写缓冲,Fetch相当于读缓冲。在加入这两个特性之后,查询10w条尝试,根据描述,能个提升4倍的时间。参考文章:http://blog.sina.com.cn/s/blog_9f8ffdaf0102x3nf.html

    代码摘抄之后,修改数据库连接的账户密码。单独使用检查代码是否能够独立运行,main,报错如下:

    Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.example.mybatisplusdemo.temp.Test.fetchRead(Test.java:74)
    at com.example.mybatisplusdemo.temp.Test.main(Test.java:22)复制代码

    采坑一:

    测试的功能为一个完整的springboot工程,当看到报错的的行数的时候,发现指向的是下面这一行

    Class.forName("oracle.jdbc.OracleDriver");

    这个错其实提示很明显,就是找不到驱动包,我们只需要在maven中添加一个oracle的依赖即可。

    com.oracleojdbc611.2.0.3

    当我加入依赖之后,一切都可以照常执行了。测试数据我造了10w数据,发现如果使用fetchsize和不使用,性能确实相差4倍左右的样子。同时如果数据多一些,可能效果还会明显一点。但是同时又出现了新的问题:测试环境和生产环境使用的是两套数据库,公司对生产环境保密很严,拿不到生产环境的密码,如果上线会导致功能出现问题。

    采坑二:

    多环境开发和上线需要多次修改代码。这里其实就已经卡住了,不能再次往下进行。如果可以这么用的小伙伴可以考虑编写多环境的适配器

    反过来想,我们公司使用的mybatis,应该mybatis就会有对应的方法,而且只会比自己写jdbc要好点。

    mybatis中使用fetchsize的一次尝试

    其实冲上面的应用我们可以发现fetchsize其实的作用其实就是避免一次性将数据从数据库中拿出来, 以至于导致在加载到内存的数据过多,而内存溢出,或者导致缓慢。如果fetchsize的值为1w,是指定服务器一次返回1w条数据,如果总数为10w的话服务器就要发送10次。在mybatis中如果使用fetchsize其实也比较简单,比如在xml文件中需要使用sql的语句上直接加上fetchsize即可。如果不想简单处理,可以自己手写ResultHandler来分批处理结果集。这里直接在xml上添加,示例如下:

    id="selectAll" resultMap="BaseResultMap" parameterType="java.util.Map" fetchSize="10000">
    select * from
    (select c.*, ROWNUM rn FROM TABLE c where rownum <= #{endNumber})
    where rn >= #{startNumber}
    • 实测查询结果

    这里使用的fetchsize设置值为1w,如果值越大估计性能提升会不断下降(这里属于博主猜测,没有验证哈,依据就是当不设置的时候就是一次性全部加载,那就相当于无限大,无限大的时候和1w比较值如下表格)

    是否使用fetchsize查询第1次时间查询第2次时间查询第3次时间查询第4次时间查询第5次时间
    1010ms1269ms1091ms1147ms1028ms
    4813ms4736ms4800ms4417ms4580ms

    将fetchsize使用了之后,返回时间为1s左右,但是也只是优化了查询,还可以优化数据的封装。优化到这之后我们可以看到dubbox超时时间需要放宽。

    数据封装优化的思路Dozer –解决难点二

    这里并没有实际去使用,因为需求中使用的时候发现BeanUtils去转换这一环节可以直接去掉。因为数据在传递的终点不是直接发送到前端,而是发送到controller,这种件如果去掉转换消耗会更小,后面在controller直接使用值会更快。

    当然,后期可能会需要使用,因为业务肯定还会迭代这一块。只是目前可以省略。

    Dozer是一个JavaBean映射工具库。据百度介绍,这是一款转换数据的神器。如果使用的话,需要加入它对应的依赖:

    net.sf.dozerdozer5.5.1

    如果要映射的两个对象有完全相同的属性名,那么一切都很简单。

    Mapper mapper = new DozerBeanMapper();
    DestinationObject destObject = mapper.map(sourceObject, DestinationObject.class);复制代码

    实际应用,项目需要返回VO类的数据,但你在mapper中是使用PO类,返回时需要转换

    Mapper announcementDozerMapper =new DozerBeanMapper();
    /**
    * @param announcementPo 原PO类的announcement类型
    * @return 返回VO类的announcement类型
    * @description 将announcement的PO类转化为VO类
    **/
    private AnnouncementVo doToVo(AnnouncementPo announcementPo){
    if(announcementPo == null) {
    return null;
    }
    AnnouncementVo vo = announcementDozerMapper.map(announcementPo, AnnouncementVo.class);
    return vo;
    }
    • 注意:这里最好不要每次映射对象时都创建一个Mapper实例来工作,这样会产生不必要的开销。如果你不使用IoC容器(如:spring)来管理你的项目,那么,最好将Mapper定义为单例模式。

    public class DozerMapperConstant {
    public static final Mapper dozerMapper = new org.dozer.DozerBeanMapper();当做完上面这些的时候发现,已经实现了已被的增速。从耗时8s到现在耗时只需要4s,这个是一个进步。当然这里,并不能满足,还需要进一步优化。

    当优化完成之后,我们再一次去整合代码,数据库的查询从原来的分片查询直接更改为一次查询,响应时间为2s,但是这个时候,数据没有分片查询,导致在controller中调用接口的时候的接受数据是一次性接受的。所以10w数据的接受直接就走了rpc,最后报了如下错误:

    com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout.
    java.lang.NullPointerException: null

    仔细看是超时,这个时候发现其实又回到了原点,所有的优化在传输的时候又暂用回来了。最后去查看的时候才发现,10w的数据并不能直接通过rpc传输。这样会导致调用失败,并不是上面的超时。

    • dubbox传输数据最大值为8M,10w条数据肯定大于8M,所以这个时候查询的优化完成之后要再一次优化dubbox之间的传输。

    这里遵循不添加中间件,只修改代码哈。这里就不展示代码了,最终采用的办法就是分片请求。

    总结

    • fetchsize解决一次性查询时间慢的问题,性能提升4倍

    • 减除转换,直接传递。了解Dozer,为后期的转化做准备

    • dubbox调用,分片请求

    原文 https://juejin.im/post/5d4157975188255d882ec705

    89e91ff12b3e98b391f1dadfc02d7f17.png

    目前100000+人已关注加入我们

    c0159876fffcb57ba0e338f111949bb5.gif afba3a31674dd0fa147364a0070f2e5b.gif 0a7c8c40b2e6e425ade022aebdb5cb53.gif dca20c54a15e67f57667ff2abdb39682.gif 9e42b5566c002de617bcf437406f2efe.gif b14475af8739df95b87fce87950a67e9.gif ad3b3f33228c4eeaaa412ed8d35303b6.gif 14c4bc7fcb2f5bb7f714a15d98b2b5af.gif

    a7915c3ece746be10a36858794dd1f7c.gif 0aa92ece048718352cda21d6de7e2bad.gif 89ba50f469fb07bfba62654a905f3f8a.gif 0ae71c51e3a9e5349adf1c82c61c98e5.gif 26f33d705035d6e2d4ab7dafc3c8c862.gif 50faf8e5ca5f1469005143a7808474e5.gif 70751ba9cffbacf677b1625cab8d163c.gif 9e42b5566c002de617bcf437406f2efe.gif

    展开全文
  • 在这里插入代码片 create table test_p_2( log number(10) primary key, name varchar2(20), psaaword varchar2(20) ); 创建序列 create sequence seq_log;...插入100万条数据 --随机向一张表插入 1百
    -- 创建表
    create table test_p_2(
           log number(10) primary key,
           name varchar2(20),
           psaaword varchar2(20)
    );
    

    创建序列

    create sequence seq_log;
    

    测试插入sql语句

    insert into test_p_2 values(seq_log.nextval,'kikiwen','123456');
    

    插入100万条数据

    --随机向一张表插入 1百万数据
    declare--数据块头
        v_cnt number :=0;--定义计数器
    begin--数据块执行部分
        for i in 1..1000000 loop --for循环tou (for 条件 loop     end loop)
          v_cnt := v_cnt +1;--循环一次计数器+1
             insert into test_p_2 values(
                    seq_log.nextval,--获取下一个序列
                    DBMS_RANDOM.STRING ('a', 5),--随机产生5个26字母的任意大小写
                    DBMS_RANDOM.STRING ('a', 10)); --随机产生10个26字母的任意大小写
        if v_cnt >= 10000 then --if条件判断(当数据插入到10000条时保存一次)
                commit;--保存
              v_cnt :=0;--清空计数器
        end if;--if结束
        end loop;--for循环结束
        commit; --不管最后数据是多少再保存一次,防止有零头没保存
    end;--数据块结束
    /--结束符号
    

    比较有索引和没有索引的查询速度

    select * from test_p_2;
    -- 有索引的查询速度0.020秒
    select * from test_p_2 where log ='12046';
    -- 无索引的查询速度0.031秒
    select * from test_p_2 where name ='xBiYG';
    
    -- 总结:添加索引的字段查询速度比没有添加索引的查询速度快
    

    有索引的查询
    在这里插入图片描述没有索引的查询
    在这里插入图片描述

    展开全文
  • analyze table qpxx compute statistics; 对表做一个分析,速度就上来了

    analyze table qpxx compute statistics;
    对表做一个分析,速度就上来了

    展开全文
  • [color=red]//得到用户列表为10万的其中一个用户[/color] string useremail = DBsource.ReturnUserEmail("select U.UserEmail from (select UserEmail,ROWNUM RN from tablename where isactive=1) U where RN=" + ...
  • WHERE ROWNUM <= 10 ![图片说明](https://img-ask.csdn.net/upload/201909/25/1569401661_3537.png) 执行计划: ![图片说明](https://img-ask.csdn.net/upload/201909/25/1569401738_732845.png) ...
  • Oracle10g大表查询优化

    2010-10-29 13:32:58
    BILL表有129个字段,24条数据。 虽然数据量不是很大,但是字段过多,造成了读取表的效率不高,经常出现资源竞争频繁,I/O阻塞。 因此有必要对BILL表进行优化,提高效率。 对大表一般采用分区表的方式进行优化...
    Oracle10g大表查询优化
    对于Oracle中的大表,我们可以采用分区表的方式进行优化,以提高访问表的性能。
    以下是对长庆物资系统的BILL表的优化过程:
    分析:
    BILL表有129个字段,24万多条数据。
    虽然数据量不是很大,但是字段过多,造成了读取表的效率不高,经常出现资源竞争频繁,I/O阻塞。
    因此有必要对BILL表进行优化,提高效率。
    对大表一般采用分区表的方式进行优化,由于Oracle没有提供直接将普通表转变为分区表的方式,必须通过重建表的方式进行优化,一般有三种方式实现,根据不同情况使用,
    第一种:利用原表重建分区表,方法简单易用,由于采用DDL语句,不会产生UNDO,且只产生少量REDO,效率相对较高,而且建表完成后数据已经在分布到各个分区中了;缺点是对于数据的一致性方面还需要额外的考虑。由于几乎没有办法通过手工锁定T表的方式保证一致性,在执行CREATE TABLE语句和RENAME T_NEW TO T语句直接的修改可能会丢失,如果要保证一致性,需要在执行完语句后对数据进行检查,而这个代价是比较大的。另外在执行两个RENAME语句之间执行的对T的访问会失败。适用于修改不频繁的表,在闲时进行操作,表的数据量不宜太大。
    第二种:使用交换分区的方法,只是对数据字典中分区和表的定义进行了修改,没有数据的修改或复制,效率最高。如果对数据在分区中的分布没有进一步要求的话,实现比较简单。在执行完RENAME操作后,可以检查T_OLD中是否存在数据,如果存在的话,直接将这些数据插入到T中,可以保证对T插入的操作不会丢失;缺点是仍然存在一致性问题,交换分区之后RENAME T_NEW TO T之前,查询、更新和删除会出现错误或访问不到数据。如果要求数据分布到多个分区中,则需要进行分区的SPLIT操作,会增加操作的复杂度,效率也会降低;适用于包含大数据量的表转到分区表中的一个分区的操作。应尽量在闲时进行操作。
    第三种:使用在线重定义的方法,保证数据的一致性,在大部分时间内,表T都可以正常进行DML操作。只在切换的瞬间锁表,具有很高的可用性。这种方法具有很强的灵活性,对各种不同的需要都能满足。而且,可以在切换前进行相应的授权并建立各种约束,可以做到切换完成后不再需要任何额外的管理操作;缺点是实现上比上面两种略显复杂。
    由于我们是在生产系统上进行优化,必须保证数据的完整性,所以选择第三种方式进行优化,优化过程:
    1、创建一个中间表,这个表要和BILL表的结构一致。
    create table BILL_TEST
    (
    BILL_ID CHAR(8) not null,
    PLAN_MAKE_TIME DATE,
    UP_TIME DATE not null,
    UP_NAME VARCHAR2(80),
    SHENPI_PERSON VARCHAR2(20),
    UP_MODE VARCHAR2(10) not null,
    LOW_NAME VARCHAR2(80),
    LOW_UP_TIME DATE,
    UP_PERSON VARCHAR2(20) not null,
    MAX_TYPE VARCHAR2(50) not null,
    WARE_TYPE_SIZE VARCHAR2(1000) not null,
    ERJI_WARE_TYPE VARCHAR2(8) not null,
    ERJI_WARE_NUM NUMBER(15,4) not null,
    ERJI_NEED_TIME DATE not null,
    TUIJIAN_CORP VARCHAR2(20) default 1 not null,
    SUPPLY_PINGKU CHAR(10) default 0,
    JIHUA_ORDER_TIME VARCHAR2(20),
    ORDER_TYPE VARCHAR2(50),
    ORDER_MODE VARCHAR2(50),
    ORDER_TIME DATE,
    GET_WARE_TIME DATE,
    SUPPLY_CORP VARCHAR2(500),
    CAIGOU_WARE_NUM NUMBER(10,4),
    CAIGOU_WARE_PRICE NUMBER(12,3),
    CAIGOU_NEED_TIME DATE,
    CAIGOU_NEED_ADDR VARCHAR2(200),
    HETONG_ID VARCHAR2(100) default 0,
    ZHILIANG_NOTE VARCHAR2(200),
    ZHILIANG_MONEY NUMBER(12,2),
    CONTENT VARCHAR2(200),
    ERJI_WARE VARCHAR2(100),
    WT_DATE DATE,
    END_NUM VARCHAR2(20),
    QICAI_WARE VARCHAR2(100),
    SCCJ VARCHAR2(200),
    JHDATE VARCHAR2(100),
    JHNUM VARCHAR2(20),
    SHOW NUMBER(1) default 0,
    JH_ADDR VARCHAR2(200),
    LAST_PRICE NUMBER(12,2),
    PRE_PRICE NUMBER(12,2),
    CLASS_ID VARCHAR2(20),
    LD_MARK VARCHAR2(10) default 0,
    ASK_PRICE NUMBER(12,2),
    PLAN_CODE VARCHAR2(50),
    ARRIVE_TIME DATE,
    ARRIVE_WEIGHT VARCHAR2(50),
    ARRIVE_QUALITY VARCHAR2(50),
    BILL_STEP NUMBER(10,2) default 0,
    XJD_CODE NUMBER(10),
    XJD_DATE DATE,
    XJD_SUPPLY VARCHAR2(1000),
    OUT_FLAG VARCHAR2(2) default 0,
    YY_PRICE NUMBER(12,2) default 0,
    BASE_BILL VARCHAR2(8),
    BASE_ID VARCHAR2(4),
    TECK_ASK VARCHAR2(4000),
    NEW_WARE_TYPE_SIZE VARCHAR2(1000),
    NEW_ERJI_TYPE_SIZE VARCHAR2(100),
    BIDE_YEAR VARCHAR2(4),
    BIDE_ID VARCHAR2(5) default 0,
    BIDE_FINISH NUMBER(1) default 0,
    YSD_ID VARCHAR2(1000) default 0,
    BG_TYPE NUMBER(1) default 0,
    PLAN_CHECK VARCHAR2(20),
    IF_ENERGY VARCHAR2(1) default 0,
    LAST_SUPPLY VARCHAR2(200),
    ASK_STEP NUMBER(4,1) default 0,
    ASK_END NUMBER(1) default 1,
    ASK_TIMES NUMBER(1) default 0,
    CON_END_STEP NUMBER(1),
    PZ_CODE VARCHAR2(50),
    FP_CODE VARCHAR2(100),
    QC_STEP NUMBER(2) default 0,
    QC_PRICE NUMBER(12,2),
    QC_SUPPLY VARCHAR2(200),
    QC_SCCJ VARCHAR2(100),
    QC_CON_ID VARCHAR2(20),
    QC_JHDATE VARCHAR2(100),
    QC_JHADDR VARCHAR2(100),
    BJ_TYPE NUMBER(1),
    BJ_INFO VARCHAR2(100),
    FP_FILE VARCHAR2(20),
    BJ_FILE VARCHAR2(100),
    CC_STYLE NUMBER(1) default 0,
    KROOM_ID VARCHAR2(40),
    YSOVER VARCHAR2(10) default 0,
    YSD_SJDHRQ VARCHAR2(11) default 0,
    YSD_CPH VARCHAR2(10) default 0,
    YSD_YDH VARCHAR2(10) default 0,
    YSD_DUN NUMBER(10,2) default 0,
    YSD_GEN NUMBER(10,2) default 0,
    YSD_MI NUMBER(10,2) default 0,
    YSD_SJBGH VARCHAR2(100) default 0,
    YSD_KS VARCHAR2(1) default 0,
    FLD_BH VARCHAR2(2000) default 0,
    WZCD VARCHAR2(100),
    QC_CODE NUMBER(10),
    JH_STIME DATE,
    CG_STIME DATE,
    LD_STIME DATE,
    CG_PTIME DATE,
    JG_PTIME DATE,
    IF_PRINT NUMBER(1) default 0,
    KC_PRICE NUMBER(12,2),
    KC_RATE NUMBER(8,3),
    KC_ID NUMBER(8),
    YSD1_FLAG NUMBER(1) default 0,
    FLD_FLAG NUMBER(1) default 0,
    YSD2_FLAG NUMBER(1) default 0,
    OLD_PRICE NUMBER(12,2),
    TECK_ASK_FILE VARCHAR2(40),
    ZL_STIME DATE,
    IF_JS NUMBER(1),
    SITE_NAME VARCHAR2(200),
    CLASS_ID_OLD VARCHAR2(20),
    SD_FLAG NUMBER(1) default 0,
    DJSD_FLAG NUMBER(1) default 0,
    CON_JHDATE DATE,
    CON_CONFIRM_DATE DATE,
    RETURN_FLAG NUMBER(1),
    PLAN_TYPE VARCHAR2(20),
    WW_FLAG NUMBER(1) default 0,
    YS_FLAG NUMBER(1) default 0,
    RUN_TIME DATE,
    OLD_WARE_NUM NUMBER(15,4),
    JH_CTIME DATE default sysdate
    )
    tablespace DEMO_USER
    partition by range(up_time)
    (
    partition p1 values less than (to_date('2002-1-1', 'yyyy-mm-dd')),
    partition p2 values less than (to_date('2003-1-1', 'yyyy-mm-dd')),
    partition p3 values less than (to_date('2004-1-1', 'yyyy-mm-dd')),
    partition p4 values less than (to_date('2005-1-1', 'yyyy-mm-dd')),
    partition p5 values less than (to_date('2006-1-1', 'yyyy-mm-dd')),
    partition p6 values less than (to_date('2007-1-1', 'yyyy-mm-dd')),
    partition p7 values less than (to_date('2008-1-1', 'yyyy-mm-dd')),
    partition p8 values less than (maxvalue));
    在新建的表中创建8个分区,将每一年的数据放在一个分区中,用up_time字段区分时间段。
    2、开始重定向表
    begin
    dbms_redefinition.can_redef_table('demo_user','bill',dbms_redefinition.cons_use_pk);
    dbms_redefinition.start_redef_table('demo_user','bill','bill_test',null,dbms_redefinition.cons_use_pk);
    end;
    3、创建与BILL_TEST相关联的对象,保持和BILL表的一致
    alter table BILL_TEST
    add constraint TEST_BILL_UK21144125351128 unique (PLAN_CHECK)
    using index
    tablespace DEMO_USER;

    create index TEST_SY_BILL_BASE_ID on BILL_TEST (BASE_ID) tablespace DEMO_USER;

    create index TEST_SY_BILL_HETONG_ID on BILL_TEST (HETONG_ID) tablespace DEMO_USER;

    create index TEST_SY_BILL_MAX_TYPE on BILL_TEST (MAX_TYPE) tablespace DEMO_USER;

    create index TEST_SY_BILL_STEP on BILL_TEST (BILL_STEP) tablespace DEMO_USER;

    create index TEST_SY_BILL_UP_TIME on BILL_TEST (UP_TIME) tablespace DEMO_USER;
    4、同步分区表
    begin
    dbms_redefinition.sync_interim_table('demo_user','bill','bill_test');
    end;
    5、完成重定向表
    begin
    dbms_redefinition.finish_redef_table('demo_user','bill','bill_test');
    end;
    6、删除中间表
    drop table bill_test;
    至此,完成优化,
    展开全文
  • 万条数据插入测试

    2008-10-08 09:46:23
    昨天做了个测试向oracle10G 使用hibernate 通过webserive调用 插入两万条数据, 并且启动JBPM 工作流。仅仅是启动了工作流,在构造插入的对象的时候有两个字段是通过webserivce 查询其他系统的数据来的 。。。...
  • 2018/8/1 ,几万条里会有那么3-4个,2018-10-24 星期日 下午 9:00:00 2018-10-24 星期日 下午 23:00:00. 问:如何查询出字段T_date 中日期大于2018年3月1日的所有数据,最低限度是要查出除了含有2018-10-24 星期日...
  • Oracle级联查询

    2017-12-05 11:30:57
    增删改查是最基本的业务,也是变化和要求最多的业务,那么问题如下: 假如一个A对应N个B,一个B对应N个C,...把四张表left join到一起,然后查20条数据出来(速度较快,但是没有满足分页需求,而且查出来的数据一对多的
  • 问题描述:千辛万苦往数据库里存了几十万条数据,发现由于程序问题,有将近10万条的冗余数据,此时内心是无比崩溃的,关于怎么查询是否有冗余数据见上一篇文章(https://my.oschina.net/u/3636678/blog/2967373)。...
  • 有一个winform程序 一个只有一列的datagridview,是几千条(也有可能是几万条)身份证号记录(此数据是从excel导入的) ...程序运行很慢,查询3000条数据,要10多分钟。 求助:如何查会快一些呢?
  • oracle性能优化-模糊查询

    千次阅读 2018-06-11 11:08:19
    以下是几种检索方式的效率对比,表中有800万条数据。1.使用正则表达式进行检索2.使用双%进行模糊查询3.使用单%进行模糊查询4.使用=号进行精准查询以上4种查询都获得同样的查询结果,如下10条记录:=================...
  • A表的数据越来月庞大了,从1万条数据到10万条,从10万条数据到100万天等等,这时原来查询A表数据的业务就显得很吃力了。这时候会考虑到将A表的数据经过筛选在导入B表,然后查询B表就可以了。A表不用来查询,这样可以...
  • oracle删除大表的数据的方法

    千次阅读 2012-04-24 14:53:45
    今天在公司中碰到访问表数据(test 表)速度非常慢,简单的一个select 语句花了10多分钟, 后来查询一下表的数据量,一共有278条数据,而且这个数据表的数据大都过期了,对于现在的业务没什么用。可悲的是这个表...
  • 创建普通的表使用toad的generate data生成一千万条记录 创建表并以哈希方式分区 创建分区表的同时导入海量数据 小插曲-表空间扩容 分区表上先建立表结构并导入数据然后建立索引 测试结果 测试结论测试环境Oracle ...
  • 本次实验是在笔者上学期期末一次课程实习中的一部分,现在整理出来以供参考。本次数据用的是不同数量级别上的数据分别在Oracle和... 耗时:2341ms10万条 耗时:22544ms100万条 耗时:257766ms1000万条: 耗时:548
  • 环境:windows2003 r2 + pb7.0.3 10009 +oracle10.2症状:一个收费记录的表,当查询记录超过4万条的时候,就出现每次查询的记录不一样。比例,我要查询收费时间在2008/01/01 到2009/11/25的记录,查询的时候,第一...
  • 我们需要把几亿条数据缓存到内存里提供给这种每天可能只运行几次的查询吗?你可以同意,但是你的老板是不会同意的,这样做的成本太高了,而且完全没有必要,因为它只是一个报表系统,对数据库的响应时间要求不高,...
  • 我们在SpringMVC框架中使用那个presto查询hive的数据做展示时,发现在table里分页是个不可避免的话题。 ...oracle里Count一亿条数据 大于10分钟 mysql,3000行记录,count(*)需要200s hive+p...
  • 淘宝订单有每天晚上同步机制,公司有10万个淘宝卖家客户,如果每个客户平均1000个订单就达到1亿订单的数据量,除去重复订单也会有千万买家会员数据,如果采用mysql存储查询起来性能肯定不行,这里指单台mysql...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  • 前段时间做了一个虚拟组织的创建。这个虚拟组织的创建是从现有的组织中读取数据然后进行分析...可是从现有的组织中读取10万条的记录,然后逐条分析,保存,在写日志记录,在为每个应用写下发队列结果性能非常低。我们
  • oracle索引index

    2017-12-03 15:42:23
    当数据库表中存在很多条记录,如大于10万条时,查询速度便成为一个问题 2.分析: 在字典中查询指定偏旁的汉字时,先查询目录中指定的偏旁位置,在查询指定笔画的汉字,找到汉字后根据页码找到汉字 在书中查询某内容...
  • ORACLE直方图

    2013-08-02 11:45:51
    今天刚好碰到了,就来研究一下:先来个直观的定义:直方图是Oracle CBO优化器使用的一种统计数据,比如有一个字段a,取值范围是1-10000,整个表有100万条记录,那么如果你要查询a>10 and a<100的记录,如果...
  • 同时在SQL语法上也作了优化,也建了索引,但索引已经没什么用了,因为我们的SQL语句很长,条件也比较复杂,无法命中索引,实在不知道 如何提升速度了,其实现在的单表数据量才120几万条。 在这里想问一下达人们有...
  • Oracle-索引

    2018-08-25 12:35:41
    据经验来说,一般超过10万条就应该考虑索引,但不是绝对的。有些表查询频繁,消耗资源多。应该及时查看进行分析,及时加上应该有的索引,使应用系统跑得轻松。用户会满意。某些表不常使用,就可以缓一缓,看情况和...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

oracle查询10万条数据