mysql事务

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,不过二者是等价的。回滚会结束用户的事务

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、数据库连接 连接数据库前

hibernate中dialect的讲解

*爱你&永不变心* 提交于 2019-12-31 07:45:40
RDBMS方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.dialect.PostgreSQLDialect MySQL org.hibernate.dialect.MySQLDialect MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect Oracle (any version) org.hibernate.dialect.OracleDialect Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate

MySQL日志

倾然丶 夕夏残阳落幕 提交于 2019-12-31 03:12:04
日志文件对于任何应用程序都是非常重要的,许多操作都需要记录到日志,然后可以利用日志文件查错纠错等。 mysql中当然也有日志,mysql的日志大概分为五种,即错误日志、查询日志、慢查询日志、二进制日志和事务日志。 查看日志相关的全局变量。 -- 查询日志相关全局变量 show global variables like '%log%'; 一、错误日志 在mysql数据库中,错误日志功能是默认开启的,并且,错误日志无法被禁止。 mysql的日志主要记录服务器启动和关闭过程的信息、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息等。 -- 查看错误日志文件的地址 show global variables like 'log_error'; -- 查看警告信息是否也写入到错误日志中,默认值为2。如果要启用,将其值设置为1;如果要禁用,将其值设置为0。 show global variables like 'log_warnings'; mysqladmin命令重新创建一个新的错误日志文件。 -- mysqladmin命令重新创建一个新的错误日志文件,原错误日志文件加上后缀old mysqladmin -u root -p flush-logs sql语句重新创建一个新的错误日志文件。 -- 重新创建一个新的错误日志文件,原错误日志文件加上后缀old flush logs;

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条。感觉发生了幻觉一样. 此为幻读.

一文快速搞懂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

MySQL日志详解(未完待续)

我的梦境 提交于 2019-12-30 22:08:46
前言 MySQL日志记录了MySQL数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户的操作、错误的信息等。 MySQL的日志分为以下四大类: 错误日志:记录mysql服务的启动,运行或停止mysql服务时出现的问题; 查询日志:记录建立的客户端的连接和执行的语句; 二进制日志:记录所有更改数据的语句,可以用于数据的复制; 慢查询日志:记录所有执行的时间超过long_query_time的所有查询或不使用索引的查询。 默认情况下,所有日志创建于MySQL数据目录中,通过刷新日志,可以强制MySQL关闭和重新打开日志文件,Flush logs刷新日志或者执行mysqladmin flush-logs 如果正使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志我们称为接替日志。启动日志功能会降低MySQL数据库的性能。 1)查看系统设置 <!--查看全局的系统状态--> mysql> show global variables\G mysql> show global variables like '%log%'; <!--查看当前会话的系统状态--> mysql> show session variables\G mysql> show session variables like