马哥学习笔记十六——MySQL进阶之事务和隔离级别

连接管理器:  接受请求  创建线程  认证用户  建立安全连接

并发控制:

  mbox:MDA

  C/S: 100   10分钟:

    多版本并发控制: MVCC

锁:

  读锁:共享锁

  写锁:独占锁

  LOCK TABLES tb_name {READ|WRITE};

  UNLOCK TABLES

锁粒度:从大到小,MySQL服务器仅支持表级锁,行锁需要由存储引擎完成;
  表锁:
  页锁:(block)
  行锁:

事务:  RDBMS: ACID (原子性,一致性,隔离性,持久性)

  MyISAM:  不支持事务

  InnoDB:

隔离性:
  隔离级别:
    READ UNCOMMITTED:读未提交
    READ
COMMITTED:读提交
    REPATABLE READ:可重读
    SERIALIZABLE:可串行

事务:CPU, I/O
  RDBMS,

    ACID:
      Automicity:原子性,事务所引起的数据库操作,要么都完成,要么都不执行;
      Consistency:一致性(隔离状态下)
      Isolation:
隔离性
        事务调度:事务之间影响最小
        MVCC:多版本并发控制
      Durability:一旦事务成功完成,系统必须保证任何故障都不会引起事务表示出不一致性;
        1、事务提交之前就已经写出数据至持久性存储;
        2、结合事务日志完成;
          事务日志:顺序IO
          数据文件:随机IO

  事务的状态:
    活动的:active
    部分提交的:最后一条语句执行后
    失败的:提交了但未能完成
    中止的:未提交
    提交的:

多事务同时执行:彼此之间互不影响的方式进行并行
  事务之间交互:
    通过数据集

事务:并发执行

  1、提高吞吐量和资源利用率

  2、减少等待时间

事务调度:

  可恢复调度:任何2个事务的交叉执行都不会导致另一个事务的状态改变

  无级联调度:

并发控制依赖的技术手段:
  锁
  时间戳
  多版本和快照隔离

START TANSACTION:启动
  SQL
  SQL
COMMIT: 提交
ROLLBACK: 回滚

如果没有明确启动事务:

  autocommit:能实现自动提交,每一个操作都直接提交;

  建议:明确使用事务,并且关闭自动提交;
保存点:SAVEPOINT sid
回滚至保存点:ROLLBACK TO
sid

时间: 2024-12-29 04:06:01

马哥学习笔记十六——MySQL进阶之事务和隔离级别的相关文章

马哥学习笔记十八——MySQL进阶之日志管理

错误日志:log_error,log_warnings 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度运行一个事件时产生的信息 在从服务器上启动从服务器进程时产生的信息 一般查询日志:general_log,general_log_file,log,log_output={table|file|none} 慢查询日志long_query_time,log_slow_queries={YES|NO},slow_query_log,slow_query_log_file 二进制日

马哥学习笔记十九——MySQL进阶之备份和还原

备份:副本 RAID1,RAID10:保证硬件损坏而不会业务中止: 备份类型: 热备份.温备份和冷备份 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份和逻辑备份 物理备份:复制数据文件: 逻辑备份:将数据导出至文本文件中: 完全备份.增量备份和差异备份: 完全备份:备份全部数据: 增量备份:仅备份上次完全备份或增量备份以后变化的数据: 差异备份:仅备份上次完全备份以来变化的数据: 备份什么: 数据.配置文件.二进制日志.事务日志 物理备份:速

马哥学习笔记十五——MySQL进阶之SQL语句

数据库: create database|schema [if not exists] db_name [character set =] [collate =]; alter database drop {database | schema} [if exists] db_name; 表: 1.直接定义一张空表: 2.从其它表中查询出数据,并以之创建新表: 3.以其它表为模板创建一个空表: CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_d

马哥学习笔记二十六——MySQL主从复制

配置MySQL复制基本步骤: 一.master 1.启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2.选择一个惟一server-id server-id = {0-2^32} 3.创建具有复制权限的用户 REPLICATION SLAVE REPLICATION CLIENT 二.slave 1.启用中继日志 relay-log = relay-log relay-log-index = 2.选择一个惟一的server

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

马哥学习笔记七——LAMP编译安装之MYSQL

1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录. 2.新建用户以安全方式运行进程: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data 3.安装并初始化my

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

马哥学习笔记三十——tomcat

Java体系结构包含四个独立却又彼此相关的技术: Java程序设计语言 Java API Java Class文件格式 JVM: Java Virtual Machine JVM的实现方式: 1.一次性解释器,解释字节码并执行: 2.即时编译器(just-in-time complier) 依赖于更多内存缓存解释后的结果 3.自适应编译器 缓存20%左右代码,提高80%左右的速度: 运行时数据区: 线程私有内存区: 程序计数器 java虚拟机栈 线程共享内存区: 方法区 堆:java自动内存回收

马哥学习笔记二十五——ISCSI协议,架构及其安装配置

ISCSI监听在tcp/3260端口 iSCSI Target:iscsi-target-utils 客户端认正方式: 1.基于IP 2.基于用户,CHAP tgtadm:命令行工具,模式化命令 --mode 常用模式:target,logicalunit,account target --op new.delete.show.update.bind.unbind logicalunit --op new.delete account --op new.delete.bind.unbind --