DB2数据库设计:取得最佳性能的准则
2007-05-20 16:16:06 来源:WEB开发网核心提示: 像I/T中的很多事情一样, 这里也可以考虑一种权衡的方法,DB2数据库设计:取得最佳性能的准则(8),对于具有经常被请求的列的多个表,一种是复制其中的数据,而不需要执行REORG实用程序, 5) mass delete执行起来要高效得多,一种是执行表连接,两者谁的成本更高呢?在逻辑数据库设
像I/T中的很多事情一样, 这里也可以考虑一种权衡的方法。对于具有经常被请求的列的多个表,一种是复制其中的数据,一种是执行表连接,两者谁的成本更高呢?在逻辑数据库设计过程中,您可以毫无保留地规范化数据模型,然后再加入一定程度的反规范化,作为潜在的性能调优的一种选择。如果您确实打算反规范化,那么一定要为此制作完整文档:较详细地描述您所采取的反规范化步骤背后的原因。
3. 设计大型的表
访问非常大的DB2表时,相应地要消耗很多的资源:CPU、内存和I/O。在设计大型表的时候,为了提高性能,用户可以做的最重要的两件事是:
1) 实现分区。
2) 创建有用的索引。
下面将更详细地讨论这两个话题。
4. 使用分段的或分区的表空间
如果数据包括LOB,那么用户就必须创建LOB表空间。对于非LOB数据,一般需要在分区表空间和分段表空间之间进行选择,这很大程度上取决于要存储的数据量,在一定长度上也取决于相关应用程序所需的数据访问类型。简单表空间已经很少被推荐了。
下面列出了分段表空间相对于简单表空间的一些性能优势:
1) 对于包含多个表的表空间,当DB2取得用于某一个表的锁时,这个锁不会影响对其他表的段的访问。
2) 当DB2扫描一个表时,只是访问与那个表相关的段。而且,空段中的页不会被提取。
3) 如果一个表被删除,在执行COMMIT之际,它的段就立即可以为其他表所用,而不需要执行REORG实用程序。
4) 如果一个表中的所有行都被删除(即 mass delete),则在执行COMMIT之际,该表所有的段就立即可以为其他表所用,而不需要执行REORG实用程序。
5) mass delete执行起来要高效得多,并且要写的日志信息也更少一些。
更多精彩
赞助商链接