- 浏览: 952193 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
创建表:
创建存储过程:
每次执行插入,提交一次
跟load0,没有什么区别因为mysql默认开启自动提交
所有插入一次提交:
执行存储过程:
受影响的行: 0
时间: 26.520s
受影响的行: 1
时间: 0.483s
我的计算机时间已经15:56了,事务还没有结束,前台调用存储过程虽然返回快,但后台事务还在运行
受影响的行: 0
时间: 0.462s
查看事务表为空;
从以上三个可以分析出,load0的执行时间较长,这是由于,每次提交,mysql都要写重做日志redo(ib_logfile0,1oad1虽然时间前台时间不长,但事务在后台运行,load3由于只做一次重做日志所以很快,当然我们是建议,不要在循环中事务提交,而是待所有语句执行完一起提交,最好不要在存储过程中开启事务,因为如果发生回滚,不知道出现什么错误,最好在代码中控制
如下:
CREATE TABLE `role` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=40006 DEFAULT CHARSET=utf-8;
创建存储过程:
每次执行插入,提交一次
DELIMITER $$ CREATE PROCEDURE load0(count INT UNSIGNED,iname varchar(50),iage INT) BEGIN DECLARE s INT UNSIGNED DEFAULT 1; START TRANSACTION; WHILE s<count DO INSERT INTO role(name,age)VALUES(iname,iage); SET s=s+1; COMMIT; END WHILE; END$$ DELIMITER ;
跟load0,没有什么区别因为mysql默认开启自动提交
DELIMITER $$ CREATE PROCEDURE load1(count INT UNSIGNED,iname varchar(50),iage INT) BEGIN DECLARE s INT UNSIGNED DEFAULT 1; START TRANSACTION; WHILE s<count DO INSERT INTO role(name,age)VALUES(iname,iage); SET s=s+1; END WHILE; END$$ DELIMITER ;
所有插入一次提交:
DELIMITER $$ CREATE PROCEDURE load2(count INT UNSIGNED,iname varchar(50),iage INT) BEGIN DECLARE s INT UNSIGNED DEFAULT 1; START TRANSACTION; WHILE s<count DO INSERT INTO role(name,age)VALUES(iname,iage); SET s=s+1; END WHILE; COMMIT; END$$ DELIMITER ;
执行存储过程:
call load0(10000,'jack',23); [SQL]call load0(10000,'jack',23);
受影响的行: 0
时间: 26.520s
truncate table role; [SQL]call load1(10000,'jack',23);
受影响的行: 1
时间: 0.483s
mysql> select * from information_schema.INNODB_TRX; +--------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+------------------+----------------------------+ | trx_id | trx_state | trx_started | trx_requested_lock_id | trx_wait_started | trx_weight | trx_mysql_thread_id | trx_query | trx_operation_state | trx_tables_in_use | trx_tables_locked | trx_lock_structs | trx_lock_memory_bytes | trx_rows_locked | trx_rows_modified | trx_concurrency_tickets | trx_isolation_level | trx_unique_checks | trx_foreign_key_checks | trx_last_foreign_key_error | trx_adaptive_hash_latched | trx_adaptive_hash_timeout | trx_is_read_only | trx_autocommit_non_locking | +--------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+------------------+----------------------------+ | 27177 |[color=red] RUNNING[/color] | [color=red]2016-07-29 15:53:43[/color] | NULL | NULL | 10000 | 21 | NULL | NULL | 0 | 0 | 1 | 360 | 0 | 9999 | 0 | REPEATABLE READ | 1 | 1 | NULL | 0 | 10000 | 0 | 0 | +--------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+
我的计算机时间已经15:56了,事务还没有结束,前台调用存储过程虽然返回快,但后台事务还在运行
truncate table role; call load2(10000,'jack',23); [SQL]call load2(10000,'jack',23);
受影响的行: 0
时间: 0.462s
select * from information_schema.INNODB_TRX;
查看事务表为空;
从以上三个可以分析出,load0的执行时间较长,这是由于,每次提交,mysql都要写重做日志redo(ib_logfile0,1oad1虽然时间前台时间不长,但事务在后台运行,load3由于只做一次重做日志所以很快,当然我们是建议,不要在循环中事务提交,而是待所有语句执行完一起提交,最好不要在存储过程中开启事务,因为如果发生回滚,不知道出现什么错误,最好在代码中控制
如下:
try{ con.setautocommint(false) con.commit(); } catch(SQLException e){ con.rollback(); }
发表评论
-
Deadlock found when trying to get lock; try restarting transaction解决方式
2017-07-18 23:00 1963MySQL 事务的学习整理:http://blog.csdn. ... -
MySQL慢日志
2017-05-18 16:05 993The Slow Query Log:https://dev. ... -
The table is full问题解决过程
2017-05-06 15:29 7272The table‘xxxx’is full 设置临时表大小 ... -
百万级数据-程序迁移后续
2017-04-13 18:09 1582百万级数据-程序迁移:http://donald-draper ... -
Msyql日期字符串转换
2017-04-01 14:13 497Date和String的互相转换:http://www.tui ... -
Mysql添加约束
2017-03-31 16:28 858MySQL中对三种约束的支持:http://leekai.me ... -
Mysql FEDERATED引擎
2016-11-29 15:51 568使用mysql federated引擎构建MySQL分布式数据 ... -
MySQL触发器
2016-11-24 19:04 672CHANGE MASTER:http://dev.mysql. ... -
Mysql主从配置
2016-11-11 18:31 4841、主从服务器分别作以下操作: 1)版本一致 2)初始 ... -
百万级数据-程序迁移
2016-09-29 19:03 2570JVM学习笔记:http://blog.csdn.net/cu ... -
Mysql 备份工具XtraBackup增量备份
2016-08-05 18:11 683安装:http://donald-draper.iteye.c ... -
Mysql 备份工具XtraBackup全量备份
2016-08-05 16:41 521Percona安装:http://donald-draper. ... -
Mysql 备份工具XtraBackup 安装
2016-08-05 16:28 903开源热备工具XtraBackup下载:https://www. ... -
sysbench基准测试
2016-08-01 17:45 722下载sysbench:http://dev.mysql.com ... -
mysql 全文索引
2016-07-28 11:03 574mysql大表查询的时候,'String%'模糊查询可以使用B ... -
MySQL 物理文件的迁移
2016-07-26 15:39 2280参考资料:http://www.cnblogs.com/adv ... -
centos7 安装mysql
2016-07-26 11:36 707下载MYSQL-RPM包:http://downloads.m ... -
mysql 大表添加索引注意事项
2016-07-25 16:01 2583LINXU top命令: http://www.c ... -
mysql 大表分页查询测试分析优化
2016-07-25 11:30 1463索引概念: http://blog.csdn.net/xlur ... -
MySQL事务
2016-06-01 10:49 574事务基础知识:http://my.oschina.net/je ...
相关推荐
mysql事务处理的意义 事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来...
nodejs + mysql 事物处理问题 呵呵 看了就知道 记得npm install啊 需要的东西啊 本想免费 苦于没积分 ,需要的的同学,给点分吧
关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....
mysql事务处理用法与实例详解
主要介绍了Java实现的mysql事务处理操作,结合实例形式较为详细的分析了Java基于JDBC操作mysql数据库实现事务处理的相关概念、操作技巧与注意事项,需要的朋友可以参考下
mysql 事务处理学习资料,带有示例说明
MySQL事务处理与并发访问.pdf
mysql事务处理[归类].pdf
MySQL事务处理详细讲解及完整实例下载 ..
本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...
一、Mysql事务概念 MySQL 事务主要用于处理操作量大,复杂度高的数据。由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。在 MySQL 中只有使用了 Innodb 数据库引擎的...
本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下: php+mysql事务处理的几个步骤: 1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 注意:mysql...
主要介绍了mysql事务处理用法与实例代码详解,详细的介绍了事物的特性和用法并实现php和mysql事务处理例子,非常具有实用价值,需要的朋友可以参考下
。。。
...
主要介绍了PHP+MySQL高并发加锁事务处理问题解决方法,结合实例形式分析了PHP+MySQL事务处理相关操作技巧与注意事项,需要的朋友可以参考下
事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。这篇文章主要介绍了MySQL事务处理,需要的朋友可以参考下