mysql 事务 锁 并发

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

并发控制:
   mbox:MDA

   C/S: 100
       10分钟:
           多版本并发控制: MVCC    用户操作数据时,操作是的数据的快照,切数据快照存在时间值。操作完成后,对快照进行合并。

锁:
   读锁:共享锁
   写锁:独占锁
       LOCK TABLES tb_name {READ|WRITE};
       UNLOCK TABLES

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

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

   MyISAM:
   InnoDB:

   事务日志        事务引擎: 先将事务步骤在内存中执行一遍,写入事务日志。当事务执行完成了,即事务提交,即在内存中执行完成还没有写入内存。然后写入磁盘中。
       重做日志
           redo log
        撤消日志
           undo log
服务器变量:

动态:
   全局变量
       修改后不影响当前会话,只对新建的会话有效;
   会话变量
       仅对当前会话有效,而且是立即生效;

   永久有效:修改配置文件


修改:SET {SESSION|GLOBAL} VAR_NAME=‘’;


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

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

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

事务:并发执行
   1、提高吞吐量和资源利用率
   2、减少等待时间

事务调度:
   可恢复调度;
   无级联高度:


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

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

饿死:
死锁:


SQL,ODBC

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

如果没有明确启动事务:
   autocommit:能实现自动提交,每一个操作都直接提交;

   建议:明确使用事务,并且关闭自动提交;


保存点:SAVEPOINT sid
回滚至保存点:ROLLBACK TO sid

你可能感兴趣的:(并发,mysql,事务,锁)