用ODBC连接DB2为什么如此慢

用ODBC连接DB2为什么如此慢,第1张

DB2 本身就是这样的,实例启动后,数据并不会启动的,默认是在第一个应用程序连接数据时候启动数据库的(激活),在实例级分配一些内存,但是并没有影响到数据库这个级别,db2会在第一次连接的时候,按照数据库的配置参数(get db cfg for dbname)对数据库进行初始化,比如分配dbheap,util_heap_sz,locklist,logbufsz等等,这些内存的分配需要大量的时间,等到以后连接的时候,这些 *** 作不必再作,当然就快。第一次启动的这个时候是比较长时间的。还有默认在最后一个应用程序断开连接的时候数据库会自动关闭(去激活)。

你可以采用命令

ACTIVATE DATABASE

启动数据库(激活),不过这样必须用命令

DEACTIVATE DATABASE

才能关闭数据库的(去激活)

你这样写很不好,看起来写的是一句sql,反而速度慢下来了。首先row_number() over() as rownum毫无必要,这样来分页效率不高。然后能不用*就不用*查询。在大数据量和列很多的情况下,会慢很多。

而且你也说了,更新1W条数据需要半个小时。那么可以采用存储过程或者程序来访问。这样会快很多,推荐采用存储过程,110W条数据,就算重建索引等,更新一条应该在200ms一下,一万条,不会那么久的。希望能帮助得到你。

你这样写sql语句,执行时间太久了,会造成假死现象,这样很不好。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9576981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存