有经验的朋友都知道,把关键系统从开发环境切换到生产环境是一场战役,一场甚嚣尘上的战役。通常,在“攻击发起日(D-Day)”的前几周,性能测试会显示新系统达不到预期要求。于是,找专家,调优SQL语句,召集数据库管理员和系统管理员不断开会讨论对策。最后,性能总算与以前的系统大致相当了(尽管新系统用的是价格翻倍的硬件)。
人们常常使用战术,而忽略了战略。战略要求从大局上把握整个架构与设计。和战争一样,战略的基本原则并不多,且经常被忽视。架构错误的代价非常高,SQL 程序员必须准备充分,明确目标,了解如何实现目标。在本章中,我们讨论编写高效访问数据库的程序需要实现哪些关键目标。
查询的识别
Query Identification
数个世纪以来,将军通过辨别军装颜色和旗帜等来判断各部队的位置,以此检查激战中部队行进情况。同样,当一些进程消耗了过多的 CPU 资源时,通常也可以确定是由哪些正被执行的 SQL 语句造成的。但是,要确定是应用的哪部分提交了这些SQL语句却困难得多,特别是复杂的大型系统包含动态建立的查询的时候。尽管许多产品提供良好的监控工具,但要确定一小段SQL语句与整个系统的关系,有时却非常困难。因此,要养成为程序和关键模块加注释的习惯,在SQL中插入注释有助于辨别查询在程序中的位置。例如:
/* CUSTOMER REGISTRATION */ select blah ...
这些注释在查错时非常有用。另外,注释也有助于判断单独应用对服务器造成的负载有多大;例如我们希望本地应用承担更多工作,需要判断当前硬件是否能承受突发高负载,这时注释特别有用。
有些产品还提供了专门的记录功能(registration facilities),将你从“为每个语句加注释”的乏味工作中解放出来。例如Oracle 的dbms_application_info包,它支持48个字
符的模块名称(module name)、32 个字符的动作名称(action name)和64个 字符的客户信息,这些字段的内容可由我们定制。在 Oracle 环境下,你可以利用这个程序包记录哪个应用正在执行,以及它在何时正在做什么。因为应用是通过“Oracle V$ 动态视图”(能显示目前内存中发生的情况)向程序包传递信息的,于是我们可以轻易地掌握这些信息。
总结:易识别的语句有助于定位性能问题。
| 回书目 上一节 下一节 |
|
||||
| · 华为员工自杀频频拷问.. · 隐私保护技术探讨 · 计算机网络维护入门 · 珊瑚虫QQ作者侵权案开庭 · 开源虚拟化技术Xen · 贝恩资本携手华为22亿.. · 如何优化IT 控制能耗 · VMware技术应用 |
· 打造安全服务器 · iSCSI应用与发展 · FTTx光纤接入 · Windows Server 2008专.. · WCF开发基础 · Linux——从菜鸟到高手 · 微软出价446亿美元收购.. · RAID——磁盘阵列基础 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 · 病毒查杀专题 |
· 国际文档格式标准开战 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · 木马原理与防范 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 · 清除流氓软件——51CTO.. |
· SSL VPN详细知识 · Sniffer安全技术从入门.. · 了解统一威胁管理(UTM).. · 网络钓鱼 · ADSL应用面面俱到 · ADSL应用面面俱到 · 木马原理与防范 · 反垃圾邮件技术应用 |
|||