DBA课程-day08-存储引擎-2

1. 上周重点难点回顾

1.1 索引

聚集索引构建B树的过程

辅助索引构建B树的过程

面试问题简易回答?

--- 请你简述,InnoDB 聚集索引和辅助索引的区别? *****

  1. 一张表只能有一个聚集索引,最好是自增的数字列
  2. 聚集索引叶子节点有序存储的整行数据
  3. 辅助索引一个表可以有多个
  4. 辅助索引叶子节点存储的是索引列的有序值+此列值的主键值
    想要详细回答,整个两个索引构建的过程和配合使用,最好是画图说明

辅助索引细分

单列辅助索引

多列联合索引 *****
--- select xxxx from where a b c 都是等值查询,建索引有什么好的建议

  1. 考虑联合索引
  2. 排列问题? 唯一值多的放在
    alter table t1 add idx(c,b,a)
    select count(distinct a) from t1;
    为什么?
    优化器会自动按照索引建立的顺序,自动排列 where 条件的顺序,前提是都是等值或者in的。
    如果出现其他方式条件,比如:
    出现了> < 或者group by order by

怎么判断联合索引将来的优化效果?

  1. 看执行计划
  2. key_len

唯一索引

索引树高度问题

--- 索引树高度受到哪些原因影响?(开发规范)

  1. 数据类型: char varchar enum
  2. 数据量级问题: 分库 分表 分布式
  3. 索引列值长度: 前缀索引

前缀索引

explain(desc)重点回顾

--- 你在你们公司做过哪些优化(MySQL)?

  1. 我在公司,主要是配合开发和业务人员,进行SQL优化和索引优化这块的工作
  2. 我主要针对索引优化这块儿,做的工作比较多
  3. 我一般都是配合两个数据库工具进行配优化
  4. 第一个就是slowlog(自动收集慢语句),第二个工具是explain
  5. 我通过之前做过的小案例来简单说明下我的优化思路
  6. explain(desc)使用场景(面试题)
    题目意思: 我们公司业务慢,请你从数据库的角度分析原因
    1.mysql出现性能问题,我总结有两种情况:
    (1)应急性的慢:突然夯住
    应急情况:数据库hang(卡了,资源耗尽)
    处理过程:
    1.show processlist; 获取到导致数据库hang的语句
  7. explain 分析SQL的执行计划,有没有走索引,索引的类型情况
  8. 建索引,改语句

(2)一段时间慢(持续性的):

  1. 记录慢日志slowlog,分析slowlog

  2. explain 分析SQL的执行计划,有没有走索引,索引的类型情况

  3. 建索引,改语句

  4. 另外,我还做一部分存储引擎方面的优化。
    我们有个业务是插入类的操作比较多,做过了一个存储引擎方面的优化。
    将innoDB替换成了tokuDB
    主要说说为什么会使用tokudb
    。。。。。。

1.2 存储引擎

InnoDB存储引核心特性

Transaction,Row Level Lock,MVCC,CSR,FK,HB,Replication

表空间管理

alter table t1 discard tablespace;
alter table t1 import tablespace;

事务特性

A 原子
C 一致
I 隔离
D 持久

redo在ACID中的作用

重做日志,前滚日志。主要完成ACID中的D的特性。对AC也有一定的作用
存什么?
内存数据页变化的过程

Undo在ACID作用

回滚日志,撤销日志。主要完成的ACID中的A,对CI也有一定的作用

redo-CSR前滚

Undo-CSR回滚

今日预计内容

2. 锁介绍

2.1 介绍

锁定的意思,提供的是ACID中,I方面的功能。需要配合UnDO+隔离级别一起来实现

2.2 InnoDB锁级别

行级锁

2.3 扩展内容(自己扩展)

Next LOCK
GAP LOCK
悲观锁:
乐观锁:

第一种:
select id from t where id > 9 and id < 12 order by id for update
访问顺序 :

  1. id=9,gap [5-10]
  2. 向右遍历 next-lock 10-15,发现10>9,停止扫描,但由于不是等值12,所有next-lock保持不变更gap
    最终锁范围: [5-10],[10-15] ====》 [5-15]

第二种
select id from t where id > 9 and id < 12 order by id desc for update
由于order by desc 的存在,查询优化器为了避免再排一次序,会将查找顺序优化为先找id <12
所以访问顺序

  1. id=12 ,gap[10-15]
  2. 向左遍历,next-lock ,扫到5-10范围,发现10>9,继续向左,扫到0-5,发现5<9,停止扫描
    但由于不是等值9,所有next-lock保持不变更gap
    最终锁范围: [0-5],[5-10],[10-15] ===> [0-15]

工作中(优化章节):需要排查锁的争用、锁等待、死锁

3. 事务的隔离级别

影响到数据的读取,默认的级别是 RR模式.
transaction_isolation 隔离级别(参数)
负责的是,MVCC,读一致性问题
RU : 读未提交,可脏读,一般部议叙出现
RC(*****) : 读已提交,可能出现幻读,可以防止脏读.
RR(*****) : 可重复读,功能是防止"幻读"现象 ,利用的是undo的快照技术+GAP(间隙锁)+NextLock(下键锁)
SR : 可串行化,可以防止死锁,但是并发事务性能较差

RR级别:解决了 不可重复读问题+幻读的现象
不可重复读问题是由 undo的快照技术来解决。
幻读现象是由:MVCC+GAP+next-lock

补充: 在RC级别下,可以减轻GAP+NextLock锁的问题,但是会出现幻读现象,一般在为了读一致性会在正常
select后添加for update语句.但是,请记住执行完一定要commit 否则容易出现所等待比较严重.
例如:
[world]>select * from city where id=999 for update;
[world]>commit;

******欠一个问题,关于幻读模拟。******

4. InnoDB核心参数

4.1 双一标准之一(*****):innodb_flush_log_at_trx_commit=1

作用:
控制了redo buffer 刷写策略,是一个安全参数,是在5.6版本以上默认的参数
参数功能
1:每次事务提交,都会立即刷下redo到磁盘(redo buffer --每事务-->os buffer --每事务--磁盘)
0:表示当事务提交时,不立即做日志写入操作(redo buffer --每秒-->os buffer --每秒--磁盘)
2:每次事务提交引起写入文件系统缓存(redo buffer --每事务-->os buffer --每秒--磁盘)

4.2 Innodb_flush_method=(O_DIRECT, fdatasync)

作用:
控制了 redo buffer 和 data bufffer 刷写磁盘方式

最大安全模式:
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT

最大性能模式:
innodb_flush_log_at_trx_commit=0
innodb_flush_method=fsync

4.3 关于redo设置

innodb_log_buffer_size= 128M 业务系统CPU压力有关
innodb_log_file_size=256 一般是1-2倍
innodb_log_files_in_group = 3 3-4组

4.4 innodb_buffer_pool_size

生产一般调整为物理内存的50%-80%左右(你的系统中只有一个mysql实例)

5. 课后自己扩展内容

6. 日志管理

7. 备份恢复入门

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

推荐阅读更多精彩内容