Eli*_*jah 20 postgresql performance filesystems database
我很好奇是否有人在文件系统和数据库性能之间做过任何实验或比较。在 Linux 上,我想知道 postgres 数据库的最佳文件系统是什么。此外,哪些设置(inode 等)最适合它?根据数据库中的数据,这可能会大不相同吗?
如果您正在寻找有关一般文件系统/数据库性能的问题,这篇文章有一些很好的信息。
但是,我想获得尽可能多的关于插入性能而不是读取性能的建议。感谢所有伟大的答案!
Jan*_*ing 15
购买 Greg Smith 的“postgresql high performance”副本。这是一本很棒的书,有两章或更多章是关于磁盘硬件和文件系统的。你会学到很多东西。
简而言之:没有简短的答案。
但我会尽量总结:
但是,当您真正问自己要使用什么 FS 时,您应该阅读本书!
首先,您首先需要一个可靠的文件系统,然后是一个快速的文件系统。这排除了一些选择......
性能测试表明 XFS 通常提供最佳性能。一旦您达到磁盘非常接近满的情况,它就会存在一些稳定性问题,但是只要您监视没有发生的情况,它就会为您提供稍微更好的性能。
理论上,pg_xlog 目录不需要日志文件系统,但速度差异通常很小,不值得。对于数据目录,您确实应该始终拥有一个元数据日志文件系统。
数据库管理系统通过数据库日志实现自己的日志记录,因此在日志文件系统上安装此类 DBMS 会通过两种机制降低性能:
冗余日志记录会增加磁盘活动量
物理磁盘布局可能会产生碎片(尽管某些日志文件系统确实具有清理碎片的机制)。
大量磁盘活动可能会填满日志,从而导致虚假的“磁盘已满”情况。
几年前我见过一个实例,这是在 HP/UX 机器上 Baan 安装的 LFS 文件系统上完成的。该系统存在持续的性能和数据损坏问题,直到有人发现文件系统是用 LFS 格式化的,这些问题才得到诊断。
保存数据库文件的卷通常包含少量大文件。DBMS 服务器通常有一个设置来配置在单个 I/O 中读取的块数。较小的数字适合大容量事务处理系统,因为它们可以最大限度地减少冗余数据的缓存。较大的数字适合进行大量顺序读取的系统,例如数据仓库。如果可能,请将文件系统分配块大小调整为与 DBMS 设置的多块读取大小相同。
某些数据库管理系统可以处理原始磁盘分区。这会带来不同程度的性能增益,在具有大量内存的现代系统中通常效果较差。在缓存文件系统元数据的空间较小的旧系统上,磁盘 I/O 的节省非常显着。原始分区使系统更难以管理,但提供了最佳的可用性能。
RAID-5 卷比 RAID-10 卷产生更多的写入开销,因此具有大量写入流量的繁忙数据库在 RAID-10 上的性能会更好(通常要好得多)。日志应该与数据物理上分开的磁盘卷。如果您的数据库很大并且大部分是只读的(例如数据仓库),则可能需要将其放在 RAID-5 卷上(如果这不会过度减慢加载过程)。
控制器上的回写式缓存可以为您带来性能提升,但代价是创建一些(不太可能但有可能)数据可能被损坏的故障模式。最大的性能优势在于高度随机访问负载。如果要执行此操作,请考虑将日志放在单独的控制器上并禁用日志卷上的回写缓存。日志将具有更好的数据完整性,并且单个故障不会同时删除日志和数据卷。这允许您从备份恢复并从日志前滚。
归档时间: |
|
查看次数: |
19977 次 |
最近记录: |