OpenResty配置多域名反向代理 今天介绍一下单台服务器上面,配置多台子系统的反向代理配置(域名访问)。下面看一下详细的配置。nginx.conf配置#user nobody;worker_processes 1;error_log logs/error.log notice;pid logs/nginx.pid;worker_rlimit_nofile 65535;events...
CPU Cache的优化:解决伪共享问题 伪共享问题(false sharing) 对于解释伪共享问题,就需要了解一下缓存行的相关概念。缓存行是主存复制到高速缓存的最小单位,一般情况下缓存行的大小为32~128字节(通常为64字节)。 在多线程程序执行的过程中,有可能将2个或多个需要频繁修改的变量存储在同一个缓存行当中。这样以来,会频繁的造成缓存头失效的问题。如下图所示: ...
OpenResty文件上传upload 对于OpenResty的使用,本章介绍一下文件上传。代码如下:local upload = require "resty.upload"local cjson = require "cjson"local result = require "common.result"local uuid = require 'resty.uuid'local configCache = ngx.sh
Redis持久化详解(RDB&AOF) 全量模式的持久化(RDB)1、写入流程2、恢复流程增量模式的持久化(AOF)1、写入流程2、回放流程AOF模式的优化重写Redis 对外提供数据访问服务时,使用的是常驻内存的数据。为了在Redis Server重启之后数据还可以得到恢复,Redis具备将数据持久化到硬盘中的能力。全量模式的持久化(RDB)Redis Server在多有db 中存储的k...
SQL优化--逻辑优化--子查询优化(MySQL) 1)子查询概念:当一个查询是另一个查询的子部分时,称之为子查询(查询语句中嵌套有查询语句)。子查询出现的位置有:a)目标列位置:子查询如果位于目标列,则只能是标量子查询,否则数据库可能返回类似“错误: 子查询必须只能返回一个字段”的提示。b)FROM子句位置:相关子查询出现在FROM子句中,数据库可能返回类似“在FROM子句中的子查询无法参考相同查询级别中的关系”
Kafka系统架构 文章目录Kafka 架构常见术语Kafka 作为一个消息引擎中间件,越来越多的被国内各个厂商使用。本篇主要介绍一下其系统架构及常用术语。Kafka 架构从上图可以看出,和其他消息引擎类似,主要由生产者、Kafka 集群、消费者构成。但是其中有一点需要注意的是,Kafka 集群和消费者依赖了ZooKeeper 集群。上图中的每个Broker 对应的就是一个一个的Kafka 实例,每个Brok...
MySQL的并行复制策略 文章目录按表分发策略按行分发策略MySQL5.6 的并行复制MariaDB 的并行复制MySQL5.7 的并行复制MySQL5.7.22 的并行复制前面介绍的MySQL 的主从复制流程如下所示:主备延迟的主要原因在于,master A 上产生 binlog 的速度大于slave B 处理 binlog 的速度。数据的积压就在于 sql_thread 处理的速度。在 MySQL 5.6 版本之...
MySQL主备复制 文章目录MySQL 主备原理binlog 的 3 种格式statementrowmixed循环复制问题我们知道MySQL中的binlog 可以用来归档,同时也可以用来做主从同步,今天来详细介绍一下。MySQL 主备原理从上面流程可以看出,A 节点是主库,B 节点是从库。通常情况下从库我们会设置为 readonly ,这样可以防止因业务代码中的切换 BUG 造成 在从库写数据;同时我们也可以...
MySQL 的 binlog 和 redo log 写入原理 文章目录binlog 的写入流程redo log 写入流程组提交组提交优化总结binlog 的写入流程事务执行过程中,binlog 首先会被写到 binlog cache 中;事务提交的时候,再讲binlog cache 写到 binlog 文件中。一个事务的 binlog 是原子的,无论多大都需要保证完整性。系统为每个客户端线程分配一个 binlog cache,其大小由 binlog_c...
MySQL加锁原理 文章目录解决幻读加锁规则Demo1:等值查询间隙锁Demo2:非唯一索引等值锁Demo3:主键索引范围锁Demo4:非唯一索引范围锁Demo5:唯一索引范围锁bugDemo6:非唯一索引上存在“等值”的例子Demo7:limit语句加锁Demo8:一个死锁的例子对于MySQL 的加锁规则,笔者之前了解到的也只是行锁的概念。除了业务代码中使用的乐观锁、悲观锁,也没有深入了解MySQL 真正加锁规则...
影响MySQL查询性能的案例 文章目录WHERE条件字段使用函数字段隐式转换隐式字符编码转换解决方案在互联网应用中,通常情况下我们查询DB 只会使用简单的、查询效率较高的SQL,大部分的逻辑都需要在代码中去实现。今天介绍一下,一些看起来简单的SQL,也有可能导致查询性能的低下。WHERE条件字段使用函数假设我们有如下创建表的语句mysql> CREATE TABLE `tradelog` ( `id` int...
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 ...
MySQL删除数据表空间不变原因 文章目录innodb_file_per_table数据删除流程重建表Online 和 inplace作为一名资深的CV 战士,我们可能很少去关注 MySQL的数据文件存储在哪里。当我们执行一批删除操作的时候,也不会去观察数据库文件的大小到底有没有变化。下面我们一起来看一下 MySQL 数据存储相关的原理。在MySQL 8.0 之前,表结构定义是存储在 .frm 为后缀的文件里,如下图所示。因为...
MySQL抖动的原因 文章目录刷脏页触发刷脏页的条件InnoDB 的 flush 脏页策略我们在使用MySQL实现业务处理的时候,更多的关注可能在SQL本身上面是不是最优的。今天我们从一个很小的点去看一下MySQL的实现原理,那就是MySQL刷脏页相关的问题。刷脏页在MySQL中,如果内存数据页(buffer pool)和磁盘数据不一致时,这个内存数据页我们认为是“脏页”;当内存数据页 flush 到磁盘之后,内...
MySQL字符串加索引 文章目录Demo详解我们在创建MySQL的字符串索引时,用的最多的就是对所有字符创建索引。但是往往我们忽略的是,字符串可以创建左前缀的索引,这样更短的字符索引可以减少索引的维护成本,下面详细介绍一下。Demo比如我们通过邮箱去检索用户的信息,就可能会执行如下的SQL 查询。mysql> select a, b from user where email = 'xxx@qq.com';...
MySQL普通索引和唯一索引的区别 文章目录查询流程区别更新过程区别change buffer索引选择change buffer 与 redo log对于普通索引和唯一索引的使用,对于一个开发来说,我相信更多的区别场景就是:如果需要在库里面做一个唯一限制,就使用唯一索引;否则就使用普通索引了。下面主要介绍一下这 2 种索引的区别(使用MySQL时,大多数场景下使用的是B+ 索引,下面的案例或者描述默认都是 B+ 索引)。查询流程...
MySQL事务隔离原理 文章目录一致性视图工作原理更新操作可重复读和读已提交的区别首先来介绍一下 MySQL 里面的“视图”的概念。视图:查询语句定义的虚拟表,可以通过 create view … 来创建。一致性视图:InnoDB 实现的,在 MVCC 中用到的,用于支持 RC (Read Commited,读提交) 和 RR (Repeatable Read,可重复读)隔离级别的实现。一致性视图工作...
MySQL全局锁表锁&行锁 文章目录全局锁FTWRLmysqldumpset global readonly = true表级锁表锁MDL (metadata lock)行锁两阶段锁死锁在我们开发的过程中,使用全局锁和表锁的场景比较少,接触的也相对少一点,下面主要介绍一下。全局锁FTWRL全局锁就是对整个数据库实例加锁,MySQL 提供了 flush tables with read lock (FTWRL) 的方式...
MySQL索引结构 文章目录常见索引类型Hash索引B+索引InnoDB的索引结构主键索引和普通索引的区别索引维护主键ID自增覆盖索引联合索引索引下推数据库的索引就像一本书的目录一样,它可以快速定位你所需要的信息。下面来详细说一下MySQL的索引结构。常见索引类型Hash索引Hash索引的底层实现是由Hash表来实现的,非常适合以 key-value 的形式查询,也就是单个key 查询,或者说是等值查询。其结...
MySQL事务隔离级别 文章目录事务隔离级别事务隔离的实现谈到事务最先想到的就是 ACID 属性(Atomicity 原子性、Consistency 一致性、Isolation 隔离性、Durability 持久性),今天主要介绍一下MySQL的隔离属性。事务隔离级别SQL标准里定义的隔离级别有以下 4 种:读未提交:一个事务可以读取到,另外一个事务尚未提交的变更。读已提交:一个事务提交后,其变更才会被...