代码改变世界

文章分类 -  MySQL

并发update导致的死锁一案例及优化建议

2018-05-29 11:35 by Kevin.hhl, 5247 阅读, 收藏,
摘要: 一、死锁信息 1.1 数据库死锁信息 1.2 业务死锁报的信息 二、死锁分析 2.1 信息提供 2.2 死锁原因分析 三、优化方案 3.1 下面是常见多可行优化方案 1. 控制并发顺序 2. 优化sql 2.1 在update条件中加上主键id 2.2 把update 分解,先根据查询出主键id,然 阅读全文

MySQL force index强制走索引注意了吗?

2017-11-16 17:07 by Kevin.hhl, 2543 阅读, 收藏,
摘要: 1.MySQL版本: Percona Server 5.6.25 总结: 1.USE INDEX| FORCE INDEX 都是最左匹配,只要匹配上最左前缀的索引是不会报错 2.隐患:如果USE INDEX| FORCE INDEX的原索引不存在,匹配到了其它索引,而其它索引并不是最优的,会导致性能 阅读全文

gh-ost唯一索引变更可能导致表数据丢失

2017-08-30 18:38 by Kevin.hhl, 790 阅读, 收藏,
摘要: 一.问题起因 下午在给测试库加unique key发现gh-ost无法退出,即使我把postpone文件删掉,gh-ost还是无法正常退出,于是想仔细回溯gh-ost加unique key的整个流程,思考gh-ost和正常DDL的区别,然后在测试环境跑case,整个流程在下面会介绍。 二.案例及分析 阅读全文

python常用运维模块

2017-07-20 18:23 by Kevin.hhl, 122 阅读, 收藏,
摘要: p = subprocess.Popen('date', stdout=subprocess.PIPE, shell=True) p.wait() return p.stdout.read() 阅读全文

MySQL之常见SQL优化及案例

2017-07-07 17:53 by Kevin.hhl, 201 阅读, 收藏,
摘要: 1.使用函数 2.隐式转换 3.分页 4.外连接 5.子查询 6.模糊查询 7.多表join 8.从业务使用逻辑去优化 1.使用函数 2.隐式转换 3.分页 4.外连接 5.子查询 6.模糊查询 7.多表join 8.从业务使用逻辑去优化 1.使用函数 常见的是在表达式的左边对某些字段使用函数运算, 阅读全文

怎么看MySQL的执行计划

2017-07-05 20:17 by Kevin.hhl, 271 阅读, 收藏,
摘要: 1.怎么判断是否回表 回表:简单理解就是需要扫描表数据行,比如全表扫描、通过索引不能直接通过索引返回查询的数据。 执行计划最后一列:Extra 下面来看几个sql列子: --Using index mysql> desc SELECT COUNT('*') AS `__count` FROM `ap 阅读全文

MySQL开发规范

2017-07-05 11:08 by Kevin.hhl, 181 阅读, 收藏,
摘要: 数据库线上准入规范(通用) 准入规范级别 【必须】:为强制要求,必须遵守,如有特殊需求需要在部署测试环境前经评审通过 【强烈建议】:尽量遵守,如无法遵守请给出备注说明,否则不予执行、部署 【建议】:为最佳实践,开发人员可以根据实际情况有所调整 数据库线上准入规范(通用) 数据库线上准入规范(通用) 阅读全文

MySQL Online DDL介绍

2017-07-03 10:14 by Kevin.hhl, 298 阅读, 收藏,
摘要: DDL实现方式 MySQL 5.5版本 添加、删除二级索引称:fast index creation,不需要copy整表的数据,但整个过程加共享锁,此表是只读的。MySQL 5.6 online ddl推出以前,执行ddl主要有两种方式copy方式和inplace方式,inplace方式又称为(fa 阅读全文

分析MySQL表上没有或使用次数少的索引

2017-07-03 10:08 by Kevin.hhl, 1334 阅读, 收藏,
摘要: 1. 摘要: DBA经常会有新接手的业务数据库,之前大多事RD自己维护,没有专职DBA来维护MySQL,建索引随心所欲,导致好多表上有大量的索引,有的表索引大小比表数据都要大很多,作为一名DBA看到这种情况是不是会头大,很想把那些没用的index全部干掉,但也不能随便就干掉,怎么办,表示很需要耗时间 阅读全文

MySQL查询优化器新特性介绍

2017-06-23 13:50 by Kevin.hhl, 245 阅读, 收藏,
摘要: 1.BNL(Block Nested-Loop) 2.BKA(Batch Key Access) 3.MRR(Multi Range Read) 4.ICP(Index Condition push) 序言: 我们使用MySQL,查询性能是一个很重要的指标,对于查询优化器如何使用索引?实际中用单表查 阅读全文

pt-osc在线修改表发生死锁问题分析及思考

2017-06-22 10:37 by Kevin.hhl, 3656 阅读, 收藏,
摘要: 前提背景描述: MySQL 版本: MySQL community 5.6.16 pt-online-schema-change 2.2.20 问题描述:使用pt-online-schema-change 修改字段varchar(N) N变长。 死锁日志如下: LATEST DETECTED DEA 阅读全文

MySQL备份流程及优化

2017-06-22 10:22 by Kevin.hhl, 524 阅读, 收藏,
摘要: 1.Flush table with read lock 的认识: Flush table with read lock(简称: FTWRL) 有哪些问题: 例如让DBA头大的long query,FTWRL需要等待所有的表没有引用后关闭所有表,long query 导致FTWRL无法执行成功。这也 阅读全文