事务

Dubbo分布式环境搭建测试(依赖mybatis,spring,druid)

不羁的心 提交于 2020-03-02 18:22:45
此文档针对初学者。 废话不多说,先上源码: http://git.oschina.net/alexgaoyh/Dubbo-parent http://git.oschina.net/alexgaoyh/Dubbo-parent/attach_files Maven项目,只需要注意下图中红色箭头标注的三个模块即可; Dubbo-api: API接口,被 Dubbo-test-provider(服务提供者),Dubbo-test-consumer(服务消费者)依赖; Dubbo-api 模块没什么多说的,只是需要的interface接口和实体类……; Dubbo-test-consumer 模块同样没有什么多说的,讲服务提供者发布的接口依赖到项目中即可,注意 consumerAll.xml 即可。 Dubbo-test-provider: 服务提供者,Dubbo整合mybatis spring druid,实现事务控制,druid监控数据的log4j日志记录(sql输出); 下图中,需要注意两个单元测试的文件, DemoTest.java 文件是用来本地进行单元测试使用的,确保对外发布的服务接口都通过单元测试; DemoDubboTest.java 文件是直接对外发布dubbo服务接口的,相关的方法通过单元测试整合,即可对外发布接口,发布接口之后,服务消费者即可进行相关业务操作; PS

PostgreSQL10基础(7)MVCC

人走茶凉 提交于 2020-03-02 18:02:18
参考书籍: 《PostgreSQL10 High Performance》 MVCC即Multi Version Concurrency Control多版本并发控制,为提升多用户访问同样的数据而设计,性能优于锁定。被广泛用于诸多主流数据库。 内部可见性计算 当一个事务创建时,数据库会更新一个事务ID计算器,通常叫做XID。 当插入一行或更新数据时,一个新行被创建(更新也会创建新行),该新行有一个字段insertion XID(通常称作xmin),记录了当前事务ID 当删除数据时,每个被删除行有个delete XID(通常称作xmax),当行未被删除时值为空 select txid_current(),xmin,xmax,id from test txid_current()函数返回当前查询的XID 如果一个查询开始,行数据被找到的条件为 (查询XID >= xmin) && ((查询XID <= xmax) || 查询XID is null) 每个数据库客户会话都允许同时修改表,但他们只有在事务提交后才对其他会话可见。 示例 会话1启动事务并更新数据但不提交 # begin; BEGIN # select txid_current(),xmin,xmax,* from test; txid_current | xmin | xmax | id | name -----------

Spring事务管理的四种方式(以银行转账为例)

风格不统一 提交于 2020-03-02 13:21:34
本文配套示例代码下载地址(完整可运行,含sql文件,下载后请修改数据库配置): http://download.csdn.net/detail/daijin888888/9567096 一、事务的作用 将若干的数据库操作作为一个整体控制,一起成功或一起失败。 原子性 :指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性 :指事务前后数据的完整性必须保持一致。 隔离性 :指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。 持久性 :指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即时数据库发生故障也不应该对其有任何影响。 二、Spring事务管理高层抽象主要包括3个接口 -- Platform TransactionManager 事务管理器(提交、回滚事务) Spring为不同的持久化框架提供了不同的Platform TransactionManager接口实现。如: 使用Spring JDBC或iBatis进行持久化数据时使用DataSourceTransactionManager 使用Hibernate3.0版本进行持久化数据时使用HibernateTransactionManager -- TransactionDefinition 事务定义信息(隔离、传播、超时、只读) 脏读

Siege 高性能压测工具

浪子不回头ぞ 提交于 2020-03-02 13:07:34
前言 Siege是一款高性能的Http压力测试工具。 Siege支持身份验证、cookies、http、https和ftp协议。 安装Siege 如果要支持https,需要先下载安装openssl, 下载地址: https://github.com/openssl/openssl 1.开始安装openssl git clone https://github.com/openssl/openssl cd openssl ./config --prefix=/usr/local/openssl make make install openssl version 2.开始安装siege 下载地址: http://download.joedog.org/siege/siege-4.0.4.tar.gz tar zxvf siege-4.0.4.tar.gz cd siege-4.0.4 make clean ./configure --prefix=/usr/local/siege --with-ssl=/usr/local/openssl make make install siege安装完毕 注意:siege默认只支持255个并发数,可以自己自定义,修改/root/.siege/siege.conf下的limit数值。 命令参数 参数 描述 -V, --version 打印版本号 -h

深入理解MySQL底层实现

自古美人都是妖i 提交于 2020-03-02 13:01:12
本文摘自: http://harlon.org/2018/06/20/database/ 深入理解MySQL底层实现 这里选用MySQL作为了解数据库的底层实现,这是因为MySQL是目前最常用的数据库,了解它的底层实现也基本上对目前大数据的数据库所用的技术会有一个大致的了解。数据库最主要的索引设计,了解数据库的索引设计基本上就对数据库有了大致的了解,其次对其事务的ACID操作实现原理做以分析,以及数据库中所用到的提高其性能的优化等等。 存储引擎 MySQL常用的存储引擎有InnoDB和MyISAM,其中MyISAM是MySQL的默认存储引擎。 InnoDB InnoDB的存储文件有两个,后缀名分别是.frm和.idb,其中.frm是表的定义文件,而idb是数据文件。InnoDB中存在表锁和行锁,不过行锁是命中索引的情况下才会起作用的。 InnoDB支持事务,且支持四种隔离级别,即原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏

SQLServer数据库同步准实时解决方案

