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分散文件

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

  • 相关阅读:
    如何将自己编写的软件放在真机上运行
    多台Mac电脑使用一个apple开发者账号
    Xcode5最初级的教程
    利用NSIS软件制作C#安装包
    C#针对DataTable进行分页方法
    Json 的日期格式转换成DateTime
    FI & RI
    Rename a TFS Project Collection
    char、varchar、nchar、nvarchar的区别
    Migration from TF Service to TF Server with the TFS Integration Platform
  • 原文地址:https://www.cnblogs.com/shuaif/p/3505566.html
Copyright © 2011-2022 走看看