作者文章: Fenng

Instrumentation 与 Profiling

看到有反馈说到《Oracle性能诊断艺术》中对于 Instrumentation 这个词的翻译问题。说实话,对这个词的处理当初挺让我头疼,这是个可以意会但很难用一个中文词汇对应的术语,一些翻译词典或是已有的翻译作品对这个词的处理也是五花八门。在图灵著译俱乐部里面提问得到很多回答(这里要致谢!)。权衡再三,最后根据整个章节的重点以及上下文选择用 “性能测量”。

我不喜欢用有些人说的测试领域内所用的术语”插桩”,实在是有点诡异。当然,如果这个词不翻译的话,或许更好。其实很多计算机术语容易受到早期译者的影响,比如关系数据库的 “Lock” 这个词 ,动词的时候,很多译者喜欢翻译成 “封锁”,个人觉得实在是累赘,就是锁就行了嘛,为什么非要”封”呢?

另一个比较难以处理的就是 “Profiling” ,根据维基百科的解释 ,这个词指”动态程序分析的一种形式…根据程序执行收集到的信息调查程序的运行行为,通常用来查找程序中的瓶颈”。最后我用了”剖析”。(Updated: 中文是 “性能分析“。不过我觉得似乎有点容易混淆。)

这两个词很有趣,任何一个程序或者软件项目构建的初期,如果没有考虑 Instrumentation ,在程序或项目交付后,又不能做 Profiling ,那么这个程序或者项目肯定会是灾难。所以,能对 DBA 着重强调一下这一点或许要比看更多的同质化内容更有价值。

在这本书的最后定稿的时候,编辑来信要求确认术语的统一,对于 “Hash” 这个词,要求用统一的术语”散列”,最后我们几位编辑极力坚持用”哈希”这个词(当然,最后用了”哈希”)。大部分的数据库图书,尤其是 Oracle 相关的图书,这个词已经是约定俗成的了。所以,说起术语标准化,个人看法也是术语对应列表用来做指导而不是生搬硬套。

翻译需要技术,更需要艺术。这活儿,真的不好干。

EOF

更新:Twitter联合创始人 Nick Bilton 说过这样一句话”Early on our biggest problem was that we didn’t have any gauges into the system and we didn’t have metrics, so we were kind of flying blind. The way we got around it was to instrument the entire system so we could see what was going on” (refer)。可见缺少 Instrumentation 会带来多么严重的问题。

《Oracle性能诊断艺术》出版了

几周前,《Oracle性能诊断艺术》(Troubleshooting Oracle Performance 的中文版)终于面市,现在线下的实体书店应该也可以买到了。这半年来一直有朋友在问什么时候能够出版,现在总算有个交代了。

关于中文版书名,图灵出版社编辑们费了不少心思,尽管最后敲定的书名中”艺术”两个字似乎有点托大,不过我个人觉得也还算好,恳请读者把重点放到内容的汲取上而不是和书名较劲。

TOP_Chinese.jpg

这本书从接手到现在也快一年的时间了,整个过程尽管有辛苦,也已经成为过去式。这或许是我最后一本翻译的图书–除非以后出版自己写作的东西(如果内容还能过得去的话)。

如果朋友们针对书中内容有任何问题,可以访问 支持页面留言反馈或者发邮件给几位译者。相信译文中仍有欠妥的地方,译者将尽量提供技术支持以及延伸内容。

EOF

感谢这本书翻译过程中给予我们帮助的所有朋友们,有你们的支持,是几位译者的幸运。

此文作者:, 位于 Database 分类 标签: on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

DRBD 与 Pacemaker

如果有人问你一台 PC 服务器是否可以达到 99.99% 的高可用,该如何回答呢? 或许没有一台机器能”确保”达到这样的可用率,当然在某个时间段或许不会出问题,但这个肯定是看运气,而高可用基本上是没办法通过一台来达到目标的,我们更多的时候是设计方案确保在出问题的时候尽快接管故障机器,当然这要付出更大的成本。

