MySQL集群架构之主从模式异步复制实践
摘要:本文接MySQL集群架构之主从模式 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com),对异步复制方式进行实践全过程进行探究(过程中将附上各种操作可能出现问题后解决问题的操作,可能不是最优的)。 环境准备: 1、两台机器,ip分别是168.192.X.165/168.192.X.2。165
阅读全文
posted @
2022-02-28 22:29
池塘里洗澡的鸭子
阅读(104)
推荐(0) 编辑
Win10上安装MySQL8.0.26
摘要:在CentOS8上安装了MySQL8.0.26,在Win10上也成功安装过。只是做MySQL主从复制时需要配置win10上的my.ini,可是哪里也没有这个文件。怎么解决呢?这个就涉及Win10上MySQL的安装,下面分有无my.ini分别进行探讨: 添加my.ini: 在C:\ProgramDat
阅读全文
posted @
2022-02-28 19:26
池塘里洗澡的鸭子
阅读(148)
推荐(0) 编辑
MySQL集群架构之主从模式
摘要:为保证数据库的高可用性,可以采用冗余的方式,但是数据冗余带来的问题是数据一致性问题。主从模式就是该方式的一种集群实现架构,其主要优势就是简单灵活,能满足多种需求。是一种比较主流的用法,同时其劣势也很明显:写操作高可用需自行处理。 MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到
阅读全文
posted @
2022-02-26 07:15
池塘里洗澡的鸭子
阅读(597)
推荐(0) 编辑
MySQL性能优化之复杂SQL优化实践
摘要:前几篇对于Mysql性能优化分别进行了探索阐述,本文将对前述要点进行模拟实践,如下: 环境准备: 新建表tuser1和tuser2: 通过查询test_insert存储过程,创建类似存储过程初始化tuser1,tuser2数据: select `name` from mysql.proc where
阅读全文
posted @
2022-02-25 17:51
池塘里洗澡的鸭子
阅读(768)
推荐(0) 编辑
MySQL性能优化之表结构设计优化
摘要:在实际生产中根据业务需求设计数据库模型时,在表结构的设计上做文章也可以提高数据库的性能。可以采用以下策略: 1、设计中间表,一般针对于统计分析功能,或者实时性不高的需求(OLTP、OLAP) 2、设计冗余字段 为减少关联查询,创建合理的冗余字段(创建冗余字段还需要注意数据一致性问题) 3、 拆表 1
阅读全文
posted @
2022-02-25 12:21
池塘里洗澡的鸭子
阅读(663)
推荐(0) 编辑
MySQL性能优化之SQL语句及索引优化
摘要:MySQL索引原理之查询优化 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中对查询优化如何分析定位问题并优化进行了一些案例分析,本文进一步就SQL语句及其索引进行系统的案例分析,详述MySQL性能在SQL语句(开发者大有作为的范围)这个维度可以进行的操作。 环境准备: 建表: 建存储
阅读全文
posted @
2022-02-25 10:42
池塘里洗澡的鸭子
阅读(284)
推荐(0) 编辑
MySQL性能优化之系统配置优化
摘要:数据库优化维度有四个:硬件升级、系统配置、表结构设计、SQL语句及索引。按优化成本和优化效果两个不同维度排序,如下: 优化成本:硬件升级>系统配置>表结构设计>SQL语句及索引。 优化效果:硬件升级<系统配置<表结构设计<SQL语句及索引。 即成本越高优化效果反而是最小的,所以如果做优化选择在条件许
阅读全文
posted @
2022-02-24 15:10
池塘里洗澡的鸭子
阅读(662)
推荐(0) 编辑
Redis扩展功能之Lua脚本
摘要:脚本对于Unix/Linux系统的使用者是再熟悉不过了。lua也是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua应用场景:游戏开发、独立应用脚本、Web应用脚本、扩展和数据库插件;nginx上使用lua
阅读全文
posted @
2022-02-24 13:43
池塘里洗澡的鸭子
阅读(221)
推荐(0) 编辑
Redis扩展功能之慢查询日志
摘要:在MySQL中存在慢日志的概念(参考MySQL索引原理之查询优化 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)),Redis中也提供慢日志的功能用于监视和优化查询。下面介绍Redis中慢日志相关的操作 1、设置 在redis.conf中可以配置和慢查询日志相关的选项: Redis使用
阅读全文
posted @
2022-02-24 11:20
池塘里洗澡的鸭子
阅读(187)
推荐(0) 编辑
Redis扩展功能之事务
摘要:所谓事务(Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。Redis作为缓存实现者之一必然支持事务。 Redis事务: 1)Redis的事务是通过multi、exec、discard和watch这几个命令来完成的。 2)Redis的单个命令都是原子性的,所以这里需要确保事务性的
阅读全文
posted @
2022-02-24 10:58
池塘里洗澡的鸭子
阅读(31)
推荐(0) 编辑
Redis扩展功能之发布与订阅
摘要:发布与订阅这个模式在Zookeeper中有详细的阐述以及Zookeeper是如何实现该功能的(参考Zookeeper应用之一:数据发布与订阅初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)和Zookeeper - 随笔分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.co
阅读全文
posted @
2022-02-24 10:41
池塘里洗澡的鸭子
阅读(59)
推荐(0) 编辑
Redis数据类型
摘要:Redis是一个Key-Value的存储系统,使用ANSI C语言编写。key的类型是字符串。 value的数据类型有: 常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类型。 不常见的:bitmap位图类型、geo地理位置类型。
阅读全文
posted @
2022-02-24 10:08
池塘里洗澡的鸭子
阅读(59)
推荐(0) 编辑
Redis客户端访问
摘要:在Nignx和Mybatis文章相关案例中都使用到了Redis,使用过程中都是直接导入Redis相关的jar后进行ip/port的配置就可以访问了(MyBatis功能点一应用:二级缓存整合redis - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com))。使用过程中并不需要关注访问接口等,而
阅读全文
posted @
2022-02-24 09:38
池塘里洗澡的鸭子
阅读(312)
推荐(0) 编辑
Redis单机版安装和使用
摘要:作为实现的缓存架构之一,Redis有着广泛的应用场景。本文介绍Redis单机版的安装和使用。 关于Redis在Linux上的安装,可以使用yum也可以下载Redis源码包进行make。Redis源码包编译要提前准备好C语言需要的GCC环境。源码安装可参考Nginx的安装Nginx安装启用 - 池塘里
阅读全文
posted @
2022-02-23 20:43
池塘里洗澡的鸭子
阅读(112)
推荐(0) 编辑
缓存原理与设计之缓存的读写模式
摘要:上篇缓存原理与设计之缓存基本思想及分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中提到了缓存的应用场景,这些场景的应用也是缓存的优势所在: 1)减轻服务器压力 客户端缓存、网络端缓存减轻应用服务器压力;服务端缓存减轻数据库服务器的压力。 2)提升性能,Linux性能优化概述 -
阅读全文
posted @
2022-02-23 13:47
池塘里洗澡的鸭子
阅读(157)
推荐(0) 编辑
缓存原理与设计之缓存基本思想及分类
摘要:在MyBatis功能点一应用:二级缓存整合redis - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中,MyBatis使用第三方缓存Redis将查询数据保存。实际上除了Redis还可以使用其他的第三方缓存也可以,只要实现了JDK提供的Cache接口即可。 这个接口就是缓存设计浓缩的精华
阅读全文
posted @
2022-02-23 13:28
池塘里洗澡的鸭子
阅读(125)
推荐(0) 编辑
MySQL实战之死锁与解决方案
摘要:在实际生产中,死锁并不少见。那么数据库死锁的表现是什么?透过现象看本质,死锁的原因是什么?分析了原因怎样合理解决又是一个问题。在JMM之Java中锁概念的分类总结 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中也提到了死锁的概念,同时总结了死锁产生的四大必要条件: 1)互斥条件:一个
阅读全文
posted @
2022-02-23 10:50
池塘里洗澡的鸭子
阅读(842)
推荐(0) 编辑
MySQL中锁机制实现原理
摘要:JMM之Java中锁概念的分类总结 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了JMM中锁的分类,在 MySQL中锁又有很多不同的分类: 1、从操作的粒度可分为表级锁、行级锁和页级锁。 表级锁:每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISA
阅读全文
posted @
2022-02-23 10:04
池塘里洗澡的鸭子
阅读(1063)
推荐(0) 编辑
MySQL事务之隔离级别
摘要:在MySQL事务之控制演进 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中提到对于并发事务,采用锁机制解决。对于并发中出现的数据一致性问题,如“更新丢失”、”脏读”、“不可重复读”和“幻读”等,MySQL数据库是通过事务隔离级别来解决的,数据库系统提供了以下 4 种事务隔离级别供用户
阅读全文
posted @
2022-02-22 12:47
池塘里洗澡的鸭子
阅读(89)
推荐(0) 编辑
MySQL事务之控制演进
摘要:在JMM之Java中锁概念的分类总结 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了锁的分类及相关内容,MySQL事务控制管理同样涉及这些锁。MySQL是如何通过锁进行事务控制的呢? 下面介绍MySQL中的并发事务演进过程: 1、不使用锁,排队处理事务 是事务管理最简单的方法,
阅读全文
posted @
2022-02-22 12:26
池塘里洗澡的鸭子
阅读(55)
推荐(0) 编辑
MySQL索引原理之慢查询等优化
摘要:索引一般查询使用,索引优化那就是查询的效率低了,需要通过调整索引来提供查询效率。那么怎么判断这个查询的效率低了是慢查询呢?MySQL判断一条语句是否为慢查询语句,主要依据SQL语句的执行时间,它把当前语句的执行时间跟 long_query_time 参数做比较,如果语句的执行时间 > long_qu
阅读全文
posted @
2022-02-22 11:08
池塘里洗澡的鸭子
阅读(141)
推荐(0) 编辑
MySQL索引原理之索引分析
摘要:在实际生产中经常会遇到关于数据库性能优化方面的问题,怎么入手呢?首先得分析,MySQL 提供了一个 EXPLAIN 命令,它可以对 SELECT 语句进行分析,并输出 SELECT 执行的详细信息,供开发人员有针对性的优化。 下面从explain命令开始介绍索引分析需要的相关术语: 1、explai
阅读全文
posted @
2022-02-21 20:03
池塘里洗澡的鸭子
阅读(174)
推荐(0) 编辑
MySQL索引原理之索引原理
摘要:索引定义:是存储引擎用于快速查找记录的一种数据结构,需要额外开辟空间和数据维护工作。 索引是物理数据页存储,在数据文件中(InnoDB,ibd文件),利用数据页(page)存储。 索引可以加快检索速度,但是同时也会降低增删改操作速度,索引维护需要代价。 索引涉及的理论知识:二分查找法、Hash和B+
阅读全文
posted @
2022-02-21 13:01
池塘里洗澡的鸭子
阅读(150)
推荐(0) 编辑
MySQL索引原理之索引类型
摘要:MySQL索引原理之索引原理 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了索引的原理,那么根据索引的原理及其维护可以将索引分类,可参考下图: 索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下: 1)从索引存储结构划分:B Tree索
阅读全文
posted @
2022-02-21 12:20
池塘里洗澡的鸭子
阅读(112)
推荐(0) 编辑
MySQL架构原理之存储引擎InnoDB_Redo Log和BinLog
摘要:Redo Log和Binlog是MySQL日志系统中非常重要的两种机制,有很多相似之处同时也有差别,本文探究两者细节和区别。 一、Redo Log 1、Redo Log介绍 Redo:顾名思义就是重做。以恢复操作为目的,在数据库发生意外时重现操作。 Redo Log:指事务中修改的任何数据,将最新的
阅读全文
posted @
2022-02-21 11:38
池塘里洗澡的鸭子
阅读(133)
推荐(0) 编辑
MySQL架构原理之存储引擎InnoDB_Undo Log
摘要:Undo:意为撤销或取消,以撤销操作为目的,返回某个指定状态的操作。 Undo Log:数据库事务开始之前会将要修改的记录存放到Undo日志里,当事务回滚时或者数据库崩溃时可以利用Undo日志撤销为提交事务对数据库产生的影响。 Undo Log产生和销毁:Undo Log在事务开始前产生;事务在提交
阅读全文
posted @
2022-02-19 10:22
池塘里洗澡的鸭子
阅读(158)
推荐(0) 编辑
Dubbo源码剖析六之SPI扩展点的实现之Adaptive功能实现原理
摘要:接Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)继续分析Adaptive功能实现原理。Adaptive的主要功能是对所有的扩展点进行封装为一个类,通过URL传入参数的时动态选择需要使用的扩展点(参考Dubb
阅读全文
posted @
2022-02-18 06:18
池塘里洗澡的鸭子
阅读(64)
推荐(0) 编辑
Dubbo源码剖析六之SPI扩展点的实现之getExtension
摘要:上文Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中分析了getExtensionLoader,本文继续分析SPI扩展点实现的getExtension。 通过方法名称不难看出其功能是根据name加载指定扩展
阅读全文
posted @
2022-02-18 06:04
池塘里洗澡的鸭子
阅读(45)
推荐(0) 编辑
Dubbo源码剖析五之服务本地缓存
摘要:Dubbo调用者需要通过注册中心(例如:ZK)注册信息,获取提供者。但是如果频繁从ZK获取信息肯定会存在单点故障问题,所以Dubbo提供了将提供者信息缓存在本地的方法。 Dubbo在订阅注册中心的回调处理逻辑当中会保存服务提供者信息到本地缓存文件当中(同步/异步两种方式),以URL维度进行全量保存。
阅读全文
posted @
2022-02-17 20:12
池塘里洗澡的鸭子
阅读(520)
推荐(0) 编辑
Dubbo源码剖析三之服务注册过程分析
摘要:Dubbo源码剖析二之注册中心 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中对注册中心进行了简单的介绍,对Dubbo整合Zookeeper链接源码进行了详细分析。本文接着对服务注册过程源码进行分析。 借图说明服务注册(暴露)流程: 利用之前案例跟踪调试分析上述流程的实现,或者验证该
阅读全文
posted @
2022-02-17 14:59
池塘里洗澡的鸭子
阅读(288)
推荐(0) 编辑
Dubbo源码剖析一之整体架构设计
摘要:Dubbo基础二之架构及处理流程概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中进行Dubbo职能上的简单介绍,下面就其内部进行详细探究: 1、Dubbo调用关系 这个图是不是很熟悉,但是又好像有点不一样。是的,此图将架构概述中的服务消费者和提供者进行了细化,详解如下: 同时整个
阅读全文
posted @
2022-02-17 11:49
池塘里洗澡的鸭子
阅读(53)
推荐(0) 编辑
Dubbo扩展点应用之六服务动态降级
摘要:服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别以释放服务器资源保证核心任务的政策运行。 为什么要使用服务降级呢?这是为了防止分布式服务发送雪崩效应,也就是蝴蝶效应:当一个请求发送超时,一致等待中服务响应,那么在高并发情况下,很多请求都是因为这样一直等待响应知
阅读全文
posted @
2022-02-17 10:35
池塘里洗澡的鸭子
阅读(147)
推荐(0) 编辑
Dubbo扩展点应用之三异步调用
摘要:Dubbo不只提供了堵塞式的同步调用,同时提供了异步调用的方式。这种方式主要应用于提供者接口响应耗时明显,消费者端可以利用调用接口的时间去做一些其他的接口调用,利用Future模式来异步等待和获取结果即可(参考FutureTask类的get方法如何实现线程同步等待 - 池塘里洗澡的鸭子 - 博客园
阅读全文
posted @
2022-02-17 09:47
池塘里洗澡的鸭子
阅读(97)
推荐(0) 编辑
Dubbo扩展点应用之二负载均衡
摘要:负载均衡其本质就是将请求分摊到多个操作单元上进行,从而共同完成工作任务。其策略主要用于客户端春常在多个提供者时根据算法选择某个提供者。在集群负载均衡时,Dubbo提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性Hash等),缺省为随机调用(具体可参考dubbo官网)。 配置负载均衡,既可以
阅读全文
posted @
2022-02-17 09:24
池塘里洗澡的鸭子
阅读(90)
推荐(0) 编辑
Dubbo基础三之配置方式简述
摘要:Dubbo基础一之实战初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中,体验了两种配置方式一种注解一种xml。其中xml是在注解配置失败没有找到解决方法后选择xml替代体验的。那么Dubbo支持多少中配置方式呢?一般分为以下几种且每种配置方式各有不同: 1)注解:基于注解可以快
阅读全文
posted @
2022-02-16 11:21
池塘里洗澡的鸭子
阅读(514)
推荐(0) 编辑
Dubbo基础二之架构及处理流程概述
摘要:Dubbo基础一之实战初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中体验了Dubbo的使用,对于消费端对服务提供者的调用非常清晰明确。那么Dubbo是如何做到的呢?下面对Dubbo的架构及处理流程做简单概述。 Apache Dubbo是一款高性能的Java RPC框架,其前身
阅读全文
posted @
2022-02-16 10:52
池塘里洗澡的鸭子
阅读(88)
推荐(0) 编辑
MySQL架构原理之存储引擎InnoDB数据文件
摘要:MySQL架构原理之体系架构 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中简单介绍了MySQL的系统文件层,其中包含了数据文件。那么InnoDB的数据文件是如何分类并存储的呢? 一、InnoDB文件存储结构 InnoDB数据文件存储结构分为: 一个ibd数据文件-->Segment
阅读全文
posted @
2022-02-16 09:57
池塘里洗澡的鸭子
阅读(197)
推荐(0) 编辑
MySQL架构原理之存储引擎InnoDB线程模型
摘要:如下图示,为InnoDB线程模型示意图: 1、IO Thread 在InnoDB中使用了大量的AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能。其提供了write/read/insert buffer/log Thread。 2、Purge Thread 事务提交之后,其使用的u
阅读全文
posted @
2022-02-15 23:25
池塘里洗澡的鸭子
阅读(132)
推荐(0) 编辑
MySQL架构原理之运行机制
摘要:所谓运行机制即MySQL内部就如生产车间如何进行生产的。如下图: 1、建立连接,通过客户端/服务器通信协议与MySQL建立连接。MySQL客户端与服务端的通信方式是"半双工"。对于每一个MySQL的连接,时刻都有一个线程状态来标识这个连接正在做什么。 通信机制: 线程状态: show process
阅读全文
posted @
2022-02-15 17:36
池塘里洗澡的鸭子
阅读(478)
推荐(0) 编辑
MySQL架构原理之体系架构
摘要:MySQL是最流行的关系型数据库软件之一,由于其体量小、速度快、开源免费、简单易用、维护成本低等,在季军架构中易于扩展、高可用等优势,深受开发者和企业的欢迎,在互联网行业广泛使用。 其系统架构如下: MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。 1、网络
阅读全文
posted @
2022-02-15 11:20
池塘里洗澡的鸭子
阅读(90)
推荐(0) 编辑
排序——基数排序技术
摘要:基数排序是一种借助于多关键码排序的思想,是将单关键码按基数分成“多关键码”进行排序的方法。它的排序思想不是通过关键码之间的比较而是通过多次的“分配”和“收集”来完成的。 1、多关键码排序 举个大家都很熟悉的扑克牌的例子:扑克牌中的52张牌,可按花色和面值分成两个属性,设其大小关系为: 花色:梅花 <
阅读全文
posted @
2022-02-14 10:47
池塘里洗澡的鸭子
阅读(117)
推荐(0) 编辑
排序——归并排序技术
摘要:归并排序的思想是将几个相邻的有序表合并成一个总的有序表,下面主要讨论二路归并排序。 1、两个有序表的合并 二路归并排序的基本操作是将两个相邻的有序表合并为一个有序表。下面是将两个顺序存储的有序表合并为一个有序表的算法: 设两个有限子表R[s]……R[m]和R[m+1]……R[t],将两个有序子表合并
阅读全文
posted @
2022-02-14 09:55
池塘里洗澡的鸭子
阅读(65)
推荐(0) 编辑
排序——选择排序技术
摘要:选择排序主要是每一趟从待排序列中选取一个关键码最小的记录,也即第1趟从n个记录中选取关键码最小的记录,第2趟从剩下的n-1个记录中选取关键码最小的记录知道整个序列的记录选完。这样,由选取记录的顺序便得到按关键码有序的序列。 1、简单选择排序 简单选择排序的过程为:第1趟,从n个记录中找出关键码最小的
阅读全文
posted @
2022-02-13 19:56
池塘里洗澡的鸭子
阅读(119)
推荐(0) 编辑
排序——交换排序技术
摘要:交换排序的基本思想是:排序表中两个记录关键码的进行比较,若与排序要求相逆,则将二者进行交换知道没有反序的记录为止。 1、冒泡排序 设排序表为R[1]……R[n],对n个记录的排序表进行冒泡排序(Bubble Sort)的过程是:第1趟,从第1个记录开始到第n个记录,对n-1对相邻的两个记录关键码进行
阅读全文
posted @
2022-02-12 21:01
池塘里洗澡的鸭子
阅读(71)
推荐(0) 编辑
排序——插入排序技术
摘要:插入排序的基本思想是:每次将一个待排序的记录,按其关键字的大小插入到它前面已经排好序的子表的适当位置;直到全部记录插入完成,整个表有序为止。 1、直接插入排序 直接插入排序是一种简单的插入排序方法,其基本思想为:在R1至Ri-1长度为i-1的子表已经有序的情况下,将Ri插入得到R1至Ri长度为i的子
阅读全文
posted @
2022-02-11 16:33
池塘里洗澡的鸭子
阅读(106)
推荐(0) 编辑
查找——树结构查找技术
摘要:树结构查找就是将查找表按照某种规律建成树结构。因为构建的树结构是按某种规律建立的,所以查找过程也遵循这种规律可以获得较高的查找效率。下面介绍两种二叉树: 一、二叉排序树 1、二叉排序树的定义 二叉排序树(Binary Sort Tree)或者是一棵空树或者是具有下列性质的二叉树: 1)若左子树不空,
阅读全文
posted @
2022-02-10 22:08
池塘里洗澡的鸭子
阅读(410)
推荐(0) 编辑