社区磁盘调优指南
来自 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