DB2 的 SQL 调优和错误是老 DBA 天天要打交道的东西。语法错、权限错这些问题,看着简单但挺能耗时间。逻辑错就更头疼,不细抠根本找不出问题。还有资源和配置那块,动不动就 OOM 或表空间爆了,你懂的,DB2 一旦出事,排查真得够细才行。
常见错误里头,语法错误最多,像括号没闭合、写了拼写错的函数,或者直接漏了个关键字。权限方面,GRANT和ROLE用错,也是常见操作失误。建议你碰到奇怪的报错,先查查是不是这些小坑。
资源类错误也不能忽略,像内存和表空间的问题。比如执行一个大查询时突然炸了,80%是资源不够。遇上这种,别急着改 SQL,先看下 DB2 的监控工具,看看是不是连接数超了或者缓存不够用。
优化 SQL 这块,建议你从索引下手。别嫌麻烦,建对了索引,查询能快好几倍。还得注意WHERE
里别乱用!=
和OR
,因为这些不走索引。你要是喜欢用函数包字段,也得当心,多时候这样会让索引直接失效。
JOIN 优化也别忽略。尽量用INNER JOIN
,别一上来就 LEFT、RIGHT 那种全包的连接,尤其在表数据量大的时候,会拖慢性能一大截。另外,减少字段数量也挺有效,SELECT *
真不是万能的,精简列比你想象的更重要。
还有一点,统计信息得定期更新。DB2 优化器靠这些来做执行计划,信息不准就会选错路径,慢得你怀疑人生。你也可以试试并行查询,是做大批量时效果不错。
如果你想系统地研究,可以翻翻db2 错误.pdf
和DB2_SQL_精萃.pdf
这两个文件,挺实用的。网上也有一些整理得不错的资源,像DB2 SQL 错误代码和DB2 错误码详解,你可以收藏一下,遇坑的时候翻出来用省事。