mysql基础(六)mysql事务

mysql事务:是一个独立的工作单元

事务必须通过ACID测试:
    原子性(Atomicity):一个事务的所有操作要么全部成功执行,要么全部失败后回滚
    一致性(Consistency):数据库总是从一个一致性状态转换成另一个状态
    隔离性(Isolation):一个事务在做出的操作在提交之前,其他事务是不可见的,隔离有多种级别
    持久性(Durability):一旦事务提交,其所做出的操作将永久保存在数据库中

事务的执行流程:
    启动事务-->执行SQL语句-->提交事务-->保存数据
    启动事务-->执行SQL语句-->回滚-->数据不发生任何改变
    
    
    
事务的隔离级别:
    Read Uncommitted(读取未提交内容)
	出现问题:1、2、3		#不建议使用此隔离级别
    Read Committed(读提交)
	出现问题:2、3			#大多数数据库使用的隔离级别,性能较好
    Repeatable Read(不可重复读)
        出现问题:3			#mysql默认使用的隔离级别
    Serializable(串行化)        #数据安全性最好,并发访问能力最弱,可能会出现死锁,
        出现问题:4		除非在数据要求比较严格的情况下,否则不建议使用
		 
出现问题:
    1、脏读:可以读取其他事务没有提交的数据
    2、不可重复读:在当前事务中没有做出任何修改,但使用select查看数据时可能查看到不同的数
    3、幻读:在当前事务提交之前只能看见启动事务时的数据和在当前事务中做出修改的数据,
             而其他事务所做出的修改将不能看见
    4、加锁读:如果在此事务中对表进行修改,那么数据库将给做出修改的表加上表锁,
               在此事务提交之前其他事务对此表做出的操作都会阻塞
    
mysql> SHOW VARIABLES LIKE ‘%iso%‘;		#查看当前的隔离级别
    SET tx_isolation=‘参数‘			#修改隔离级别
	   对应参数(不区分大小写):
		Read-Uncommitted		#1
		Read-Committed			#2
		Repeatable-Read			#3(默认)
		Serializable			#4  
    
    mysql> SET GLOBAL autocommit=0;		#关闭自动提交事务
    mysql> START TRANSACTION		#启动事务
    mysql> COMMIT			#提交事务
    mysql> ROLLBACK			#回滚    
    
    
mysql事务日志:
    同事务日志和崩溃后安全恢复可以很好的保存数据安全
    
    事务日志包括:重做日志redo和回滚日志undo,事务日志通常比较小
   
    Redo记录的是已经全部完成的事务,就是执行了COMMIT的事务
	记录日志组是ib_logfile0、ib_logfile1	记录日志组可以更加需要调整文件数量

    Undo记录的是已部分完成并且写入硬盘的未完成的事务
    
    在mysq重启后,innodb通过事务日志将所有已完成并写入磁盘的和未完成的事务进行同步
    并将数据写入到磁盘中完成数据库崩溃后安全恢复
    
    mysql> SHOW VARIABLES LIKE ‘innodb_log%‘;		#查看事务日志的相关配置
        innodb_log_file_size			#设置事务日志大小
	innodb_log_files_in_group 		#设置事务日志组文件数量
	innodb_log_group_home_dir  		#设置事务日志存放位置	
时间: 2024-10-12 02:49:59

mysql基础(六)mysql事务的相关文章

MySQL基础及MySQL C API编程

MySQL基础及MySQL C API编程 一.MySQL For Windows安装: 1. 下载: 上官网下载即可: http://www.mysql.com/downloads/ 2. 安装: 没有什么好说的,傻瓜式,也没有什么要注意的. 3. 配置: 添加系统变量MYSQL_HOME和修改PATH,目的就是让系统默认能够找到MySQL命令.(安装目录的/bin下面) PS: 补充一下,有的朋友可能下载的是免安装版本,拷贝到一个地方就可以了,这个时候,配置还是需要的,但是配置完成之后,需要

(3.15)mysql基础深入——mysql默认数据库/系统数据库

(3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 1.系统数据库的组成 一共4个 [1]information_schema [2]mysql [3]performance_schema [4]sys [1]information_schema [2]mysql mysql数据库是Mysql核心的数据库,类似于sql server中的master库,oracle中的system部分功能. 主要负责存储数据库的用户/权限等Mysql自己需要

mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元将会回滚.所有受到影 响的数据将返回到事物开始以前的状态:如果单元中的所 有SQL语句均执行成功,则事物被顺利执行. 存储引擎 概念 在mysql中的数据用各种不同的技术存储 在文件(或内存)中. 查看 通过 show engines: 来查看mysql支持的存储引擎. 常见引擎 在mysql中用的

MySql基础入门-mysql体系结构

mysql体系结构:     由:连接池组件.管理服务和工具组件.sql接口组件.查询分析器组件.优化器组件.                缓冲组件.插件式存储引擎.物理文件组成.     mysql是独有的插件式体系结构,各个存储引擎有自己的特点.              mysql各个存储引擎概述:     innodb存储引擎:[/color][/b] 面向oltp(online transaction processing).行锁.支持外键.非锁定读.默认采用repeaable级别(

MySql基础学习-mysql安装

Linux环境下的安装 1检查是否已经安装 sudo service mysql start #若未安装,则提示: mysql: unrecognized service 2安装MySql #安装 MySQL 服务端.核心程序 sudo apt-get install mysql-server #安装 MySQL 客户端 sudo apt-get install mysql-client 安装过程中,提示确实yes即可,并且会提示设置root密码,设置即可. 3检查安装 sudo netstat

MySQL基础六

1 变量 1.1 变量的分类 系统变量: 全局变量: 会话变量: 自定义变量: 用户变量: 局部变量: 1.2 系统变量 1.2.1 系统变量的基本介绍 变量是由系统提供的,不是用户定义,属于服务器层面. 1.2.2 系统变量的使用 查看所有的系统变量 -- global表示全局 -- session表示回话 show global|session variables; 查看满足条件的部分变量 -- global表示全局 -- session表示回话 show global|session va

【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引

本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类型的例,并将其索引 6. 千万不要 ORDER BY RAND() 7. 避免 SELECT * 8. 永远为每张表设置一个ID 9. 使用 ENUM 而不是 VARCHAR 10. 从 PROCEDURE ANALYSE() 取得建议 11. 尽可能的使用 NOT NULL 12. Prepare

Mysql基础教程——mysql之一

教程列表:http://www.dxzy163.com/view/index7627.html 41 存储过程 40 全文索引与停止词 39 索引的管 38 索引概念 37 数据库备份与恢复 36 事务语法 35 存储引擎与事务概 34 beforeafter区别 33 触发器实(订单与库存管) 32 触发器语 31 触发器基本概 30 阶段总结() 29 字符集与校对 28 视图 27 表管理之列的增删 26 左连接笔试题 25 左右内连接的区别 24 连接查询概念与左连接语法 23 unio

mysql基础之-mysql存储引擎概述(八)

0x01 mysql 存储引擎:存储引擎也通常被称作“表类型” mysql> show engines;   --- 查看当前所有所支持的存储引擎 mysql> show table status 存储引擎格式: SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] mysql> show table status in hellodb where Name='class'\G Name 表名 Engi

MySql基础入门-mysql的结构层次

了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的. 1.Connectors指的是不同语言中与SQL的交互 2.Management Serveices & Utilities: 系统管理和控制工具 3.Connection Pool: 连接池 管理缓冲用户连接,线程处理等需要缓存的需求. 4.SQL Interface: SQL接口 接受用户的SQL命令,并且返回用户需要查询的结果.比如select from就是调用SQL Interfac