TCL-MySQL

事务控制语言 transaction control language

 

事务:一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行要么全部不执行

 

存储引擎:

显示存储引擎SHOW ENGINES;

InnoDB   默认,支持事务

MyISM   mysql5.5版本之前多用,不支持事务

MEMORY    多用,不支持事务

 

ACID

原子性(Atomicity):事务操作是一个不可分割的单位,事务操作要么都发生要么都不发生。

一致性(Consistency):事务必须使数据库从一个一致性状态到另一个一致性状态。

隔离性(Isolation):事务执行不受其他事务干扰(隔离级别)

持久性(Durability):一个事务一旦被提交,数据库的改变是永久的

 

事务创建

1、隐式事务:没有开启和结束标志

如insert、update、delete

2、显式事务

前提:设置自动提交功能禁用

 

步骤1:开启事务

set  autocommit =0;当前回话有效

start transaction;  命令行可不写,禁用自动提交后自动执行

show  variables  like  ‘autocommit’; 查看事务状态

 

步骤2:编写sql语句

语句1;

语句2;

。。。(select,insert,update,delete)

 

步骤3

commit;提交事务

rollback:回滚事务(出现异常使用,truncate删除后不能回滚)

 

 

隔离级别

没有隔离机制,会导致各种并发问题;

赃读

例如:两个事务T1,T2,T1读取了T2已经更新但是还没有提交的字段,T2回滚,T1再读取的事务结果不一样,之前读取的内容就是临时且无效的(可以扔掉的脏数据)

 

不可重复读

例如:两个事务T1,T2,T1从表中去读字段,T2更新后,T1再读,值不同

 

幻读

例如:两个事务T1,T2,T1读取后T2插入数据,T1再读出现了多几行

 

 

数据库四种隔离级别

read uncommitted  读未提交

read commit  读已提交

repeatable read 可重复读

serializable  串行化

 

Oracle支持两种事务隔离级别:read commit(默认)、serializable

Mysql支持四种事务隔离级别:repeatable read(默认)

 

命令行操作:

select @@tx_isolation;  查询隔离级别

set  session  transaction  isolation  level  隔离级别; 设置隔离级别

set  name  字符集; 改变字符集

savepoint 别名:保存点,回滚到某点

 

read uncommitted:都不能避免

read commit:避免赃读

repeatable read:避免赃读,不可重复读

serializable:都避免

 

 

  • 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、付费专栏及课程。

余额充值