【译】ZFS最佳实践指南-Part6

3.6 ZFS与数据库建议

关于正在进行的ZFS和数据库性能测试的信息,请参看zfs_and_databases。还可参见ZFS for Databases


    *
      如果数据库针对I/O使用固定磁盘的块或记录尺寸,请将ZFS的recordsize属性设成与数据库一致。您可以在每个文件系统上做这一操作,即使是共享一个存储池的多个文件系统。
    *
      由于其copy-on-write设计,调小ZFS的recordsize是一种以牺牲批处理报告查询为代价而提高OLTP(On-Line Transaction Processing,联机事务处理)性能的方式。
    *
      ZFS 校验存于磁盘上的每个块(block)。这减轻了数据库层面上对校验数据的需要和额外的时间。若校验由ZFS代替了数据库的,所有的差异都可以在数据返回给应用程序之前被捕获和修正。ZFS在数据库上的性能是非常快的活动目标。保持对Solaris发行版的更新非常重要。

截至2007年7月,如下功能会对数据库性能产生影响:


    *
      ZFS 放出多至35个并发I/O至每个顶级设备,且这可以导致服务的时间延长。
    *
      ZFS对每一输入块进行一些多至64K的低级预取操作,这样做可令存储带宽饱和。详情请参见6437054号Bug以及这篇blog。
    *
      使用8K的预取并用5到10个并发I/O来帮助一些数据库的负载。对于调节这些值的做法请参看ZFS Evil Tuning Guide。这种调节需要有望在未来发行版中去除。

Oracle事项


    *
      为得到更好的OLTP性能,请将ZFS的recordsize同Oracle的db_block_size相匹配。
    *
      请在混合的批处理和OLTP中关注批处理报告
    *
      对Oracle日志请以默认的128K记录尺寸使用单独的文件系统。
    *
      在SXCE Build 68发行版中,您可以为ZFS intent log(ZIL)使用单独的设备创建ZFS存储池。更多信息,请参见separate intent log。请不要将ZFS intent log设备同Oracle日志相混淆。
    *
      最小化Oracle日志响应时间,以期在整个事务过程中只是唯一的I/O,这往往是我们所希望的。就SAN存储阵列而言,Oracle日志响应时间应是接近写至SAN缓存的响应时间的,因此没有必要在数据空间和日志空间中来划分主轴(spindle)资源:单一的存储池操作。但对于在JBOD存储上的 Oracle来说,其已被看到使用被分出来的一套主轴(不受制于读或写的竞争)可以有助于日志的响应时间。这反过来可以对一些工作量有帮助,如这类在存储级别上有高写读比的操作。
    *
      PostgreSQL
    *
      限定ZFS ARC已在内存与动态重构(Dynamic Reconfiguration)建议中描述
    *
      关于对日志使用单独存储池,请参看上述Oracle事项。
    *
      请设置ZFS recordsize=8K(注意:请在任何数据文件的创建之前做这一设置!)
    *
      从日志存储池中初始化数据库,之后为每一个数据库创建一个新的表分区(tablespace)指向数据存储池
    *
      MySQL
    *
      InnoDB:
    *
      限定ZFS ARC已在内存与动态重构(Dynamic Reconfiguration)建议中描述
    *
      关于对日志使用单独存储池,请参看上述Oracle事项。
    *
      请设置ZFS recordsize=8K(注意:请在任何数据文件的创建之前做这一设置!)
    *
      之后请对数据和日志使用不同的路径(在mysql.conf)中设置
    *
      MyISAM:
    *
      限定ZFS ARC已在内存与动态重构(Dynamic Reconfiguration)建议中描述
    *
      请为日志(WAL)创建独立的intent log。若您没有该功能(即您运行在Solaris 10发行版),那么请创建至少两个存储池,一个存数据,一个存日志(WAL)
    *
      关于对日志使用单独存储池,请参看上述Oracle事项。
    *
      请设置ZFS recordsize=8K(注意:请在任何数据文件的创建之前做这一设置!)

请参阅一些在PostgreSQL和MySQL中用db_STRESS性能测试获得的真实结果。

3.7 ZFS与复合存储事项

    *
      某些存储子系统会将数据暂放在固态内存设备,如存储阵列上的NVRAM,允许其以非常低的响应时间响应写操作。这些内存设备通常被认为是稳定的存储,在一定意义上其能幸免于掉电或其他类的崩溃。在关键时刻,ZFS是不知道该内存存储器的持久性的,并且要求该存储器的数据同步至磁盘。若这些存储器真的被确定为是稳定的,存储系统应被配置为忽略这些来自ZFS的请求。

3.8 驱动问题

你可能感兴趣的:(职场,休闲,ZFS)