本文用几点了说明DB2数据库优化需掌握几条基本策略。
1.对后续用到的表建立索引(注意在插入数据之前建立或者在插入后建立但是要runstats):
说明:插入之前建立的话,在表插入数据的过程中,索引也随着更新,这样的话需要较大的日志空间,因此速度会比较慢,可以采用不计日志的方式插入;数据差完之后再建立索引的话,该表的日志统计信息没有更新,因此执行计划会很差,用不到索引,runstatsontabble asiainfo.aaaa andindexesall之后,索引统计信息就会更新,这样执行计划会考虑到使用索引,因此速度快。
2.将比较大的表建在多节点的表空间上,同时建好索引:
说明:现有的DB2数据仓库每个节点使用2个CPU,4G内存,DIM表空间计划是存放维表的表空间,因此是单节点的。在使用这个表空间的中的表的时候,最多只会用到2个CPU,4G内存,加上其他的表空间也都要用到这两个CPU和这4G内存,因此资源比较有限。建议较大的表不要放在这个表空间中,而是建立好分区键,放在多节点的表空间中,这样检索这个表的时候32个节点同时检索,最后汇总到0节点上进行展现,速度当然会非常的快。另外,虽然32节点并行性好,但是如果建立好索引的话,速度会更快。
3.将插入的表使用不计日志的方式插入:
说明:数据库为了保证数据的一致性和可回退性,插入、更新或者删除数据的时候要计日志,这样在失败的时候可以回退,但是如果并发较多或者操作非常大的话,会导致争抢日志的情况,导致操作非常缓慢。如果使用不计日志的方式进行插入、更新或者删除操作的话,日志使用极少,但是如果操作失败的话是无法回退的,这样一致性得不到保证,这个表只能删除重建!
4.将表建立表级锁,减少锁数量的使用:
说明:数据库的锁的最大数量是有限制的,并且每个锁都要占一定的内存,因此如果锁的数量非常多,使用的内存也就多,导致资源紧张。
5.建立临时表的时候尽量只插入用的到的数据,不插用不到的数据:
说明:程序中好多地方为了提高速度,将用到的数据先插入到一个临时表中,但是插入了非常多的没有使用的数据,这样导致临时表也非常大,所以尽可能的只向临时表中插入用的到的数据,并且尽可能的使用索引,可以大大的提高速度。
6.关于左关联的一点使用心得:
在on的条件里面尽量的只写关联条件和对左关联的表作限制,而对主表的限制不要写在这里。如果写在里面的话,不但速度非常慢,而且可能会出现莫名其妙的结果。
分享到:
相关推荐
IBM DB2作为一款先进的关系型数据库管理系统,其内置的优化器能够在处理复杂的SQL查询时提供高效的执行策略。本文将基于《DB2查询访问计划分析与优化—张广舟》这一资料,深入探讨DB2中的查询优化技术,特别是查询...
3. **从数据表中取指定前几条记录:** 使用`LIMIT`或`FETCH FIRST`子句来获取指定数量的记录。 4. **游标的使用:** 游标是用于处理结果集的指针。可以用来逐行检索结果集中的数据。 5. **类似DECODE的转码操作:** ...
DB2是IBM开发的一款关系型数据库管理...理解并掌握这些概念和技巧对于有效地管理和维护DB2数据库至关重要。实践中,需要注意定期更新DB2版本,以利用最新的功能和性能改进,并遵循最佳实践,以确保系统的稳定性和效率。
这本书可能会探讨如何优化JDBC代码,处理大数据量时的策略,以及如何利用JDBC进行复杂查询和存储过程的调用。 总之,理解和掌握JDBC是成为一名合格的Java数据库开发者的必备技能。通过阅读相关书籍和实践,你可以...
学习MySQL不仅需要掌握SQL语句的基本用法,还要理解数据库的设计原则,如范式理论,以及索引、视图、存储过程、触发器等高级特性。同时,了解性能优化、备份恢复策略和安全性管理也是成为熟练的数据库管理员的重要...
MySQL是一种广泛使用的开源关系型数据库管理系统,尤其在Web应用程序中占据重要...同时,还应该掌握SQL性能优化、索引策略、存储引擎的区别、视图、触发器、存储过程、安全性等方面的知识,以全面展示自己的专业素养。
4. 数据库连接:支持Oracle、Microsoft SQL Server、IBM DB2等数据库。 安装步骤主要包括以下几个部分: 1. **下载与解压**:获取ArcIMS 9.0的安装文件,通常为.exe或.iso格式,解压到指定目录。 2. **安装Java环境...
- **性能优化:** Oracle数据库通常被认为在性能方面更为出色,特别是在大数据量的情况下。 - **可扩展性:** Oracle提供了更多的扩展选项和工具,如RAC(Real Application Clusters)等,适合大规模部署。 - **安全...