【书 : InnoDB 存储引擎 】目录

1章 Mysql 体系结构和存储引擎

2章 InnoDB 存储引擎

3章 文件

3.1 参数文件

3.2 日志文件

3.2.1 错误文件

3.2.2 慢查询文件

3.2.3 查询日志

3.2.4 二进制日志

3.3 套接字文件

3.4 pid 文件

3.5 表结构定义文件

3.6 InnoDB 存储引擎文件

3.6.1 表空间文件

3.6.2 重做日志文件

3.7 小结

4章 表

5章 索引与算法

6章 锁

并发时, 产生相关问题

6.1 什么是锁?

6.2 lock 和 latch

展示 lock 信息:

1 show engine innodb status

2 information_schema 表中的

innodb_trx, //  事务信息

innodb_locks, // 锁信息

innodb_lock_waits // 锁等待

// 如何 伪造数据

6.3 InnoDB 引擎中的锁

6.3.1 锁的类型

共享锁(S Lock): 允许事务读一行数据

排他锁(X Lock): 允许事务删除或更新一行数据

意向锁的两种类型 --

意向共享锁(IS Lock): 事务想要获得一张表中某几行的共享锁

意向排他锁(IX Lock): 事务想要获得一张表中某几行的排他锁


6.3.2 一致性非锁定读

//演示的例子有问题

读取数据的快照


6.3.3 一致性锁定读

select ... for update

select ...  lock in share mode


6.3.4 自增长与锁

6.3.5 外键和锁

两个 Session 中, 执行父表的 x 锁,未 commit 或 rollback 时,另一个 session 的修改操作会被阻塞;



6.4 锁的算法

6.4.1 行锁的 3 种算法

Record Lock : 单个行记录上的锁

Gap Lock : 间隙锁, 锁定一个范围, 但不含记录本身

Next-Key Lock:  Gap Lock + Record Lock , 锁定一个范围, 并且锁定记录本身

6.4.2 解决 Phantom Problem

两个事务中,由于一个事务的修改操作, 导致另一个事务的两次查询操作, 结果不唯一。

// 例子没有操作成功, 会话 2 的 插入操作不成功, 尽管 tx_isolation 已经设置 了 read-commited


6.5 锁的问题

6.5.1 脏读

6.5.2 不可重复读

6.5.3 丢失更新

6.6 阻塞

// 例子没有成功, 插入时有锁生成。

6.7 死锁

6.8 锁升级

6.9 小结


7章 事务

7.1  认识事务

7.1.1 概述

A 原子性,

C 一致性,

I 隔离性,也可称为并发控制, 可串行化, 锁

每个读写事务的对象对其他事务的操作对象能相互分离

D 持久性

7.1.2 分类

扁平事务

带有保存点的扁平事务

链事务

嵌套事务

分布式事务


7.2 事务的实现

redo 和 undo 不是 逆过程。

7.2.1 redo

为了持久化

innodb_flush_log_at_trx_commit

0 最快

1 最慢

2 中间


7.2.2 undo

为了事务的回滚

mysql 5.6 的 information_schema 数据库中,

找不到表 INNODB_TRX_ROLLBACK_SEGMENT, INNODB_TRX_UNDO


7.2.3 purge

用来完成最终的 delete 和 update 操作


7.2.4 group commit

一次 fsync 可以刷新确保多个事务日志被写入文件


7.3 事务控制语句

用 completion_type 来控制是否是链事务

默认为 0 , 没有任何操作, commit 和 commit work 等价

设置为 1 , commit work 自动开启一个链事务

设置为 2 , commit work 等同与 commit and release。 在事务提交胡会自动断开与服务器的连接


7.4 隐式提交的 SQL 语句

执行完相应语句后, 会有一个隐式的 commit 操作。此时 执行 rollback 将不可以回退


7.5 对于事务操作的统计

show global status like 'com_commit'


7.6 事务的隔离级别

READ UNCOMMITTED

READ COMMITTED

REPEATABLE READ

SERIALIZABLE


7.7 分布式事务

7.7.1 MySql 数据库分布式事务

例子: 北京的张三转 1000 块钱到 上海的李四账户

在 PHP 中的实现:http://php.net/manual/zh/mysqlnd-ms.quickstart.xa_transactions.php

7.7.2 内部 XA 事务

同一个数据库中的事务问题:

例如:写 innodb redo 日志和 binlog 日志,要保持一致性时用到


7.8 不好的事务习惯

7.8.1 在循环中提交

7.8.2 使用自动提交

7.8.3 使用自动回滚


7.9 长事务

将长事务分为若干短事务来执行。

例如:在银行系统中, 将一亿用户添加利息的操作,分为没十万个一个事务。来完成。好处是 1 不用完全回滚;2 知道进度。

7.10 小结


8章 备份与恢复

9章 性能调优

10章 引擎源代码

问题:

1 为什么事务自动提交

2 lock in share mode ? 有什么意义?

3Transactions cannot be nestedhttp://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html

与层次化事务矛盾

4  分布式事务(XA) , JAVA 里有专门的库来处理, 但 PHP 里没找到相应的处理类, z

注:

查看变量

select@@innodb_undo_logs 或

show variables like 'innodb_undo_logs'

事务  --  A 原子性,C 一致性,I 隔离性,D 持久性

索引  --  方便查找

锁      --  并发

优化

创建存储过程

create procedure p_load(count int unsigned)

begin

end

调用: call p_load(5000)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容