当前位置: 代码迷 >> 综合 >> ASM Allocation Units(AU) 不同大小对性能的影响
  详细解决方案

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

热度:99   发布时间:2023-12-14 21:18:23.0

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

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的增加而显著增加。

             

 

  相关解决方案