MySQL - TCL

事务概述

什么是数据库事务

是一条或一组sql语句组成的执行单元,这个执行单元里的sql语句要么全部执行成功,要么全部执行失败。

事务ACID特性

  • 原子性(Atomicity)
    事务的所有操作是不可分割的,要么全部完成,要么全部不完成,不能停在中间的某个操作上。
  • 一致性(Consistency)
    一个事务执行前后数据的完整性要保持一致。以转账为例:
    转账前:张三账户500元,李四账户500元,二者总金额1000元;
    转账操作:张三转给李四100元;
    转账后:张三400元,李四600元,二者总金额还是1000元。
转100元给李四
张三 500元
李四 500元
  • 隔离性(Isolation)
    一个事务执行操作的数据不能其它事务的影响,针对的是指并发事务之间。
  • 持久性(Durability)
    事务一旦完成,对数据的更改是永久性的,不会受数据库故障影响。

事务并发可能引起的问题

  • 脏读
    事务T1读取了事务T2更新还未提交的数据,若T2回滚事务,则T1读取的数据是临时且无效的。
  • 不可重复读
    事务T1读取了一个字段,之后事务T2更新了该字段,当事务T1再次读取该字段时,看到的数据前后不一样。
  • 幻读
    事务T1读取一个字段后,事务T2在该字段的所在表插入一些行后,当事务T1再次读取时多出了一些行。

事务的隔离级别

一个事务与其它事务隔离的程度称为隔离程度。不同的隔离级别可解决不同的事务并发问题。

隔离级别脏读不可重复读幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
注:√表示在此事务隔离级别下事务并发仍会出现的问题。

MySQL默认的隔离级别是REPEATABLE READ
MySQL对于以上4种隔离级别都支持

MySQL TCL语法

使用事务的SQL模板:

SET autocommit = 0;	/*关闭自动提交功能*/
[START TRANSACTION;]
[DML 语句]
COMMIT | ROLLBACK [TO <保存点>];

设置事务隔离级别

SET session|global transaction isolation level <隔离级别名>;

查看当前隔离级别

SELECT @@tx_isolation;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#!/bin/sh #安装插件 cd /root/mysql if test -e ./sharutils-4.6.1-2.x86_64.rpm then echo 'sharutils开始安装...' rpm -ivh sharutils-4.6.1-2.x86_64.rpm echo 'sharutils安装完成...' else echo 'sharutils文件不存在!' exit fi #安装msql8 if test -e ./mysql8.0.19_64-636.sh then if test -e ./mysql8.0.19_64-636.sh.sha256 then echo '准备安装mysql8' sh ./mysql8.0.19_64-636.sh else echo 'mysql8.sha256文件不存在!' exit fi else echo 'mysql8.sh文件不存在!' exit fi if [ $? -eq 0 ]; then echo 'mysql安装完成...' else echo 'mysql安装失败!' exit fi #执行重启不需验证 /topwalk/baseapp/bin/mysqld restart --skip_grant_tables #安装tcl sh ./tcl-install.sh if [ $? -eq 0 ]; then echo 'tcl安装完成...' else echo 'tcl安装失败!' exit fi #安装expect sh ./expect-install.sh if [ $? -eq 0 ]; then echo 'expect安装完成...' else echo 'expect安装失败!' exit fi #创建mysql用户,授权 sh ./initdb.sh if [ $? -eq 0 ]; then echo 'mysql用户创建,授权完成...' else echo 'mysql用户创建,授权失败!' exit fi ln -s /topwalk/baseapp/bin/mysqld /etc/init.d/ sed -i '/MYSQL_HOME/d' /etc/profile echo "export MYSQL_HOME=/topwalk/baseapp/mysql" >>/etc/profile echo 'export PATH=$PATH:$MYSQL_HOME/bin' >>/etc/profile systemctl enable mysqld source /etc/profile service mysqld restart #初始化库 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPUIS.sql #初始化表 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPBASIC < topsql/TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPDMS < topsql/TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPUIS < topsql/TOPUIS.sql #安装nginx cp -dpRf ./nginx /usr/local/ useradd nginx -m -d /usr/local/nginx/ -s /bin/bash chown -R nginx.nginx /usr/local/ngi
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值