supdatea.java

来自「主要对各种数据库性能进行测试」· Java 代码 · 共 145 行

JAVA
145
字号
package sqlite;

import java.sql.SQLException;
import java.util.Random;

public  class SupdateA extends ServerFactory {
    static int ist,thenum = 0;
    static long max,min,total;
    int update_thread_num,num; 
    long avg;
    String table = "users",showprint = "",dbtype="";; 
    
	ExecSql exec = new ExecSql();  
	WriteFile file = new WriteFile();
	Configure config = new Configure(); 
	
	public SupdateA() { 
		this.init();
	}
	
	@Override
	synchronized public int Exec() {
		// TODO Auto-generated method stub 
		int newval = 0,recnum = 0; 
		String rec = "",in = "";
		
		thenum ++; 
		newval = thenum;
		rec = config.getProperty("updatenum"); 
		update_thread_num = Integer.parseInt(config.getProperty("update_thread_num"));
		num = Integer.parseInt(config.getProperty("updatenum"));
		showprint = config.getProperty("showprint");
		 
		recnum = 10000;
		if(rec!= null) {
			recnum = Integer.parseInt(rec);
		}
		try { 
			String sql = "";
			long lstart = System.currentTimeMillis(); 
			
			conn.setAutoCommit(true);
			in = "第"+newval+"组"+num+"行数据更新开始执行!";
			System.out.println(in);
			file.aLine(in); 
			
			for(int i= 1 ;i <=recnum;i++) {
				if(showprint.equalsIgnoreCase("yes")){
					Random rand = new Random();
					int ii=rand.nextInt(1000);
					sql="update "+table+" set column2='xxx"+i+"',column3 ='bbb"+i+"' where userid="+ii;	 
					exec.update(conn, sql); 
				} 
			} 
			 
			long lend = System.currentTimeMillis(); 
			long ltook = lend-lstart;
			
			ist++;
			if(ist==1){
				min = ltook;
			}
			if(max<ltook){
				max = ltook;
			}
			if(min>ltook){
				min = ltook;
			}
			total += ltook;
			String ls = ""; 
			
			System.out.println("curThreadID.isRandom="+curThreadID.isRandom);
			if (curThreadID.isRandom == 1 ){
				if (ist == curThreadID.updateNum){
					avg = total/ist;
					ls= "\n/***********************************************************************************************************************/\n";
					ls+="/***操作:更新数据,线程数:"+ist+",每个线程更新行数:"+num+"," +
							"最小等待时间:"+min+"ms,最大等待时间:"+max+"ms,总共等待时间:"+total+"ms"+",平均等待时间:"+avg+"ms。***/\n";
					ls+="/***********************************************************************************************************************/\n";

				}
			}else{
				if(ist == update_thread_num){
					avg = total/ist;
					ls= "\n/***********************************************************************************************************************/\n";
					ls+="/***操作:更新数据,线程数:"+ist+",每个线程更新行数:"+num+"," +
							"最小等待时间:"+min+"ms,最大等待时间:"+max+"ms,总共等待时间:"+total+"ms"+",平均等待时间:"+avg+"ms。***/\n";
					ls+="/***********************************************************************************************************************/\n";
				}
			}
			in = "update第"+newval+"组数据更新"+rec+"条记录用时:"+(lend-lstart)+"ms,从"+lstart+"到"+lend;
			System.out.println(in + "\n" + ls);
			
			file.aLine(in + "\n" + ls); 
			return 1;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			//System.out.println(e.getMessage()); 
			//e.printStackTrace();
			try{
				if(conn!=null) {
					exec.closeConn(conn);
					System.out.println("disconnect"); 
					file.aLine("disconnect");
				}
			}catch(Exception ee){ 
			}
			 
		}catch (Exception e) { 
			e.printStackTrace();
		}finally{
			try{
				//file.finish();
				freeConnection(this.dbtype);
				if(conn!=null) {
					exec.closeConn(conn); 
				}
				System.out.println("disconnect");
				file.aLine("disconnect");
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return 0;
	}

	
	@Override
	public int init() {
		// TODO Auto-generated method stub
		this.dbtype = config.getProperty("dbtype"); 
		if(!initConnection(dbtype)) {
			System.out.println("create database connection failed!");
			return -1;
		}
		return 0;
	}
	public static void main(String[] args) {
		SupdateA a = new SupdateA(); 
		a.init();
		a.Exec();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?