对于 Oracle 的高可用方案可以参考 Maximum Availability Architecture (MAA) 白皮书,不过 Oracle 并不推崇操作系统级别的解决方案。MySQL 的指导策略倒是更为灵活一些,DRBD® (Distributed Replicated Block Device) 就是个可以考虑的选择。以前关注过这东西,但是据我了解,好像国内实现的案例不多,不知道是不是处于对网卡同步速度的限制考虑。现在这个有了新的转机,在 8.3 版本上已经能够支持 InfiniBand 。而原来通过网卡同步数据块的方式毕竟受网卡延时和带宽的限制,InfiniBand 的支持的实现相信能赢得一部分企业用户的信赖。

DRBD_overview.jpg

Linux Kernel Summit 2009 上这次有对 DRBD 的介绍(注意对数据一致性的介绍),这意味着能正式进入 Kernel 么?

相对专有的集群管理工具,也有开源的集群管理工具 Pacemaker (支持 HeartbeatOpenAIS 标准)可供配套使用。Pacemaker 能够较为灵活的实现主备、N+1 、N-N 等多种模式。感人感觉会比较有生命力。

Pacemaker.jpg

好的开源解决方案就是设计活动木板房,廉价灵活环保,当然,牢固肯定是第一目标。

补充:

根据 MySQLPerformanceBlog 的说法,MySQL 几种高可用解决方案能达到的可用性如下:

HA_ratio.png
EOF

NUMA 架构与数据库性能

在这次的 Oracle Open World 上,Hammerora 的作者 Steve Shaw 做了一个关于 Linux 平台 Oracle 调优的演讲,其中重点提到了 NUMA 架构对于 Intel Nehalem CPU 上跑 Oracle 的性能影响。

对于传统 SMP 来说,CPU 增多未必系统性能就好,因为共享系统总线的限制了 CPU 数量,CPU 越多内部通信量越大共享总线越容易达到瓶颈。而 NUMA 架构则多少缓解了这个扩展问题,其大致机理是通过给每个核提供单独的本地内存,进而提高可扩展性。而每个核访问本地内存和其它核上的内存时间是不一样的,所以,应用程度对于内存的访问是有比较大的讲究的。从硬件到操作系统再到应用程序,都要支持 NUMA 才会发挥真正的处理能力。

在这里倒是可以插入介绍一下阿姆达尔定律(Amdahl’s Law),这个定律指出并行处理器环境中的速度受制于程序串行的部分,也即暗示说多核未必性能就那么好。

Intel Nehalem microarchitecture

Image via Wikipedia

对一个 DBA 来说,Intel 的 Nehalem CPU (右图为结构示意图)最值得关注的特性当属 NUMA (Non-Uniform Memory Access) 架构方面的改进。

从 Oracle 数据库 8i 开始支持 NUMA 特性,NUMA 在10.2.0.4 与 11.1 上是默认启用的,不过在之前的版本以及 11.2 之后默认是关闭该特性的。在 Intel 平台上,Oracle Validated RPM 包安装后将激活 NUMA。安装的时候,当 Oracle 检测到硬件与操作系统支持 NUMA 的时候,会自动启用 NUMA 支持,Linux 在内核 2.6.9-67 以后自动支持 NUMA 。至于硬件上的开关是通过 BIOS ,如果硬件支持,则 BIOS 默认是激活(enable)该特性的。操作系统层面的开启可以通过核心参数添加 numa=off 的方式来达到。

可以通过操作系统命令查看相关的状态:

# numactl --show

NUMA 这个常看到的术语,似乎一直以来没有得到 DBA 们足够的重视。需要注意的是,硬件、操作系统、应用软件(Oracle) 三者都要支持 NUMA ,才能充分利用这一特性。对于支持 NUMA 的 DB 环境,理论上来说内存请求的利用应该会更有效一些。至于具体的性能数据还要看实测结果,暂时恐怕难以给出,留待以后补充吧。必须要说的是,作为DBA,在启用某个特性的时候,一定要明白这个特性的来龙去脉,以及潜在的影响。

延伸阅读资料

EOF

对于一些不能充分利用多核的软件,比如某些 Web 服务器或者 Proxy,或者需要考虑一下如何利用 NUMA 特性了。而类似跑数据统计的应用,”CPU的并行”得到利用之后或许应该考虑如何更充分利用 NUMA 特性了。

4130467396_b00ea856b8.jpg