事务管理

Python自学第十二周(1)

╄→гoц情女王★ 提交于 2019-11-27 05:00:11
Day13 https://www.cnblogs.com/alex3714/articles/5950372.html 数据库知识MySQL https://blog.csdn.net/jeffleo/article/details/53559712 数据库的linux安装 启动mysql服务 service mysqld start mysql -u root -p show databases; use ... show tables; desc ... #可以看表结构 也可以使用 show columns from ... select * from user\G; 创建一个支持中文的数据库 create database zach charset utf8 添加新用户(带密码的) GRANT ALL ON TEST.* TO 'zach'@'localhost' IDENTIFIED BY 'zach123'; 删除数据库 drop database ... 显示数据表的详细索引信息 show index from ... MySQL 创建数据表 CREATE TABLE table_name (column_name column_type); 创建一个student表 create table student( stu_id INT NOT NULL AUTO

MySQL两种存储引擎: MyISAM和InnoDB 简单总结

允我心安 提交于 2019-11-27 04:53:35
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。 InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。 MyISAM和InnoDB两者之间有着明显区别,简单梳理如下: 1) 事务支持 MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。 MyISAM是非事务安全型的,而InnoDB是事务安全型的,默认开启自动提交,宜合并事务,一同提交

JAVA事务

断了今生、忘了曾经 提交于 2019-11-27 04:46:41
要理解这个java事务,我们需要依次来回答下面几个问题: 1、什么是事务? 事务这个概念来自于数据库,它必需满足ACID的基本原则,所谓ACID即是atomicity(原子性),consistency(一致性),isolation(隔离性)和durability(执久性)的首字母的缩写;原子性表示一个事务内的所有操作是一个整体,要 么全部成功,要么全失败;一致性表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态;隔离性表示在事务提交前,事务对数据的修改对事务不可见;执久性表示已提交的数据在事务失败时,数据的状态都应该正确。 2、既然事务这个概念是从数据库而来,那么的java事务有什么关系? 实际上一个java应用程序要操作数据库中的数据,都必需通过JDBC,增删改查都通过调用JDBC的相应API来操作,这样事务的控制也相应的转移到了java程序中,所以通常把操作数据库的事务都叫做java事务。 3、为什么需要事务? 其实事务最开始提出来就是因为有一些操作是一个整体,必须放到一个单元中,比如在银行转帐业务中,从A帐户中转1000无到B帐户中,这其中的两个操作就必须是一个整体,要么全部成功要么全部。 4、怎么实现事务管理? 目前实现事务的类型主要有JDBC事务和JTA事务,按事务的管理者来分又可以分为编程式事务和声明式事务;JDBC事务由java.sql

Innodb索引和锁的学习笔记

被刻印的时光 ゝ 提交于 2019-11-27 04:36:28
附录:前段时间学习了下innodb锁的相关知识,对锁和事务有了大体理解,这里做个小总结。 1.Innodb事务和锁的关系。 Innodb区别于MyISAM的两个特点就是Innodb对于事务的支持和对行锁的支持。事务要求了一组SQL语句的ACID特性,同时为了避免对一行记录的并发更新,innodb本身会在一定情况下加锁,然后等语句所在的事务退出后(rollbak或者commit)释放锁。其实在autocommit=true时,一个sql本身就是一个事务。 Innodb在执行Update,Delete,Insert时会对记录加写锁(排他锁,加上排他锁后,不能再加共享锁和排他锁)。而Select语句不会对记录加锁。 共享锁:SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE。 排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE。 举例: 如图,左侧事务加了排他锁(for update),右侧事务直接查询不会等待(不加锁),加排他锁失败,加共享锁失败(lock in share mode)。左侧事务提交或者回滚后,释放锁。 2.Innodb的行锁特性。 Innodb使用行锁加锁记录,也就是说会在加锁条件下对访问的具体行进行加锁,而不会锁住全表。这样能够大大提高表访问的吞吐量

SAP学习笔记

僤鯓⒐⒋嵵緔 提交于 2019-11-27 04:08:01
整理:Jims of 肥肥世家 Copyright © 2005 本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。 Abstract Table of Contents 1. Basis 1.1. SAP服务器安装 1.1.1. SAP 4.6D + Windows 2003 + MS SQL Server 2000 SP2 1.2. 安装SAPGUI for the Java Environment 1.3. client copy 1.4. IMG 1.5. 创建一个新的用户 1.6. 创建一个新的角色 1.7. 设置SAPGUI自动LogOut功能 1.8. 利用scat进行数据导入 1.9. 配置个人信息 1.10. 知识点 1.11. 事务码 2. FI 2.1. 知识点 2.2. 事务码 3. CO 3.1. 知识点 3.2. 事务码 4. 专业术语表 Chapter 1. Basis Table of Contents 1.1. SAP服务器安装 1.1.1. SAP 4.6D + Windows 2003 + MS SQL Server 2000 SP2 1.2. 安装SAPGUI for the Java Environment 1.3. client copy 1.4. IMG 1.5.

spring 事务案例--转账

