摘要: 首 先在代码与生产库间建立一个connection,将读取到的数据放在resultset对象,然后再与开发库建立一个connection。从 resultset取出数据后通过testconnection插入到开发库,以此来实现copy。代码写完后运行程序,速度太慢了,一秒钟只能copy 一千条数据,生产库上有上亿条数据,按照这个速度同步完要到猴年马月呀,用preparedstatement批处理速度也没有提交多少。我想能不能用多 线程处理,多个人干活总比一个人干活速度要快。
假设生产库有1万条数据,我开5个线程,每个线程分2000条数据,同时向开发库里插数据,oracle支持高并发这样的话速度至少会提高好多倍,按照这 个思路重新进行了编码,批处理设置为1万条一提交,统计插入数量的变量使用 java.util.concurrent.atomic.atomiclong,程序一运行,传输速度飞快cpu利用率在70%~90%,现在一秒钟可 以拷贝50万条记录,没过几分钟上亿条数据一条不落地全部copy到目标库。
摘要: 1. select子句中避免使用 “*”
当你想在select子句中列出所有的column时,使用动态sql列引用 ‘*’ 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,oracle在解析的过程中, 会将“*” 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.
2.使用decode函数来减少处理时间
使用decode函数可以避免重复扫描相同记录或重复连接相同的表. 例如:
sql代码 1.select count(*),sum(sal) from emp where dept_no = 0020 and ename like ‘smith%’;
2.select count(*),sum(sal) from emp where dept_no = 0030 and ename like ‘smith%’;
select count(*),sum(sal) from emp where dept_no = 0020 and ename like ‘smith%’;
摘要: 1、将文件checkout到本地目录
svn checkout path(path是服务器 上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “logmessage“ [-n] [--no-unlock] path(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “lockmessage“ [--force] path
例如:svn lock -m “lock te
摘要: 常见的内存溢出有以下两种:
java.lang.outofmemoryerror: permgen space
java.lang.outofmemoryerror: java heap space
---------------------------------------------------------
这里以tomcat环境为例,其它web服务器如jboss,weblogic等是同一个道理。
一、java.lang.outofmemoryerror: permgen space
permgen space的全称是permanent generation space,是指内存的永久保存区域,
这块内存主要是被jvm存放class和meta信息的,class在被loader时就会被放到permgen space中,
它和存放类实例(instance)的heap区域不同,gc(garbage collection)不会在主
摘要: 1. 环境:
1.1. red hat linux 9
1.2. tomcat 5.5.17
2. 需要解决一下几个问题
2.1. 不同的tomcat启动和关闭监听不同的端口
2.2. 不同的tomcat的启动文件startup.sh 中要指定各自的catalina_home和catalina_base这两个环境变量。