8 风度玉门

尚未进行身份认证

人得先清心寡欲,方能高枕无忧。

等级
TA的排名 1w+

MySQL的 order by 工作原理

在程序设计当中,我们很多场景下都会用 group by 关键字。比如在分页读取数据时,为了避免重复扫描记录,这就是必须要使用 group by 了。比如我们使用如下 DDL 创建表:CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `city` varchar(16) NOT ...

2019-11-13 20:21:16

MySQL删除数据表空间不变原因

文章目录innodb_file_per_table数据删除流程重建表Online 和 inplace作为一名资深的CV 战士,我们可能很少去关注 MySQL的数据文件存储在哪里。当我们执行一批删除操作的时候,也不会去观察数据库文件的大小到底有没有变化。下面我们一起来看一下 MySQL 数据存储相关的原理。在MySQL 8.0 之前,表结构定义是存储在 .frm 为后缀的文件里,如下图所示。因为...

2019-11-13 20:10:42

MySQL抖动的原因

文章目录刷脏页触发刷脏页的条件InnoDB 的 flush 脏页策略我们在使用MySQL实现业务处理的时候,更多的关注可能在SQL本身上面是不是最优的。今天我们从一个很小的点去看一下MySQL的实现原理,那就是MySQL刷脏页相关的问题。刷脏页在MySQL中,如果内存数据页(buffer pool)和磁盘数据不一致时,这个内存数据页我们认为是“脏页”;当内存数据页 flush 到磁盘之后,内...

2019-11-13 20:04:08

MySQL字符串加索引

文章目录Demo详解我们在创建MySQL的字符串索引时,用的最多的就是对所有字符创建索引。但是往往我们忽略的是,字符串可以创建左前缀的索引,这样更短的字符索引可以减少索引的维护成本,下面详细介绍一下。Demo比如我们通过邮箱去检索用户的信息,就可能会执行如下的SQL 查询。mysql> select a, b from user where email = 'xxx@qq.com';...

2019-11-13 19:56:04

MySQL普通索引和唯一索引的区别

文章目录查询流程区别更新过程区别change buffer索引选择change buffer 与 redo log对于普通索引和唯一索引的使用,对于一个开发来说,我相信更多的区别场景就是:如果需要在库里面做一个唯一限制,就使用唯一索引;否则就使用普通索引了。下面主要介绍一下这 2 种索引的区别(使用MySQL时,大多数场景下使用的是B+ 索引,下面的案例或者描述默认都是 B+ 索引)。查询流程...

2019-11-13 19:42:36

MySQL事务隔离原理

文章目录一致性视图工作原理更新操作可重复读和读已提交的区别首先来介绍一下 MySQL 里面的“视图”的概念。视图:查询语句定义的虚拟表,可以通过 create view … 来创建。一致性视图:InnoDB 实现的,在 MVCC 中用到的,用于支持 RC (Read Commited,读提交) 和 RR (Repeatable Read,可重复读)隔离级别的实现。一致性视图工作...

2019-02-23 10:48:31

MySQL全局锁表锁&行锁

文章目录全局锁FTWRLmysqldumpset global readonly = true表级锁表锁MDL (metadata lock)行锁两阶段锁死锁在我们开发的过程中,使用全局锁和表锁的场景比较少,接触的也相对少一点,下面主要介绍一下。全局锁FTWRL全局锁就是对整个数据库实例加锁,MySQL 提供了 flush tables with read lock (FTWRL) 的方式...

2019-02-23 10:41:39

MySQL索引结构

文章目录常见索引类型Hash索引B+索引InnoDB的索引结构主键索引和普通索引的区别索引维护主键ID自增覆盖索引联合索引索引下推数据库的索引就像一本书的目录一样,它可以快速定位你所需要的信息。下面来详细说一下MySQL的索引结构。常见索引类型Hash索引Hash索引的底层实现是由Hash表来实现的,非常适合以 key-value 的形式查询,也就是单个key 查询,或者说是等值查询。其结...

2019-02-23 10:31:49

MySQL事务隔离级别

文章目录事务隔离级别事务隔离的实现谈到事务最先想到的就是ACID属性(Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性),今天主要介绍一下MySQL的隔离属性。事务隔离级别SQL标准里定义的隔离级别有以下4种:读未提交:一个事务可以读取到,另外一个事务尚未提交的变更。读已提交:一个事务提交后,其变更才会被...

2019-02-23 10:24:06

MySQL日志系统

文章目录redo logbinlog总结当我们在MySQL客户端执行更改数据库的操作时,就会牵扯到日志系统了。如我们使用最多的存储引擎InnoDB而言,里面就会用到:redo log (重做日志)和 binlog(归档日志)。下面主要介绍一下这两种日志的区别与联系:redo log在MySQL里,如果我们要执行一条更新语句。执行完成之后,数据不会立马写入磁盘,因为这样对磁盘IO的开销比较大。...