*爱你&永不变心* 提交于 2019-11-27 03:48:05
spring 事务案例--转账 1 环境搭建 1.创建表 create databases spring_date; use spring_date; create table account( id int primary key auto_increment, username varchar(50), money int); insert into account(username,money) values('jack','10000') insert into account(username,money) values('rose','10000') 2.导入jar包 核心 4+1 aop:4 (aop联盟,spring aop,aspectj,spring aspectj) 数据库 2 (jdbc ,tx) 驱动 mysql 连接池 c3p0 3.dao层 package com.itheima.dao; import org.springframework.jdbc.core.support.JdbcDaoSupport; public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao{// 继承JdbcDaoSupport,之后只需要注入数据源,底层自动创建模板 @Override

事物 @Transactional

我只是一个虾纸丫 提交于 2019-11-27 03:17:29
转载: http://www.cnblogs.com/kristain/articles/2038397.html 一、什么是事务   事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换成另一种状态。   事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。 原子性 。即不可分割性,事务要么全部被执行,要么就全部不被执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。 一致性或可串性 。事务的执行使得数据库从一种正确状态转换成另一种正确状态。 隔离性 。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应显示给任何其他事务。 持久性 。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障

XA事务与MySQL

主宰稳场 提交于 2019-11-27 02:19:04
XA事务就是两阶段提交的一种实现方式 XA规范主要定义了事务管理器TM,和资源管理器RM之间的接口 根据2PC的规范,将一次事务分割成两个阶段 1. prepare阶段 TM向所有RM发送prepare指令,RM接受到指令后执行数据修改和日志记录等操作,然后返回 可以提交/不可提交 给TM (按照我的理解应该类似于MySQL在开启一个事务之后,只差最后的COMMIT或者ROLLBACK的状态) 2. commit阶段 TM接受到所有RM的prepare结果 如果有RM返回是 不可提交 或者超时,那么向所有RM发送ROLLBACK命令 如果所有RM都返回可以提交,那么向所有RM发送COMMIT命令 XA的异常情况处理 MySQL与XA事务的关系有两种情况 1. 内部XA 在使用innodb作为存储引擎,并且开启binlog的情况下,MySQL同时维护了binlog日志与innodb的redo log 为了保证这两个日志的一致性,MySQL使用了XA事务,由于只在单机上工作,所以被称为内部XA 2. 外部XA 就是一般谈论的分布式事务了 MySQL支持XA START/END/PREPARE/COMMIT这些sql语句,通过使用这些命令,我们是可以完成分布式事务的 状态转移图如下 (我有点不能理解的是,为什么一定需要XA END这个语句,直接XA PREPARE不行吗) 在MySQL5

高性能MySQL之事物

北战南征 提交于 2019-11-27 01:21:46
背景 当你手中抓住一件东西不放时,你只能拥有一件东西,如果你肯放手,你就有机会选择更多。与其在别人的生活里跑龙套,不如精彩做自己。人无所舍,必无所成。跌倒了,失去了,不要紧,爬起来继续风雨兼程,且歌且行。 一、概念 事务到底是什么东西呢?想必大家学习的时候也是对事务的概念很模糊的。接下来通过一个经典例子讲解事务。 银行在两个账户之间转账,从A账户转入B账户1000元,系统先减少A账户的1000元,然后再为B账号增加1000元。如果全部执行成功,数据库处于一致性;如果仅执行完A账户金额的修改,而没有增加B账户的金额,则数据库就处于不一致状态,这时就需要取消前面的操作。这过程中会有一系列的操作,比如余额查询,余额做加减法,更新余额等,这些操作必须保证是一个整体执行,要么全部成功,要么全部失败,不能让A账户钱扣了,但是中途某些操作失败了,导致B账户更新余额失败。这样用户就不乐意了,银行这不是坑我吗?因此简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。你现在知道,MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如MySQL原生的MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。 接下来会以InnoDB为例,抽丝剥茧MySQL在事务支持方面的特定实现。 二、隔离性与隔离级别

微软消息队列

强颜欢笑 提交于 2019-11-26 21:05:08
转至网络: 事务性消息传递发送和接收应用程序表示要在一个事务范围内发送或检索消息,这称为事务性消息传递。在事务范围之外发送或检索消息称为非事务性消息传递。仅当采用一种使所有任务(包括非消息队列操作)全部成功或全部失败的方式执行任务时,才使用事务性消息。 事务的特点体现在其 ACID(原子性、持续性、隔离性、持久性)属性: 原子性。原子性指事务的全部行为或无行为。当事务包含一系列操作时,所有操作将被作为一个单独的操作对待,要么成功完成,要么根本不执行。 持续性。事务将系统从一个有效状态转换到另外一个有效状态。 隔离性。同时执行的多个事务在执行过程中互不影响。在每个事务看来,其他的事务在其之前已执行或在其之后执行。 持久性。事务执行完毕,即使系统或网络发生故障,它们也一直起作用。 当使用事务性消息传递时,发送或接收应用程序将有机会提交事务(所有操作均成功)或中止事务(其中一个操作失败)从而使所有更改回滚。当中止事务时,所有操作将回滚到事务被调用的状态。 在事务内发送消息时,所有消息均按发送顺序一起发送或根本不发送。如果消息可传送,则消息队列将保证所有在事务内发送的消息都将一次性到达,并且按消息的发送顺序到达。当在事务内检索消息时,所有消息将从队列中删除或被放回到队列中的原始位置。请注意,事务性消息不能被发送到多播地址,而且在事务上下文中查看消息是不合理的。 在消息队列中