Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650660
  • 博文数量: 789
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 09:29
文章分类

全部博文(789)

文章存档

2011年(1)

2008年(788)

我的朋友

分类:

2008-10-28 09:45:12

    很多人都知道, IO子系统是数据库中一个非常重要的组成部分。 由于很多软件系统的瓶颈都是由DISK IO引起的,系统花费了大量的CPU_TIMES用于等待I/O行为的完成。

    在我们设计数据库的IO子系统的时候,应该考虑以下因素:

    ■ ,最小的磁盘容量

    ■ 可用性,诸如(24 x 7) 不间断的服务

    ■ 性能,诸如I/O的吞吐量和系统响应时间

    基本的IO设计

    使用操作系统或者硬件来条带化文件,如果你的操作系统有类似LVM和硬件striping,的化,那么使用它们来尽可能的分散IO。在striping中,要考虑两个要素:stripe width 和stripe depth

    ■ Stripe depth 指的stripe的大小,也被称为stripe unit。

    ■ Stripe width 指的stripe depth 和 stripe设定中驱动器的数目的乘积。

    在数据库中,一个合理的stripe depths 应该在256KB到1M。不同类型的应用需要不同stripe depth,最理想的stripe depth 和 stripe width应该考虑以下:

    ■ I/O请求的大小

    ■ 同时发生I/O

    ■ Physical Stripe Boundaries 和 Block Size Boundaries

    ■ Manageability of the Proposed System

    I/O请求的大小

    下面是在配置I/O会用DB和OS参数:

    DB_BLOCK_SIZE:单块I/O请求的大小,也被用于诊断多块I/O请求。

    OS block size:操作系统块的大小

    Maximum OS I/O size:OS能提供的最大单块I/O的大小

    DB_FILE_MULTIBLOCK_READ_COUNT:它和DB_BLOCK_SIZE的积用于计算全表扫描最大I/O,注意能超过OS限制。默认为8。

    SORT_AREA_SIZE:排序操作需要的I/O大小

    HASH_AREA_SIZE:hash操作需要的I/O大小

    出了I/O大小外,并发度也决定了stripe的depth。在选择stripe width和stripe depth的时候请考虑以下因素:

    ■在低并发的系统中,确保在同一磁盘上不会发生重复单一的I/O。这是什么意思呢?例如,假设stripe width有4个磁盘,stripe depth

    是32KB,这时候Oracle server process发出一个1MB的I/O请求,那么每个磁盘都会返回8次I/O请求。为了尽量避免这种情况,平均I/O请求的大小应该小于stripe width×stripe depth,在这里是32KB×4,否则就会在一个磁盘发生第二次I/O。

    这是完全理想化的设计。

    ■在高并发的系统中,要确保单一的I/O请求会被分散到多个物理I/O中完成,如果不行,则会严重的影响系统响应时间。

    并发的I/O

    在OLTP系统中,特点是高并发和低I/O需求,这时最好Stripe depth大于一个单独I/O的大小,这种被称为粗颗粒stripe。

    在高并发的系统中,一般stripe depth设计为n×DB_BLOCK_SIZE,n>1.

    粗颗粒stripe设计使得磁盘可以以队列的方式同时执行多个I/O,这样就可以以最小的成本处理大量的并发I/O。不过,一旦系统不具备并发足够并发,就会导致磁盘热点。

    粗颗粒stripe设计也同样有益于DSS系统,但它应该设计得小一点,同样它大小也为n×DB_BLOCK_SIZE,但n应该小于DB_FILE_MULTIBLOCK_READ_COUNT。

    而细颗粒设计能够获得最好的响应时间。

    Alignment of Physical Stripe Boundaries with Block Size Boundaries

    如果物理stripe颗粒和块大小一致的化,就可能会导致一个单独I/O分散到两个物理IO中。这不是最优化的OLTP环境,所以stripe最好是两倍BLOCK的大小。下面是关于大小的建议:

[1]  

【责编:Ken】

--------------------next---------------------

阅读(307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~