- 浏览: 237811 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
DeepThought:
必须赞一个 用了各种方法 最终还是改了repo才能下载! Th ...
Android源码下载出现的问题 -
wj10000:
,这个不错呀,还准备用js 实现这个来着 ....
自己写jstl标签解析long时间 -
wjjxf:
xubingok 写道System.out.println是J ...
Android无法System.out.println出null -
xubingok:
System.out.println是JDK中的io流中的方法 ...
Android无法System.out.println出null -
JjayLee:
你可以更详细一点。。。
android网络连接Wifi和cmnet及cmwap的问题
项目中DB层会定时向mysql批量提交sql操作,之前是未设置是否自动提交也就是自动提交,性能很差,后来改为手动事务就好了,把一堆sql作为一个事务提交,如果有失败再单个提交。
写了个例子,测试了下性能,发现1000句的更新语句,手动提交事务有300倍的性能提升。
实例代码:
执行结果:
写了个例子,测试了下性能,发现1000句的更新语句,手动提交事务有300倍的性能提升。
实例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; public class TestDB { static Connection conn = getDBConnection("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8&createDatabaseIfNotExist=true&serverTimezone=UTC&useSSL=false", "root","root"); public static Connection getDBConnection(String driver, String urlDB, String user, String pwd) { Connection conn; try { // 连接MYSQL数据库 Class.forName(driver); conn = DriverManager.getConnection(urlDB, user, pwd); return conn; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) throws Exception { conn.createStatement().execute("CREATE TABLE `test` ( `id` int(11) NOT NULL, `val` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); conn.createStatement().execute("INSERT INTO `test` VALUES (1,1)"); test3(false, 1000); test3(false, 1000); test3(true, 1000); test4(false, 1000); test4(true, 1000); test5(); test6(); conn.createStatement().execute("DROP TABLE `test` "); conn.close(); System.out.println("test database ok"); } public static void test1() throws Exception{ long t = System.currentTimeMillis(); Statement ps = conn.createStatement(); for(int i = 0;i < 100;i++){ ps.execute("UPDATE test SET `val`="+(2000+i)+" WHERE id=1"); } ps.close(); long e = System.currentTimeMillis(); System.out.println("test1 used:"+(e-t)); } public static void test3(boolean autoCommit, int count) throws Exception{ long t = System.currentTimeMillis(); conn.setAutoCommit(autoCommit); Statement ps = conn.createStatement(); for(int i = 0;i < count;i++){ ps.execute("UPDATE test SET `val`="+(2000+i)+" WHERE id=1"); } // ps.close(); if(!autoCommit){ conn.commit(); } long e = System.currentTimeMillis(); System.out.println("test createStatement , count="+count+" autoCommit="+autoCommit+" used:"+(e-t)); } public static void test4(boolean autoCommit, int count) throws Exception{ long t = System.currentTimeMillis(); conn.setAutoCommit(autoCommit); PreparedStatement ps = conn.prepareStatement("UPDATE test SET `val`=? WHERE id=?"); for(int i = 0;i < count;i++){ ps.setObject(1, 2000+i); ps.setObject(2, 1); ps.execute(); } ps.close(); if(!autoCommit){ conn.commit(); } long e = System.currentTimeMillis(); System.out.println("test prepareStatement, count="+count+", autoCommit="+autoCommit+", used:"+(e-t)); } public static void test5() throws Exception{ long t = System.currentTimeMillis(); conn.setAutoCommit(false); Statement ps = conn.createStatement(); for(int i = 0;i < 1000;i++){ ps.addBatch("UPDATE test SET `val`="+(2000+i)+" WHERE id=1"); } ps.executeBatch(); ps.close(); conn.commit(); long e = System.currentTimeMillis(); System.out.println("test5:"+(e-t)); } public static void test6() throws Exception{ long t = System.currentTimeMillis(); conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement("UPDATE test SET `val`=? WHERE id=?"); for(int i = 0;i < 1000;i++){ ps.setObject(1, 2000+i); ps.setObject(2, 1); ps.addBatch(); } ps.executeBatch(); ps.close(); conn.commit(); long e = System.currentTimeMillis(); System.out.println("test6:"+(e-t)); } }
执行结果:
引用
test createStatement , count=1000 autoCommit=false used:200
test createStatement , count=1000 autoCommit=false used:150
test createStatement , count=1000 autoCommit=true used:29423
test prepareStatement, count=1000, autoCommit=false, used:199
test prepareStatement, count=1000, autoCommit=true, used:29996
test5:243
test6:167
test database ok
test createStatement , count=1000 autoCommit=false used:150
test createStatement , count=1000 autoCommit=true used:29423
test prepareStatement, count=1000, autoCommit=false, used:199
test prepareStatement, count=1000, autoCommit=true, used:29996
test5:243
test6:167
test database ok
发表评论
-
很久没写博客了
2018-10-27 10:30 2先激活下,有将近4年没有写实质性的博客内容了,这几年发生了很多 ... -
使用ios的autolayout做UI
2014-09-21 22:03 1401之前一直用的是老的坐标定位,和自动缩放进行 ... -
cocos2d在IOS6上的初始屏幕方向
2013-10-07 00:31 1314在6之前初始方向都是UIDeviceOrientationL ... -
弄了个微信公共帐号【北京汽车摇号助手】
2013-07-26 19:46 953花一天时间弄了个微信公共帐号,北京汽车摇号助手,微信号bj ... -
两年的项目开发一点小心得(二)
2013-06-20 23:31 903接着昨天 ... -
两年的项目开发一点小心得
2013-06-20 00:38 869从11年8月份 ... -
java分析内存溢出情况
2013-04-03 11:33 955jps获取java进程id“jmap -histo[:live ... -
cocos2d在xcode4.5ios6上屏幕转向的问题
2012-12-15 19:20 1528在ios5.1.1真机上测试的非常好,然后上传到appstor ... -
MacOs系统重装或者换电脑iPhone开发者证书前移问题
2012-12-02 11:35 2965对于我等使用能够虚拟机的苦逼开发者,一旦苹果发新系统或者xco ... -
解决android内部存储空间/data/dalvik-cache存储问题
2012-05-18 17:47 6980U880系统的内部存储空间总是不足,发现/dat ... -
解决NSData中非法utf-8字节的问题
2012-05-13 13:12 4878当用nsdata,按照utf8编码来初始化nsstr ... -
练练手,用mina2.0搭建一个nio客户端
2012-05-08 16:03 6613练练手,用mina2.0搭建一个nio客户端,连接服务器。 ... -
android网络连接Wifi和cmnet及cmwap的问题
2011-10-27 23:43 4447困扰了我很久的,android ,http client无法直 ... -
cocos2d 开发入门
2011-10-23 02:08 1351cocos2d是iPhone开发上的一个2d免费开源框架。可以 ... -
Xcode3.2.6破解免证书真机开发调试
2011-10-15 23:55 7240Xcode只有破解后才能免费真机调试,否则需要注册 ... -
Windows环境利用Vmware7.1.3 搭建iPhone开发环境
2011-10-14 23:57 6716开发iPhone程序必须要在MacOS下利用Xc ... -
QQ空间g_tk算法
2011-08-17 23:17 3567public int getGTK(S ... -
C++学习小记
2011-07-05 23:23 1011很久没有写技术博客了,年后过来没有多少编程的工作, ... -
Java解惑读书笔记2
2011-05-07 11:10 1300从网上下的java解惑总共讲了61点,我拣一些,自己不知道的或 ... -
Java解惑读书笔记1
2011-05-07 10:14 10541。奇偶判断,应该用i%2 ...
相关推荐
值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。 3、在动态SQL或有时间限制的命令中使用Statement对象 在执行SQL命令时,我们...
v1.7对池中返回的所有链接做了默认setAutoCommint(true)设置。 v1.6增加了一个配置项(类似于proxool的最大连接使用时间),当一个连接的使用时间超过这个配置后将被自动回收,改连接内的内容将被自动回滚。 v1.5将...
v1.7对池中返回的所有链接做了默认setAutoCommint(true)设置。 v1.6增加了一个配置项(类似于proxool的最大连接使用时间),当一个连接的使用时间超过这个配置后将被自动回收,改连接内的内容将被自动回滚。 v1.5将...
" " "支持对异构数据库之间两阶段提交交易处理。 " " "在服务器、程序发生故障的情况下,应用中间件必须保" " "证业务的持续运行,保证交易的完整性。 " " "提供内置的JMS服务,支持将TongLINK/Q、MQ " " "Series等...
8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询 9.1 连接表 9.1.1 连接的类型 9.2 键 9.2.1 主键 9.2.2 外键 9.3 使用内连接 9.3.1 使用等连接 9.3.2 使用非等连接 9.4 ...
8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询 9.1 连接表 9.1.1 连接的类型 9.2 键 9.2.1 主键 9.2.2 外键 9.3 使用内连接 9.3.1 使用等连接 9.3.2 使用非等连接 9.4 ...
8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询 9.1 连接表 9.1.1 连接的类型 9.2 键 9.2.1 主键 9.2.2 外键 9.3 使用内连接 9.3.1 使用等连接 9.3.2 使用非等连接 9.4 ...
8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询 9.1 连接表 9.1.1 连接的类型 9.2 键 9.2.1 主键 9.2.2 外键 9.3 使用内连接 9.3.1 使用等连接 9.3.2 使用非等连接 9.4 ...
用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将...
程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执 行。 大多数情况下( 特别是对新项目,新系统的开发而言) ,这样的机制无往不利...
管理员进入登录后,可对帐户进行管理,包括添加管理员帐户、修改管理员帐户、删除管理员帐户和对帐户进行权限设置。 博客用户通过前台登录后,可对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片...
13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...
任何 JDBC 驱动程序的包装器,它纠正了程序员在开发过程中犯的一些常见错误,还提供了 SQL 执行时间信息。 提示:缓存、自动提交、ISO 级别、TX、STMTS 等的性能报告。
Linkis是一个打通了多个计算存储引擎如:Spark、TiSpark、Hive、Python和HBase等,对外提供统一REST/WebSocket/JDBC接口,提交执行SQL、Pyspark、HiveQL、Scala等脚本的计算中间件。 Linkis基于微服务架构,提供了...
7.4.2 开始、提交以及结束事务 124 7.4.3 我是否需要全局事务 124 7.5 定制事务 125 7.6 事务划界 126 7.6.1 将事务在表现层划界 128 7.6.2 将事务在持久层划界 128 7.6.3 将事务在业务逻辑层划界 128 7.7 小结 129 ...
2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL...
具有多种复制功能模块 " " " "支持ODBC 3.0、X/Open XA、CLI、JDBC等标准 " " " "支持分布式事务及两阶段提交功能 " " " "支持动态将锁粒度调整到合适的级别,支持动态行" " " "级锁定 " " " "支持高可用性组,可以...
10.3.1 揭开自动提交的神秘面纱 10.3.2 使用Hibernate非事务地工作 10.3.3 使用JTA的可选事务 10.4 小结 第11章 实现对话 11.1 传播Hibernate Session 11.1.1 Session传播的用例 ...
DOM:处理大型文件时性能下降的非常厉害,适合对xml的随机访问 SAX:事件驱动型的xml解析方法,适合对xml的顺序访问 jsp常用动作? 答:jsp:include 引入一个文件 jsp:useBean 实例化JavaBean jsp:setProperty ...
是否需要实现自动化: 自动化实现“Cruise Search”测试用例: 定位到“Cruise Search”测试用例,在“设计步骤”界面中选择“生成脚本->QUICKTEST_TEST” 需要“Launching Quick Test Professional”来...