MySQL误操作的语法与回滚

前段时间我们有个开发同学写了一条更新语句没有加上where条件更新了全库,后来通过了阿里的DTS进行了恢复。但是这个也勾起了我的好奇,如果是自建的系统我们该如何通过binlog恢复数据呢,我们又该怎么预防这些毁灭性的语句呢 几种情况 delete误删数据行drop table 或者 truncate tabledrop database 预防不带where条...

2019-07-04 07:25:48

阅读全文

幻读和间隙锁

幻读在 REPEATABLE-READ 重复读 隔离级别下发生在当前读场景,因为重复读有快照这一概念。既事务启动后的第一个语句创建快照,重复读也是默认的隔离界别,因此幻读是一个比较重要的点了。下面会结合或者照搬网络资料的一些案例来加深理解。 数据场景表结构 CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(...

2019-06-23 19:48:42

阅读全文

MySQL 优化的谚语

MySQL在优化的时候有很多需要注意的知识点,但是有的展开去记录的确会占用太多的篇幅,这边做了一些一句话就可以描述出来的知识点。后面的知识点也是只需点一下就可以回忆起来的。 查询条件做函数运算会用不到索引数字和字符串做比较,会默认吧字符串转化为数字。show processlist 可以查看当前状态下锁和事务的情况...

2019-06-23 01:21:13

阅读全文

mysql order rand 性能优化

往往是一些不起眼的东西更暗含玄机,记得以前有个这样的需求,在网站首页给用户随机推荐词库中的10个热门行业词,而且每一次都要不一样。我们使用了最简单的实现方式,MySQL里order by rand() 排序取出前10个。但是上线后发现这样写的性能尤其底下。 场景表结构 create table words ( id int unsigne...

2019-06-20 20:33:20

阅读全文

mysql order by 排序优化

order by在实际开发环境中使用时还是有很多禁忌的,比如字段的长度,索引的使用,select尽量别用*等,我们来看下order by在MySQL里经历了哪些过程吧,并且学会合理的优化MySQL

2019-06-19 00:28:44

阅读全文

MySQL表空间释放

我们在需要释放MySQL磁盘空间的时候第一反应是删除或者归档一些历史数据,但是这样的做法不一定是绝对正确的,因为有时候删除数据也不一定会及时释放磁盘空间。 在项目中使用神策因为是私有化部署所以极度’珍惜‘磁盘空间,数据量的确太大了。那时候神策的工程师告诉我们可以删除一些不要的数据,但是磁盘空间无法...

2019-06-16 18:27:31

阅读全文

刷脏页带来的数据库抖动怎么优化?

MySQL抖动优化 在公司上班的时候经常是上班了一看听云日志有块小的数据库勃起然后找到运维查看MySQL的状态,因为不是专业的DBA所以给回的数据查考价值有限。后台查了些文档,MySQL的一些配置也会造成这种抖动或者勃起 redo log 刷脏页 redo log在一些地方可能叫redo log buffer 或者 log buffer,在翻查一些质料后知...

2019-06-16 02:25:13

阅读全文

13个MySQL调优的配置参数

整理了13个Mysql常见的调优参数,类比项目中发现,如果是自建的MySQL服务基本要全部设置优化下,如果是云端的产品很多都是大厂已经调节过后的配置。我只是把参数都整理出来了,并且写了一些自己理解的描述和网上查考了一些回答。更权威的还是要撸下官网文档的~~ INNODB_BUFFER_POOL_SIZE这是InnoDB里最重要的一个变量...

2019-06-14 00:56:02

阅读全文

MySQL前缀索引的正确使用

前缀索引的使用场景主要集中在一长段字符串的完全匹配上,但是前缀索引的添加创建以及长短的选择也是有很多学问的。长度选择过长会丢失前缀索引的优势,太短会增加回表的次数。 特点 优势 节约索引空间增加索引查询效率 劣势 覆盖索引失效增加回表次数 前缀索引添加命令语句 alter table SUser add index...

2019-06-11 00:22:00

阅读全文

索引选择与查询语句优化

索引选择 MySQl在一张表中有多个索引,在我们书写查询语句的时候没有指定使用哪个索引来进行查询,这部分操作是由MySQL的查询优化器来决定的。但是查询优化器有选择错误的情况,常见的几种如下(丁奇大佬列举的列子我只是做了归纳整理) 优化器的逻辑 选择索引是优化器的工作,优化器的目的是找到最优的执行方案主要影...

2019-05-19 18:33:05

阅读全文

mysql 的最左前缀原则

在MYSQL InnoDB 中 联合索引的最左原则是一块比较常用的概念,在百度搜索了很多帖子或多或少都和实际情况优先出入,大多是基于《高性能MYSQL》上进行的总结文章,但是时隔多年在实际使用环境下难免有一些版本升级带来的优化问题。带着这些问题进行了下面一波小实验。 联合索引优点 覆盖索引,这一点是最重要的,重所...

2019-05-15 23:27:15

阅读全文

普通索引于唯一索引

知识点 LRUchange Bufferbuffer pool 查询过程 名称 过程 普通索引 查询第一条满足条件的数据,继续查找直到不满足条件停止 唯一索引 查找到第一条,因为保持了唯一性停止查找 InnoDB 数据读写按照数据页为单位读写,也就是说不是把记录本身从磁盘读出来,而是以页为单位读入内存。对于...

2019-05-12 17:04:00

阅读全文

mysql的事务隔离概念

InnoDB默认隔离级别为可重复读,更新数据的时候使用当前读。他们都是在内部视图的基础支持的基础上完成的。下面会记录一些mysql的事务回滚和事务启动时机也记了一些在官方手册上撸下来的概念 事务隔离mysql> CREATE TABLE `t` ( `id` int(11) NOT NULL, `k` int(11) DEFAULT NULL, PRIMARY KEY (`id`) )...

2019-04-10 23:38:33

阅读全文

全局锁,表锁,行锁

全局锁 当需要让整个数据库都处于只读状态的时候,可以使用下面这个命令,之后的其他数据更新,数据定义语句全部会被堵塞住 FLUSH TABLE WITH READ LOCK 它的应用场景是做全库的逻辑备份,但是一般没人会真的这样做。因为这样做会有一堆的风险,主库这样做业务GG,从库这样做主从业务延迟。 在讲到<a href='...

2019-03-29 01:50:07

阅读全文

05 -06| 深入浅出索引

索引可以提高数据的查询效率,就像书的目录。其中索引设计到一部分数据结构和算法的内容,想要深入理解索引的概念那正要补补数据结构和算法了。 涉及数据结构 哈希表有序数组搜索树 优缺点 数据模型 优点 缺点 哈希表 插入和查找在没退化成链表情况下O(1) 不适合范围查找 有序数组 等值范围...

2019-03-20 23:07:16

阅读全文