zoukankan      html  css  js  c++  java
  • oracle优化

    sql语句 优化方式:

    1select 语句中避免用"*"

        oracle在解析时,会将“*”依次转换成所有的列名(数据字典完成)耗时

    2尽量多用commit语句

      及时提交,释放资源

    3用exists代替in

     in子句会执行表的遍历,效率非常低

    4尽量使用共享池已有的sql语句

    为了不解析相同的sql语句,在第一次解析之后,oracl将sql语句存放在共享池的内存中

    减少I/O操作,提高I/O操作效率,是数据库优化的主要内容

    索引 优化:

    索引是把表的一些列值提取出来组织的,当使用索引时,不是先查询基表,而是先检索索引。找到满足条件后,用物理地址返回到基表中将其他数据读取出来,完成查询。

    创建单列索引:

    create index employ_name on scott.emp(empname);
    View Code

    创建多列索引:

    create index emplouyee_noname on scott.emp(empname,empno);
    View Code

    重建索引:

    alter index employ_name rebuild online;
    View Code

    同时使用索引避免对整个表的访问,减少了很多磁盘I./O操作。

    数据簇 优化:

    数据簇是将相关或相似的行在物理上存储在一起,有索引数据簇和散列数据簇两种。由于物理上接近,查询时会减少磁头转动,从而加快检索速度。

    创建散列簇:

    create cluster position(id number(1))
    size 100
    hash is id
    hashkeys 10000;
    View Code

    在散列上创建表:

    create table depost2(
     postno char(3) not null,
     postname varchar2(30) unique null,
     ifvoid number(1) default 0 check(ifvoid between 0 and 1)
    
    )
    cluster position(ifvoid);
    View Code

    防止访问冲突:

    1 加锁

    在一个用户读取时,其他用户不能进行操作

     锁类型 6种:共享锁(row share),独占锁(row exclusive),共享修改(row update),共享表锁(share) 共享行锁独占表锁(share row exclusive) ,独占表锁(exclusive)

    eg:

    --独占表锁
    lock table scott.emp in exclusive mode;
    View Code

    2合理设计事务

    在事务处理过程中,确保读取数据一致性

    3分散文件

    表表数据和索引放在不同的磁盘上

  • 相关阅读:
    201571030134 由《构建之法》所想到的~
    unity3d 打包Xcode工程自动添加framework
    Unity3d Vuforia与Mobile Movie Texture插件结合
    Unity3d 打开本地摄像头扫描二维码
    Unity3d 获取文件夹的图片
    iOS开发 Button自定义
    Unity3D判断鼠标左右滑动
    unity3d控制物体旋转的角度
    第一次作业
    人工智能第二次作业
  • 原文地址:https://www.cnblogs.com/shuaif/p/3505566.html
Copyright © 2011-2022 走看看