China☆狼群 提交于 2020-03-02 09:37:21
下载网站: www.SyncNavigator.CN 客服QQ1793040 ---------------------------------------------------------- 关于HKROnline SyncNavigator 注册机价格的问题 HKROnline SyncNavigator 8.4.1 非破解版 注册机 授权激活教程 1. 需求 1)如何将在线运营的SQLServer数据库数据及时同步到另外一个SQLServer数据库。 2)数据仓库系统的数据抽取会对源系统造成巨大压力,严重影响性能和响应速度。如何将生产数据快速抽取到历史数据仓库,改善业务系统的性能。 3)分布式数据库,如何将分部的数据库数据复制到总部数据库,以利于总部汇总统计。 这些业务应用中常见的SQLServer数据库同步需求,都需专业的复制系统来完成。 2. 同步方案 浪擎·镜像系统简介 浪擎·镜像系统是业界成熟的应用系统复制解决方案,无需源和目标硬件规格或配置相同,具有准实时复制、系统和网络资源占用少、应用方式灵活等特点。浪擎·镜像系统支持SQLServer数据库、Oracle数据库、文件系统等应用系统的准实时同步和备份容灾。 产品组件 SQLServer 数据库镜像代理(For SQLServer 2000、2005)。 镜像存储服务器(For Windows 2000、2003)

[图解MySQL]MySQL组提交(group commit)

三世轮回 提交于 2020-03-02 07:15:34
前提: 以下讨论的前提 是设置MySQL的crash safe相关参数为双1: sync_binlog=1 innodb_flush_log_at_trx_commit=1 背景说明: WAL机制 (Write Ahead Log)定义: WAL指的是对数据文件进行修改前,必须将修改先记录日志。MySQL为了保证ACID中的一致性和持久性,使用了WAL。 Redo log的作用: Redo log就是一种WAL的应用。当数据库忽然掉电,再重新启动时,MySQL可以通过Redo log还原数据。也就是说,每次事务提交时,不用同步刷新磁盘数据文件,只需要同步刷新Redo log就足够了。相比写数据文件时的随机IO,写Redo log时的顺序IO能够提高事务提交速度。 组提交的作用: 在没有开启binlog时 Redo log的刷盘操作将会是最终影响MySQL TPS的瓶颈所在。为了缓解这一问题,MySQL使用了组提交,将多个刷盘操作合并成一个,如果说10个事务依次排队刷盘的时间成本是10,那么将这10个事务一次性一起刷盘的时间成本则近似于1。 当开启binlog时 为了保证Redo log和binlog的数据一致性,MySQL使用了二阶段提交,由binlog作为事务的协调者。而 引入二阶段提交 使得binlog又成为了性能瓶颈,先前的Redo log 组提交 也成了摆设

PostgresSQL-日常清理

断了今生、忘了曾经 提交于 2020-03-02 03:52:06
22.1. 日常清理 由于以下几个原因,必须周期性运行 PostgreSQL 的 VACUUM 命令∶ 恢复那些由已更新的或已删除的行占据的磁盘空间。 更新 PostgreSQL 查询规划器使用的数据统计信息。 避免因为 事务 ID 重叠 造成的老旧数据的丢失。 对上面每个条件进行 VACUUM 操作的频率和范围因不同的节点而不同。 因此,数据库管理员必须理解这些问题并且开发出合适的维护策略。 本节的重点就放在解释这些高级别的问题; 至于命令语法的细节,请参阅 VACUUM 命令手册页。 从 PostgreSQL 7.2 开始, VACUUM 的标准形式可以和普通的数据库操作 (selects, inserts, updates, deletes, 但不包括表定义的修改)。 因此日常的清理也不再象以前的版本那样具有干扰性, 也不再那么特别要求安排在每天的低使用的时间里进行。 从 PostgreSQL 8.0 开始,有一些配置参数可以设置, 用来进一步减小后端清理的的性能影响。参阅 Section 17.4.4 。 在 PostgreSQL 8.1 中增加了一个自动的机制,用于执行必要的 VACUUM 操作。参阅 Section 22.1.4 。 22.1.1. 恢复磁盘空间 在正常的 PostgreSQL 操作里, 对一行的 UPDATE 或 DELETE

Spring的事务管理入门:编程式事务管理(TransactionTemplate)!!!

自作多情 提交于 2020-03-02 00:57:54
转载 自 http://blog.csdn.net/zq9017197/article/details/6321391 Spring可以支持编程式事务和声明式事务。 Spring使用事务管理器,每个不同平台的事务管理器都实现了接口:PlatformTransactionManager 此接口是事务管理的核心,提供了三个需要实现的函数: [java] view plain copy print ? commit(TransactionStatus status) ; getTransaction(TransactionDefinition definition) ; rollback(TransactionStatus status) ; 如果我们使用的是JDBC来处理事务,那么这个事务管理器就是DataSourceTransactionManager。 通过Spring文档查找到这个类,发现其需要DataSource这个类。也就是只要实现了javax.sql.DataSource这个接口的类,都可以作为参数传入到DataSourceTransactionManager。 然后,找到 包org.springframework.transaction.support中的 TransactionTemplate。 发现TransactionTemplate中有一个重要的方法: [java

python爬虫--连接数据库1

﹥>﹥吖頭↗ 提交于 2020-03-01 23:48:35
1、连接mysql 下载mysql,到官网下载。一路安装,设置好帐号密码。 下载mysql的编译环境,Navicat; 在Navicat创建数据库和表; create table urls ( id int not null auto_increment, url varchar(1000) not null, content varchar(4000) not null, created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, primary key(id) ) python链接mysql, 安装库,pip install mysqlclient。 用pyrhon在mysql中创建的数据库leon中的urls表格中插入一条数据 import MySQLdb conn= MySQLdb.connect(host='localhost' , user='root', passwd='5407', db ='leon') cur = conn.cursor() cur.execute("INSERT INTO urls (url, content) VALUES ('www.baidu.com', 'This is content.')") cur.close() conn.commit() conn.close() 结果显示: host=