为什么数据库分区不起作用?摘自 thedailywtf.com

为什么数据库分区不起作用?摘自 thedailywtf.com

原文链接。http://thedailywtf.com/Articles/The-Certified-DBA.aspx

文章摘要:DBA 建议采用一种严格分区的方法,每个磁盘 10 个分区(3 个实际磁盘和 3 个 RAID)。统计数据显示性能不是最佳的。然后 DBA 建议采用每个磁盘 1 个分区的替代方案(添加更多磁盘)。这也失败了。然后系统管理员设置了一个磁盘、一个分区并挽救了局面。

虽然没有提到磁盘的大小,但考虑到今天的典型磁盘大小(大约 100 GB),分区会非常大,令我惊讶的是,一个包含所有分区的单个磁盘的表现如此出色。

最初我怀疑数据是分开的,因此读取速度更快。但是为什么随着时间的推移,在进行所有插入和更新的情况下,性能没有下降?在 reddit 上看到这个,但解释是主轴/盘片中心。文章中没有提到这一点。还有其他原因吗?我只能猜测,表使用了错误的哈希分布,导致磁盘之间的分配不均匀(分区错误);这会增加获取时间。有什么想法吗?

答案1

整件事都很愚蠢,抱歉。

如果你有 6 个磁盘,你可以尝试

  • 3 对 RAID-1。每个都有一个分区。第一个分区用于系统/tempdb,第二个分区用于数据,第三个分区用于事务日志。

  • 1 对 RAID-1 和 1 个 4 磁盘 RAID-10。每个分区一个。

  • 如果数据大部分是只读的,则需要一个大的 RAID-5 卷和一个分区。

无论如何,对不同的卷使用同一个盘片是没有任何意义的。

答案2

要理解为什么单个分区的性能总是优于同一驱动器上的多个分区(其他条件相同),您只需考虑磁头组件需要做什么。磁头组件总是需要来回移动,但对于多个分区,移动磁头组件的要求会大得多。由于这是磁盘访问中最慢的部分,因此对性能的影响很大。

答案3

整个分区听起来很愚蠢。抱歉。与将所有文件放在一个分区相比,将数据分区在同一张盘片上(即多个文件放在多个分区中)不会以任何方式减少 IO。我还发现有趣的是,DBA 没有费心使用测试工具进行 IO 测试来检查磁盘设置的实际性能。

理论上,无论东西有多脏,多张光盘(而且他们购买的越来越多)的 IO 容量总是比单张光盘高很多 - 所以这里确实有些可疑。并不是说这篇文章错了 - 只是我错过了一些可以解释糟糕性能的片段。

答案4

文章中有很多信息缺失,但在我看来,DBA 认为他试图向数据库提供一个块设备(而不是文件系统),但却是在某种 SAN 或其他共享存储设备上这样做的。不幸的是,他也是个白痴。

也许“认证 DBA”是 AS/400 或 AIX 难民...IBM 系统管理员工具曾让您根据磁盘上的物理位置分配存储。

十年前,当我的老板吝啬购买 Veritas Filesystem 时,我曾经 (正确地) 使用 Sun 机器上的 Informix 数据库来执行此操作。当系统出现故障时,让数据库管理磁盘可以避免 4 小时以上的 UFS fsck 运行。

相关内容