2019-02-23 10:18:44

MySQL架构设计

文章目录连接器查询缓存分析器优化器执行器MySQL用了好多年了,但是对于大部分开发人员来说,还是停留在使用上面。接下来的数篇文章将记录一下,MySQL原理的实现原理。首先看一下MySQL的架构图,如下所示:从上面的示意图可以看出,MySQL从上到下包含了:客户端、Server层和存储引擎层。对于客户端实现,可以是我们常用的MySQL命令行窗口,或者是Java的客户端程序等等,这里不做过多的...

2019-02-23 10:12:16

Netflix-Zuul 原理分析

文章目录核心模块ZuulServletZuulRunnerFilterProcessorRequestContext过滤器加载模块FilterFileManagerFilterLoader过滤器管理模块ZuulFilterDAOZuulFilterPoller定制开发的建议目前网上大多数关于Zuul的相关讨论大都是Spring-Cloud-Zuul相关的,但是笔者认为SpringCloud...

2018-09-28 23:58:11

Java8 List removeIf用法技巧

文章目录字符串切割使用List.removeIfAPI剔除元素问题解决我们在写业务代码时,经常需要截取字符串转成List,然后再通过一个自定义的规则去删减元素。通常使用的是String.split(",")的这种方式来切割字符串,然后再用Arrays.asList(T...)的方式创建List。然后再去处理List里面的内容。下面介绍一下1.8里面存在的坑。字符串切割通常我们会使用A...

2018-09-28 23:47:39

Spring Boot Security跨域访问 cors

文章目录未使用Security的Boot项目使用Security的情况使用Security开启允许iframe嵌套使用SpringSecurity在Boot项目中,实现前后端分离的跨域访问,只需要简单的配置即可。未使用Security的Boot项目在未使用SpringSecurity的Boot项目中,只需要在Application.java中添加如下代码即可@Be...

2018-09-28 23:40:02

CacheCloud搭建(Redis云平台)

下载源代码启动Server1、初始化MySQL数据库2、启动(本地)登录系统Redis机器环境初始化普通用户注册应用申请客户端连接在中小型互联网公司里面,对于运维使用的监控系统不是很完善。今天介绍一下CacheCloud,是搜狐视频开源的Redis云平台。可以对Redis官方提供的3种部署模式(Standalone、Sentinel、Cluster)...

2018-08-24 09:10:19

Redis Cluster流程原理

拓扑结构配置的一致性1、配置信息数据结构2、信息交互3、一致性的达成sharding1、数据分片(slot)2、客户端的路由3、分片的迁移failover1、failover的状态变迁2、故障发现3、故障确认4、slave选举5、结构变更通知可用性和性能1、RedisCluster的读写分离2、master单点保护Redis3.0之...

2018-08-11 19:54:54

分布式Redis故障转移(sentinel)

sentinel的相互感知三个定时任务master的故障发现sentinel Leader选举故障转移failoverslave晋升的规则总结当2台以上Redis实例形成了主备关系,他们组成的集群就具备了一定的高可用:当master 故障时,slave可以成为新的master,对外提供读写服务,这种运行机制称为failover。那么谁去发现master的故障,并做...

2018-08-11 19:21:36

分布式Redis主备复制

主备复制流程断点续传当数据落在不同节点上时,如何保证数据节点之间的一致性是非常关键的。Redis采用主备复制的方式保证一致性,所有节点中,只有一个节点为主节点(master),它对外提供写服务,然后异步的将数据复制到其他节点上。主备复制流程Redis包含master 和slave 2种节点:master 对外提供写服务;slave 节点作为master的数据备份,不可...

2018-08-11 19:06:18

Redis持久化详解(RDB&AOF)

全量模式的持久化(RDB)1、写入流程2、恢复流程增量模式的持久化(AOF)1、写入流程2、回放流程AOF模式的优化重写Redis 对外提供数据访问服务时,使用的是常驻内存的数据。为了在Redis Server重启之后数据还可以得到恢复,Redis具备将数据持久化到硬盘中的能力。全量模式的持久化(RDB)Redis Server在多有db 中存储的k...

2018-08-05 19:18:44

Redis客户端与服务端交互详解

Redis协议网络模型序列化协议inline commandsimple stringbulk stringerrorintegerarrayC/S 两端使用的协议数据类型请求/响应模式串行化实现pipeline实现事务模式1、入队/执行分离的事务原子性2、事务的一致性3、事务的只读操作4、乐观锁的可串行化事务隔离5、事务实现6、事务交互模式...

2018-07-31 23:15:09

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。