数据库事务

Spring(四)

两盒软妹~` 提交于 2020-01-01 00:49:41
Spring 中的 JdbcTemplate JdbcTemplate 概述 它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。spring 框架为我们提供了很多 的操作模板类。 操作关系型数据的: JdbcTemplate HibernateTemplate 操作 nosql 数据库的: RedisTemplate 操作消息队列的: JmsTemplate 我们今天的主角在 spring-jdbc-5.0.2.RELEASE.jar 中,我们在导包的时候,除了要导入这个 jar 包 外, 还需要导入一个 spring-tx-5.0.2.RELEASE.jar(它是和事务相关的)。 JdbcTemplate 对象的创建 我们可以参考它的源码,来一探究竟: public JdbcTemplate() { } public JdbcTemplate(DataSource dataSource) { setDataSource(dataSource); afterPropertiesSet(); } public JdbcTemplate(DataSource dataSource, boolean lazyInit) { setDataSource(dataSource); setLazyInit(lazyInit);

MySQL快速入门(四)

折月煮酒 提交于 2020-01-01 00:16:35
1 事务处理 接下来我会带大家一起来熟悉mysql中的事务处理机制 1.1 事务概述 l 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表 才支持事务 。 l 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 l 事务用来管理 DDL、DML、DCL操作,比如 insert,update,delete 语句 一般来说,事务必须满足四个条件 1. Atomicity (原子性) 原子性: 构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。 2. Consistency (稳定性、一致性) 稳定性 (一致性) : 数据库在事务执行前后状态都必须是稳定的。 3. Isolation (隔离性) 隔离性: 事务之间不会相互影响。 4. Durability (可靠性、持久性) 可靠性 (持久性) : 事务执行成功后必须全部写入磁盘 。 1.2 MySQL事务支持 常见的操作有三步 1. BEGIN或START TRANSACTION;显式地开启一个事务; 2. COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的; 3. ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务

Redis常见面试题

房东的猫 提交于 2019-12-31 23:44:52
1、什么是Redis?   Redis 是一个基于内存的高性能key-value数据库,不过在系统中一般充当高速缓存的角色。 2、为什么Redis需要把所有数据放到内存中?    访问内存的速度远高于访问硬盘的速度,如果不将数据放在内存中,磁盘I/O速度将严重影响Redis的性能。在内存越来越便宜的今天,Redis将会越来越受欢迎。 3、对Redis的访问为什么是单进程单线程的   Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。Redis的开发者认为Redis的性能瓶颈不在CPU,而是网络等因素。所以采取单线程的方式是最快的。单线程能够有效避免CPU切换的开销,另外I/O多路复用技术也有效的提升了访问速度。 4、Reids的特点(Redis的好处) 访问速度快。原因归结为三个方面:一是数据存储在内存中;二是对数据的访问是单线程操作,避免了不必要的IO开销;三是底层的数据结构合理,类似于hashMap,存取的时间复杂度为O(1)。 拥有丰富数据类型。支持string,list,hash ,set,sorted set五种类型 支持事务。拥有与传统数据库不同的独特的事务特性。在Redis中,一个事务中所有命令操作具有原子性 可以持久化缓存数据。拥有AOF和RDB两种持久化方式,保证系统重启数据不丢失 拥有成熟的可扩展,高可用的分布式解决方案。像Redis

python操作mysql数据库

会有一股神秘感。 提交于 2019-12-31 11:44:48
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问 Python数据库接口及API 查看详细的支持数据库列表。 不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程: 引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。 什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 如何安装MySQLdb?

【Python】python3.6 操作mysql

荒凉一梦 提交于 2019-12-31 11:43:42
1、首先安装mysqldb 下载 mysqldb 使用命令 pip3 install mysqlclient-1.3.12-cp36-cp36m-win32.whl 下载地址: mysqlclient-1.3.12-cp36-cp36m-win32.whl PS.Centos下安装mysql pip3 install mysqlclient 2、链接数据库,并查询数据 #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host=MYSQL_ADDR , user=MYSQL_USER , passwd=MYSQL_PWD , db=MYSQL_DB , charset="utf8") # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close() #数据获取后使用方法contents = cursor

使用Python对MySQL数据库操作

Deadly 提交于 2019-12-31 11:43:12
本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。 什么是PyMySQL? PyMySQL是Python3.x版本中用于连接MySQL服务器的一个库,Python2.x中则使用mysqldb。 PyMySQL安装 在使用PyMySQL之前,我们需要确保PyMySQL已经安装。 PyMySQL下载地址: https://github.com/PyMySQL/PyMySQL 。 如果还未安装,我们可以使用以下命令安装最新版的PyMySQL: $ pip install PyMySQL 如果你的系统不支持pip命令,可以使用以下方式安装: 1、使用git命令下载安装包安装(你也可以手动下载): $ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL $ python3 setup.py install 2、如果需要制定版本号,可以使用curl命令来安装: $ # X.X 为PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install 注意: 请确保您有root权限来安装上述模块。 3、数据库连接 连接数据库前

MySQL学习笔记2——事务的隔离级别

…衆ロ難τιáo~ 提交于 2019-12-31 02:12:43
文章目录 一、事务的隔离级别 二、事务隔离的实现 三、幻读 1.幻读是什么 2.幻读有什么问题 3.如何解决幻读 思考题 一、事务的隔离级别 提到事务,你肯定会想到 ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),隔离级别就是“隔离性”的具体体现。 当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题。 脏读 :当数据库中一个事务A正在修改一个数据但是还未提交或者回滚,另一个事务B 来读取了修改后的内容并且使用了, 之后事务A提交了,此时就引起了脏读。 此情况仅会发生在: 读未提交的的隔离级别. 不可重复读 :在一个事务A中多次操作数据,在事务操作过程中(未最终提交),事务B也才做了处理,并且该值发生了改变,这时候就会导致A在事务操作的时候,发现数据与第一次不一样了。 就是不可重复读。 此情况仅会发生在:读未提交、读提交的隔离级别. 幻读 :事务a 开启, 查询符合条件的数据 ,发现有10条, 准备将这10条记录修改, 此时事务b开启, 插入了一条符合事务a查询条件的记录. 提交事务, 回到事务a, a也提交事务, 当再次查询到时候, 发现修改了11条。感觉发生了幻觉一样. 此为幻读.

11_Redis_事务

 ̄綄美尐妖づ 提交于 2019-12-31 01:03:31
一:Redis 事务:目的为了进行Redis语句的 批量化操作,不保证数据安全    Redis作为NoSQL数据库也同样提供了事务机制;在Redis中 , MULTI/EXEC/DISCARD/这三个命令是我们实现事务的基石 二:Redis 事务特性:    三:Redis 事务命令:一个事务从开始到执行会经历以下三个阶段: 开始事务、命令入队、执行事务    multi:开启事务用于标记事务的开始, 其后执行的命令都将被存入命令队列 ,直到执行EXEC时,这些命令才会被原子的执行,类似与关系型数据库中的:begin transaction   exec:提交事务,类似与关系型数据库中的:commit 执行批量化    discard:事务回滚,类似与关系型数据库中的:rollback 不执行批量化操作 实例 以下是一个事务的例子, 它先以 MULTI 开始一个事务 , 然后将多个 命令入队 到事务中, 最后由 EXEC 命令 执行事务 , 一并执行事务中的所有命令: redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days" QUEUED redis 127.0.0.1:6379> GET book-name QUEUED redis 127.0.0

一文快速搞懂MySQL InnoDB事务ACID实现原理

半腔热情 提交于 2019-12-30 23:55:16
【51CTO.com原创稿件】说到数据库事务,想到的就是要么都做修改,要么都不做,或者是 ACID 的概念。其实事务的本质就是锁、并发和重做日志的结合体。 这一篇主要讲一下 InnoDB 中的事务到底是如何实现 ACID 的: 原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) 隔离性 隔离性的实现原理就是锁,因而隔离性也可以称为并发控制、锁等。事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离。 再者,比如操作缓冲池中的 LRU 列表,删除,添加、移动 LRU 列表中的元素,为了保证一致性那么就要锁的介入。 InnoDB 使用锁为了支持对共享资源进行并发访问,提供数据的完整性和一致性。 那么到底 InnoDB 支持什么样的锁呢?我们先来看下 InnoDB 的锁的介绍: InnoDB 中的锁 你可能听过各种各样的 InnoDB 的数据库锁,Gap 锁,共享锁,排它锁,读锁,写锁等等。但是 InnoDB 的标准实现的锁只有 2 类,一种是行级锁,一种是意向锁。 InnoDB 实现了如下两种标准的行级锁: 共享锁(读锁 S Lock),允许事务读一行数据。 排它锁(写锁 X Lock),允许事务删除一行数据或者更新一行数据。 行级锁中,除了 S 和 S 兼容,其他都不兼容。 InnoDB

MongoDB应用及分片

旧城冷巷雨未停 提交于 2019-12-30 22:48:22
文章目录 1.应用篇 1.1 体系结构 1.1.1 MongoDB的逻辑结构 1.1.2 MongoDB的数据库 1.1.3 MongoDB的数据结构 1.2 MongoDB的启动和停止 1.2.1 启动 1.2.2 停止 1.3 事务 1.3.1 事务区别 1.3.2 事务应用 1.3.3 两阶段提交 1.3.4 GridFS 1.3.4.1 MongoDB写入策略(writeConcern) 1.3.4.2 GridFS简介 1.3.5 MapReduce 2.管理篇 2.1 数据备份和恢复 2.1.1 数据导出 2.1.1.1 mongoexport 2.1.1.2 mongodump 2.2.2 数据导入 2.1.2.1 mongoimport 2.1.2.2 mongostore 2.2 访问控制 2.3 进程控制 3.性能篇 3.1 索引 3.2 执行计划 3.3 性能优化 4.架构篇 4.1 副本集 4.1.1 副本集简介 4.1.2 副本集的安装 4.1.3 副本集的维护 4.2 分片 4.2.1 分片简介 4.2.2 分片的相关操作 4.2.3 分片中对于Shard key(片键)的选择 1.应用篇 1.1 体系结构 1.1.1 MongoDB的逻辑结构 MongoDB的逻辑结构,主要由: 文档 (document)、 集合 (collection)、 数据库