• ASM Allocation Units(AU) 不同大小对性能的影响


    性能优化最好的书就是官方文档。官方文档每一句话都值得引起我们深思。

    Allocation Units

    When you create a disk group, you can set the Oracle ASM allocation unit size with

    the AU_SIZE disk group attribute. The values can be 1, 2, 4, 8, 16, 32, or 64 MB,

    depending on the specific disk group compatibility level. Larger AU sizes typically

    provide performance advantages for data warehouse applications that use large

    sequential reads.

    设置较大的AU能提升数据仓库应用中顺序读性能。在生成环境中,数据仓库IO绝大部分都是顺序读,而且是大量的顺序读。所以在创建数据库的时候,

    设置正确的AU非常重要。那么现在我来测试一下设置不同的AU对性能的影响。

    说来惭愧,我这个测试是在虚拟机上做的。

    Oracle 11.2.0.1 block size 32k

    Virtual Box 4.1.16

    82G虚拟磁盘组成ASM DISK GROUP

    加载数据 3.94Gb

     

    创建AU=1M b的表空间

     

    SQL>CREATEBIGFILETABLESPACE test_au1DATAFILE'+DATA_AU1/test.dbf'

    SIZE4GNOLOGGINGONLINEPERMANENTBLOCKSIZE32768

    EXTENTMANAGEMENTLOCALUNIFORMSIZE1048576DEFAULT

    compress SEGMENTSPACEMANAGEMENTAUTO2   3   4

     

    Tablespace created.

     

    Elapsed:00:01:43.19

     

    加载速度

     

    经过时间为:00: 06: 37.89

    CPU时间为:00:01:34.32

     

    读取速度

     

    SQL>altersystemflush buffer_cache;

     

    System altered.

     

    Elapsed: 00:00:00.07

    SQL>selectcount(*)fromtest;

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:29.82

    SQL> /

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:29.57

     

    创建AU=4M 的表空间

     

    SQL>CREATEBIGFILETABLESPACE test_au4DATAFILE'+DATA_AU4/test.dbf'

    SIZE4GNOLOGGINGONLINEPERMANENTBLOCKSIZE32768

    EXTENTMANAGEMENTLOCALUNIFORMSIZE4194304DEFAULT

    compress SEGMENTSPACEMANAGEMENTAUTO2   3   4

     

    Tablespace created.

     

    Elapsed: 00:01:19.01

     

    加载速度

     

    经过时间为:00:06:49.30

    CPU时间为:00:01:29.42

     

    读取速度

     

    SQL>altersystemflush buffer_cache;

     

    System altered.

     

    Elapsed: 00:00:00.07

    SQL>selectcount(*)fromtest;

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:20.04

    SQL> /

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:19.86

     

    创建AU=8M b的表空间

     

    SQL>CREATEBIGFILETABLESPACE test_au8DATAFILE'+DATA_AU8/test.dbf'

    SIZE4GNOLOGGINGONLINEPERMANENTBLOCKSIZE32768

    EXTENTMANAGEMENTLOCALUNIFORMSIZE8388608DEFAULT

    compress SEGMENTSPACEMANAGEMENTAUTO2   3   4

     

    Tablespace created.

     

    Elapsed: 00:01:12.34

     

    加载速度

     

    经过时间为:00:06:12.34

    CPU时间为:00:01:28.82

     

    读取速度

     

    SQL>altersystemflush buffer_cache;

     

    System altered.

     

    Elapsed: 00:00:00.06

    SQL>selectcount(*)fromtest;

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:18.45

    SQL> /

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:18.64

     

    创建AU=16M b的表空间

     

    SQL>CREATEBIGFILETABLESPACE test_au16DATAFILE'+DATA_AU16/test.dbf'

    SIZE4GNOLOGGINGONLINEPERMANENTBLOCKSIZE32768

    EXTENTMANAGEMENTLOCALUNIFORMSIZE16777216DEFAULT

    compress SEGMENTSPACEMANAGEMENTAUTO2   3   4

     

    Tablespace created.

     

    Elapsed: 00:01:08.27

     

    加载时间

     

    经过时间为:00:07:02.20

    CPU时间为:00:01:30.01

     

    读取时间

     

    SQL>altersystemflush buffer_cache;

     

    System altered.

     

    Elapsed: 00:00:00.11

    SQL>selectcount(*)fromtest;

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:17.79

    SQL> /

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:17.65

     

    创建AU=32M b的表空间

     

    SQL>CREATEBIGFILETABLESPACE test_au32DATAFILE'+DATA_AU32/test.dbf'

    SIZE4GNOLOGGINGONLINEPERMANENTBLOCKSIZE32768

    EXTENTMANAGEMENTLOCALUNIFORMSIZE33554432DEFAULT

    compress SEGMENTSPACEMANAGEMENTAUTO2   3   4

     

    Tablespace created.

     

    Elapsed: 00:01:10.84

     

    加载时间

     

    经过时间为:00:06:48.11

    CPU时间为:00:01:34.97

     

    读取时间

     

    SQL>altersystemflush buffer_cache;

     

    System altered.

     

    Elapsed: 00:00:00.08

    SQL>selectcount(*)fromtest;

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:17.16

    SQL> /

     

      COUNT(*)

    ----------

      37127168

     

    Elapsed: 00:00:16.81

    从实验上可知,如果OLAP环境设置AU=1Mb,那么悲剧去吧

    AU=1Mb  读取速度接近30秒

    AU=4Mb  读取速度接近20秒

    AU=8MB 读取速度接近19秒

    AU=16MB 读取速度接近18秒

    AU=32Mb 读取速度接近17秒

    数据加载速度都差不多,创建表空间的时候AU越大,速度越快,也就是说设置较大的AU,数据文件resize的时候也更快。表空间自动增长的情况下,大的AU也增长更快。

    结论:

           在数据仓库应用中,用ASMCA创建DISK GROUP的时候一定要设置AU(默认为1)>=4 。

           Oracle官方文档推荐设置AU=4,其实我也推荐设置AU=4,因为从实验上看AU=4开始,顺序读取速度并没有因为AU的增加而显著增加。

                 

  • 相关阅读:
    SQL Server死锁总结
    dao层知识点总结
    减少数据库资源开销
    java string(2)
    java读写锁实现数据同步访问
    并发集合(转)
    JDBC在Java Web中的应用——分页查询
    jdbc分页
    jdbc如何锁定某一条数据或者表,不让别人操作?
    数据库锁机制
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330547.html
Copyright © 2020-2023  润新知