社区磁盘调优指南

来自 PostgreSQL Wiki
跳转到导航跳转到搜索

注意:本文档有点过时。建议您更新它并删除此通知 :-)

PostgreSQL 的磁盘优化策略

迄今为止建议的主题

软件相关

  • 特定操作系统
  • 文件系统建议
  • 分区建议
  • 索引、表和其他内容的位置
  • NFS

硬件相关

  • RAID 配置
  • SCSI 与 IDE
  • SCSI 控制器类型
  • 驱动器主轴速度

特定操作系统

  • ?

文件系统建议

  • 软件 RAID
  • 推荐/需要/等的日志类型
  • 等等

分区建议

  • ?

索引、表和其他内容的位置

  • 多个磁盘驱动器
  • 将 WAL 日志文件放在其他空闲驱动器上
  • 等等

NFS

  • v2 与 v3 与 v4
  • 锁定问题
  • 速度考虑因素


硬件相关

RAID 配置

RAID:独立磁盘冗余阵列。RAID 允许计算机将两个或多个物理驱动器用作更大、更快、更可靠的单个逻辑驱动器。通过将信息冗余地条带化到多个驱动器上,RAID 阵列可以在一个或多个磁盘驱动器发生故障的情况下继续运行。

RAID 配置包含两个主要选择

  • 硬件与软件 RAID
  • RAID 级别

硬件与软件

虽然硬件 RAID 通常被认为优于软件 RAID,但某些情况下,软件 RAID 阵列代表了更好的价值。硬件相对于软件的主要优势在于,它允许 RAID 控制器使用电池备份的内存缓存写入,从而确保更好的崩溃恢复,同时保持良好的速度。在选择硬件 RAID 卡时要小心,确保它为您的操作系统提供了可靠的驱动程序,并且如果它有缓存,则它必须是电池备份的,并且可以设置为写入回模式。

对于写入性能不是关键问题的报表数据库,软件 RAID 通常是不错的选择。

RAID 阵列级别

  • RAID 级别 0:RAID 级别 0 只是将信息条带化到多个磁盘上,没有奇偶校验。这种方法以很少或没有开销的方式聚合多个驱动器的带宽。虽然此级别提供了最快的性能,但它不属于技术上的“RAID”,因为任何一个磁盘的故障都会导致存储在该磁盘上的所有数据丢失,无法恢复。此级别需要至少 2 个驱动器,但随着更多驱动器的添加而变得更快。随着驱动器数量的增加,故障的可能性也会增加,因此大型 RAID0 阵列不是一个好主意。虽然单独使用并不常见,但它通常与其他 RAID 级别一起使用,以提供快速性能和冗余性。常见用途:批量文件处理数据库,其中输入数据定义良好且可以轻松替换。
  • RAID 级别 1:RAID 级别 1 将所有内容写入两个或多个磁盘。RAID 级别 1 非常适合小型到中型工作负载。它提供了镜像驱动器集的故障保护,并且需要的驱动器数量最少,即两个。对于大量读取的数据库,具有两个以上驱动器的 RAID 级别 1 可以提供非常好的吞吐量,因为它允许比仅 2 个驱动器更大的聚合读取带宽。请注意,将所有更新写入阵列中的所有驱动器会产生一定的开销。常见用途:工作组/内部网、OLAP、批量处理。
  • RAID 级别 5:RAID 级别 5 非常适合中型到大型工作负载。RAID5 需要至少三个磁盘驱动器,但您在 RAID5 阵列中放置的驱动器越多,它通常运行越快,并且它处理大量并行负载的效果越好。常见用途:内部网、OLAP、OLTP。
  • RAID 级别 1+0、5+0 虽然 RAID 级别 0 本身没有冗余性,但可以通过在 RAID 级别 0 阵列集之上构建 RAID 级别 1 或 5 阵列来添加冗余性。这种组合通常为最少的驱动器数量提供了最佳速度。RAID 1+0 需要至少 4 个驱动器,RAID 5+0 需要至少 6 个驱动器。常见用途:高性能 OLTP。
  • RAID 级别 0+1、0+5 此级别非常类似于级别 1+0 或 5+0,但它不是在 RAID0 集之上构建 RAID1 或 5 集,而是在多个 RAID1 或 5 阵列之上构建 RAID0 集。它也是 OLTP 的常见用途。

SCSI 与 IDE

  • 每个级别最适合的地方
  • IDE 驱动器和写入缓存启用的数据安全问题
  • 对它们的性能预期

SCSI 控制器类型

  • U160 与 U320 等。
  • Adaptec 29160(还不错)
  • Advansys UW(由于 BIOS 与某些驱动器的兼容性问题而很差)
  • 等等

驱动器主轴速度

  • 数据库位于 15000 RPM SCSI 磁盘与 10000 RPM SCSI 磁盘与 7200 RPM IDE 磁盘上的性能

迄今为止的贡献者

Justin Clift
Shridhar Daithankar
Lee Kindness
Scott Marlowe