Tag Archives: Database

eBay 的数据层扩展经验

对于 eBay ,我盲人摸象一样写了好几篇 Blog ,暂列一下:

今天又重新读了一下这篇《The eBay Architecture –Striking a balance between site stablility, feature velocity, performance, and cost》,觉得数据层的扩展经验也很有意思。

通过功能划分不同数据库,然后根据主要访问路径水平分割数据库。这句话太空了,类似 MySQL DB 大家常采用的 Shard 思路。

减小 DB 资源开销

数据库上没有业务逻辑。这包括:不用存储过程; 只有少量比较简单的触发器。
把CPU 开销比较高的工作迁移到应用上。这包扩:参考完整性检查(嗯,检查一下你的 DB 是否再用外键? ); 连接(Join), 排序。
应用服务器尽量 Prepared 语句以及绑定变量的广泛使用。

最小化 DB 事务

自动提交(Commit)大多数主要的数据库写操作。
客户端绝对没有事务(业务逻辑) 。这包括: 单个数据库通过匿名 PL/SQL 块进行事务管理; 没有分布式事务。对于”事务”, 相关信息可以从 eBay 首席架构师 Dan Pritchett 的访谈得到确认。没有事务更没有分布式事务这一点比较关键,这也是因为 eBay 的商业逻辑天然性质(否则也不容易做),所以可以做到 Scale Out,而最近了解到 Paypal 则因为交易逻辑比较复杂,只能是 Scale Up. Paypal 的技术信息一向比较封闭,谁能告诉我一点额外的信息呢?

EOF

About Oracle 10g/11g AWR

Oracle 10g 开始 引入了AWR (Automatic Workload Repository). Oracle 建议用户用这个取代 Statspack。不过这个需要注意的是使用 AWR 需要有 Diagnostic Pack License。Oracle 后来推出了一个解决方案可以禁止掉该特性。

在 Note. 436386.1 有说明:

SQL> @dbms_awr.plb

然后执行:

dbms_awr.disable_awr();

如果用 sys 之外的用户创建 AWR 报告,则需要进行合适的授权。否则会报告错误 PACKAGE 执行错误。

CONNECT / AS SYSDBA;
GRANT ADVISOR TO foo;
GRANT SELECT_CATALOG_ROLE TO foo;
GRANT EXECUTE ON sys.dbms_workload_repository TO foo;

注意 Bug 4597354 在创建基线数据的时候,对性能有很大影响。在一个非常繁忙的系统上不要进行此操作。

如果结合企业管理器用 AWR 是很方便的,如果用手工方式收集性能数据,多了很多可供调整的地方,是更加方便了呢?还是更加麻烦了?

EOF

【有趣】10 种迹象表明 DBA 该退休了

看到一篇十分有趣的关于 DBA 的帖子。10 种迹象表明你的 DBA 该退休了. 作者是 Chris Muir. 这 10 条越看越好玩,翻译并注释一下。

1. Complains about these “new fangled stored procedures”.
对”存储过程这新玩意儿”抱怨不停。 (暗示这个人还停留在 Oracle 古老版本的使用经验中。)

2. Rants about the good old days of Oracle PE (Punchcard Edition).
嚷嚷着 Oracle 卡片机版本(暗指非常古老的版本)美好时光.

3. Thinks Thomas Kyte is a whipper-snapper (even with the beard).
认为 Thomas Kyte 是个傲慢自大的年轻人(即使他有胡子). Kyte 现在已经是几个孩子的父亲了。而且,近年来 Kyte 在 Oracle 领域已经成为无可争议的大师级别的人物。 (暗示有这样想法的人可能 N 年前见过 Thomas Kyte, 近年来没关心 Oracle 社区的发展)

4. Still demands all Oracle manuals in hardcopy.
仍旧靠着所有打印的 Oracle 手册过日子. (现在的手册足有 几万页, 说明还是用的老手册, 而且守旧)

5. Has a service request with Oracle Support to forward port the RBO to 11g.
对 Oracle 支持人员提出一个 把 RBO 移植到 10g 的服务请求。(RBO–基于规则的优化器, 局限性非常大,已经不适合现现在复杂的数据环境了,如果还死抱着RBO大腿不放…)

6. Knows about Edgar’s secret 13th rule.
知道 Edgar 的第十三条规则的秘密。(Edgar Codd,就是大名鼎鼎的关系数据库理论之父,他提出的基本准则只有 12 条。如果有 DBA 知道第十三条规则的秘密…)

7. Thinks Oracle Support went downhill when they moved the HQ to Redwood Shores in 1989.

认为 Oracle 支持自从1989年总部搬到 Redwood Shores 后每况愈下。(看看 Oracle 各个版本的 Bug 众多,以及 Oracle 服务费的昂贵,从哪个角度来看,Oracle 支持都是不差的,当然服务质量除外)

8. Has [email protected] in his address book.
邮件地址簿里有 [email protected] 。(RSI 是Oracle公司前身[email protected] 是 Oracle CEO 拉里-艾里森的邮件地址。还有这个邮件地址,估计至少有 20 年没更新过地址簿了。这个人有些”火星”)

9. Still replaces blank lines in PL/SQL with single line comments.
仍旧在 PL/SQL 用单行注释替换空行.(这个需要解释一下,用手册上的话就不用绕了: You cannot use single-line comments in a PL/SQL block that will be processed by an Oracle Precompiler program because end-of-line characters are ignored. As a result, single-line comments extend to the end of the block, not just to the end of a line. In this case, use the /* */ notation instead)

10. Has an open 10 year old Oracle Support “TAR” to fix a bug in version 7 which he/she wont close because of the “principal of the thing.”
在 Oracle 支持上开了一个长达10年之久的 “TAR”,要修复某个 Oracle 7 的Bug,并且坚持认为此乃”首要之事”而不肯关闭该 Tar。(刻舟求剑)

等有时间再写写那些该下课的 IT 经理人
EOF

Linux 上常见的 IO 基准测试工具比较

经常要对一些新存储系统进行 I/O Benchmark 测试,每次测试又有可能针对不同的目的,但基本也都是围绕数据库转悠,心血来潮,对几个常见的工具做个比较。

IO_benchmarks_compare.png
(点击查看全图)

要强调的几点:
ORION –Oracle I/O Numbers Calibration Tool 还是比较全面的针对数据库应用的 IO 测试工具。现在 Oracle 发布了不少平台的移植版本。该工具也比较好用。

数据库应用必需要考虑异步 I/O 的因素,否则结果会有很大偏差,当然如果只测试存储能力的话,到可以忽略。AIO 压力测试可以考虑以下 AIO-Stress

Unix 命令 dd 虽然很土,但还是一个测试 I/O 的基本手段和方法.有的时候即使没别的工具只用它也能发现很多问题。另外一个需要注意的就是字符设备和块设备的差别啦。更新: 就当我说得是 GNU dd 吧,谢谢下面留言的朋友。

有些工具因为用过很久了,记忆难免有问题,表格中会有误导。仅供参考。今天太累,等有空继续补充内容。

EOF
BTW: 我收集的关于 Benchmark 的书签 内容。

补充工具:VDbench 是跨平台的,也可以尝试一下。