DB2数据库优化需掌握几条基本策略

1、对后续用到的表建立索引(注意在插入数据之前建立或者在插入后建立但是要runstats):

说明:插入之前建立的话,在表插入数据的过程中,索引也随着更新,这样的话需要较大的日志空间,因此速度会比较慢,可以采用不计日志的方式插入;数据差完之后再建立索引的话,该表的日志统计信息没有更新,因此执行计划会很差,用不到索引,runstats on tabble asiainfo.aaaa and indexes all之后,索引统计信息就会更新,这样执行计划会考虑到使用索引,因此速度快。

2、将比较大的表建在多节点的表空间上,同时建好索引:

说明:现有的db2数据仓库每个节点使用2个CPU,4G内存,DIM表空间计划是存放维表的表空间,因此是单节点的。在使用这个表空间的中的表的时候,最多只会用到2个CPU,4G内存,加上其他的表空间也都要用到这两个CPU和这4G内存,因此资源比较有限。建议较大的表不要放在这个表空间中,而是建立好分区键,放在多节点的表空间中,这样检索这个表的时候32个节点同时检索,最后汇总到0节点上进行展现,速度当然会非常的快。另外,虽然32节点并行性好,但是如果建立好索引的话,速度会更快。

3、将插入的表使用不计日志的方式插入:

说明:数据库为了保证数据的一致性和可回退性,插入、更新或者删除数据的时候要计日志,这样在失败的时候可以回退,但是如果并发较多或者操作非常大的话,会导致争抢日志的情况,导致操作非常缓慢。如果使用不计日志的方式进行插入、更新或者删除操作的话,日志使用极少,但是如果操作失败的话是无法回退的,这样一致性得不到保证,这个表只能删除重建!!!!

4、将表建立表级锁,减少锁数量的使用:

说明:数据库的锁的最大数量是有限制的,并且每个锁都要占一定的内存,因此如果锁的数量非常多,使用的内存也就多,导致资源紧张。

5、建立临时表的时候尽量只插入用的到的数据,不插用不到的数据:

说明:程序中好多地方为了提高速度,将用到的数据先插入到一个临时表中,但是插入了非常多的没有使用的数据,这样导致临时表也非常大,所以尽可能的只向临时表中插入用的到的数据,并且尽可能的使用索引,可以大大的提高速度。

6、关于左关联的一点使用心得:

在on的条件里面尽量的只写关联条件和对左关联的表作限制,而对主表的限制不要写在这里。如果写在里面的话,不但速度非常慢,而且可能会出现莫名其妙的结果。

时间: 2024-09-12 20:32:38

DB2数据库优化需掌握几条基本策略的相关文章

解开发者之痛:中国移动MySQL数据库优化最佳实践

 章颖数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA   开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据类型优化,索引优化,SQL优化三个角度考虑MySQL数据库优化问题,本次分享将从开发角度,看如何实现MySQL数据库优化. 本次

DB2数据库应用系统性能优化深入探究

DB2是一种高性能的大型关系数据库管理系统,广泛的应用在客户/服务器体系结构中.评价系统性能优化的标准有:吞吐量.响应时间.并行能力等. 设计数据库 1.熟悉业务系统 对业务系统的熟悉程度对整个数据库系统的性能有很大影响,一个对业务不熟悉的设计人员,尽管有丰富的数据库知识,也很难设计出性能最佳的数据库应用系统. 2.规范化与非规范化 数据库被规范化后,减少了数据冗余,数据量变小,数据行变窄.这样DB2的每一页可以包括更多行,那么每一区里的数据量更多,从而加速表的扫描,改进了单个表的查询性能.但是

java-今天面试的时候遇到一个问题,查三张表,有一百万条纪录,怎么查?他是想问什么,数据库优化吗

问题描述 今天面试的时候遇到一个问题,查三张表,有一百万条纪录,怎么查?他是想问什么,数据库优化吗 今天面试的时候遇到一个问题,查三张表,有一百万条纪录,怎么查?他是想问什么,数据库优化吗 解决方案 我不认为索引或分页是重点. 那不是怎么查的问题,而是怎么优化数据库的问题. 我觉得应该是查的方式或访问数据的方式,防止内存溢出,两种方法. 1.用游标查,而不是一下子取到内存中. 2.一回查询一定量数据,取多回. ps: 查的时候,在有必要的时候加上HINT句,可以优化效率. 这个你也说了的话,我觉

DB2数据库性能优化的几个小技巧

最简单而最见成效的--Bufferpool 缓冲池是内存中的一块存储区域,用于临时读入和更改数据库页(包含表行或索引项).缓冲池的用途是为了提高数据库系统的性能.从内存访问数据要比从磁盘访问数据快得多.因此,数据库管理器需要从磁盘读取或写入磁盘的次数越少,性能就越好.对一个或多个缓冲池进行配置之所以是调优的最重要方面,是因为连接至数据库的应用程序的大多数数据(不包括大对象和长字段数据)操作都在缓冲池中进行. 缺省情况下,应用程序使用缓冲池 IBMDEFAULTBP,它是在创建数据库时创建的.当

大数据-2000万条开房数据,如何快速查询(数据库优化)

问题描述 2000万条开房数据,如何快速查询(数据库优化) 某酒店泄漏 2000 万条数据.http://kfxx.info/ 如何快速查询某个姓名的全部记录. 姓名不是唯一的,有可能重名. csv 格式数据大概 3G 大小,如果导入数据库中,大概1.5G(MySQL),而且 2000万也不是个小数目. 解决方案 索引啊,这还有什么好想的,如果你知道表结构的话,如果没有导数据库,放在linux上用cat | grep也可以 如果你舍得花时间,你可以把数据整个重构一遍,按照姓名或者其他的查询字段做

DB2数据库常用工具

1解释工具 1.1 Visual Explain 之前都是explain就可以了昂 Visual Explain是一种GUI工具,他为数据库管理员和应用程序开发人员提供了查看为特定SQL语句选择的访问计划的图形化的表示能力.但Visual Explain只能用于查看解释快照数据或人工输入SQL或脚本,要查看已收集并写入了解释表的全面解释数据,则必须使用db2exfmt或db2expln工具. 1.2 db2expln   在包含嵌入式SQL语句的源代码文件绑定到数据库时(无论是作为预编译流程的一

SQL Server数据库优化方案

server|数据|数据库|优化 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有

用Visual C#中实现DB2数据库编程(转)

visual|编程|数据|数据库 在Visual Studio.NET Beta 1版本中访问IBM DB2等非SQL Server数据库通常是使用ADO.NET的ODBC方法,而在Beta 2中则改用OLE DB方式存取数据库. Beta1中连接字符串主要需声明数据库的ODBC的DNS名字,但Beta 2中的OLE DB连接的字符串就较复杂了,使用的类也不相同.由于DB2等数据库在大型机等应用中使用非常广泛,.NET自然会全力支持此类编程开发,为此,下文将逐步阐述OLE DB的DB2开发. O

Visual C#中实现DB2数据库编程

visual|编程|数据|数据库 在Visual Studio.NET Beta 1版本中访问IBM DB2等非SQL Server数据库通常是使用ADO.NET的ODBC方法,而在Beta 2中则改用OLE DB方式存取数据库. Beta1中连接字符串主要需声明数据库的ODBC的DNS名字,但Beta 2中的OLE DB连接的字符串就较复杂了,使用的类也不相同.由于DB2等数据库在大型机等应用中使用非常广泛,.NET自然会全力支持此类编程开发,为此,下文将逐步阐述OLE DB的DB2开发. O