自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 重学Redis数据结构

在之前《[初识Redis数据类型](https://blog.csdn.net/qq_36011946/article/details/105378057)》一文中,我们已经对 Redis 的数据结构做了简单的介绍,接下来这篇文章的内容主要介绍 Redis 各种数据结构的底层原理与实现。其中可能涉及一些编程语言的相关知识,如C、Java。

2020-06-02 17:08:22 274

原创 为什么阿里巴巴java开发手册不允许在应用中自行显式创建线程

在阅读《java开发手册(泰山版)》时,发现有两条关于并发处理线程池的使用规约,具体内容如下:【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。 如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运

2020-05-21 20:30:51 1176

原创 一不小心,间隙锁引发的报警现场

摘要今天来分享一下我在线上环境遇到的有关MySQL间隙锁的死锁问题。本文将讲述从发现问题到解决问题的全过程,并给出一些个人建议,其中使用的数据将做脱敏处理,但不影响食用口感。发现问题运维同学发现有大量的MySQL死锁日志输出,如果你的系统有对MySQL进行死锁监控,可会在图形界面上很直观的发现这个问题。你会发现日志里有大量下面这样的log输出:Deadlock found when trying to get lock; try restarting transaction定位问题既然知道了

2020-05-10 16:38:27 1070

原创 Redis分布式集群理论与实践

摘要在《Redis Sentinel看完这篇就够了》这篇我们已经讲过了Sentinel的理论和实践了,今天我们再来看看 Redis Cluster (即Redis集群)相关的一下内容。本篇没有涉及复杂难懂的分布式概念的赘述,只是提供了从用户角度如何搭建测试以及使用的方法。前提须知了解Redis Cluster之前,你需要理解分布式系统的CAP理论,这里简单描述一下:C - Consis...

2020-04-30 17:48:36 311

原创 Redis Sentinel看完这篇就够了

文章目录摘要Sentinel功能性质部署前需要了解的基本知识环境部署架构图部署过程部署主从集群部署sentinel集群测试参考摘要现阶段的Redis集群主要有两种,一种是高可用集群,Redis Sentinel,一主多从架构,每个实例都持有完整的数据。另一种是分布式集群,Redis Cluster,多主架构,数据分布在各个实例之间,每个实例都负责数据的读写。今天我们来看看Redis Senti...

2020-04-18 12:28:45 1992

原创 两种Redis持久化方式对比

文章目录两种持久化方式RDB优点缺点AOF优点缺点如何选择使用哪种持久化方式?RDB的工作过程AOF文件的重写如果AOF文件损坏了怎么办?AOF重写过程备份数据参考两种持久化方式Redis 提供了不同级别的持久化方式:RDB:能够在指定的时间间隔能对你的数据进行快照存储。AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加...

2020-04-13 02:27:00 451

原创 浅析Redis复制过程

文章目录摘要复制当 Master 关闭持久化时,复制的安全性复制的工作原理配置只读 Slave写入MasterSlave如何处理key的过期参考摘要Redis默认使用异步复制,其特点是低延迟和高性能。异步复制就意味着在故障转移期间,有丢失数据的风险。你可以参考Redis 集群文档,了解关于高可用性和故障转移的信息,本文主要讨论Redis 复制功能的基本特性。复制在 Redis 复制的基础上...

2020-04-11 17:47:11 485

原创 MySQL最佳性能实践

文章目录摘要1 InnoDB启动配置1.1 系统表空间数据文件配置1.2 重做日志文件配置1.3 页面大小配置1.4 内存配置2 MyISAM启动配置2.1 bulk_insert_buffer_size2.2 delay_key_write=ALL2.3 myisam_max_sort_file_size2.4 myisam_recover_options=mode2.5 myisam_sort...

2020-04-09 23:01:42 386

原创 初识Redis数据类型

文章目录摘要Redis 数据类型Redis keysRedis String关键命令集应用场景Redis List关键命令集应用场景Redis Hash关键命令集应用场景Redis Set关键命令集应用场景Redis Sorted Set关键命令集应用场景通用命令集总结参考摘要Redis 数据类型下列这些数据类型都可作为值类型:StringListSetSorted SetHas...

2020-04-08 02:24:48 288 1

原创 走近InnoDB内存结构

文章目录摘要整体结构内存结构Buffer PoolLRUBuffer Pool ListBuffer Pool配置flushChange BufferLog BufferAdaptive Hash Index参考摘要本文基于MySQL5.7为基础,讨论InnoDB内存结构的相关内容。其中涉及到Buffer Pool、Change Buffer、Adaptive Hash Index和Log B...

2020-04-06 16:10:47 2152 1

原创 一文带你了解关系数据库设计要领

文章目录摘要实体-关系模型(E-R)关系表设计Boyce-Codd范式第三范式存储引擎的选择何如选择?字符集选择如何选择?数据类型的选择选择原则固定长度和可变长度char 与 varchartext 和 blob浮点数和定点数整数索引设计设计原则示例参考摘要本文讨论关系数据库设计相关的一些内容,涉及关系模型,表结构设计等内容,以学生选修课程讲述设计过程,在尽量讲清楚设计要领的前提下,简化设计内...

2020-04-04 02:35:13 2557

原创 更新SQL语句到底时如何执行的

文章目录摘要Redo Log 和 BinlogRedo Log(重做日志)Binlog(归档日志)两份日志更新流程参考摘要本文基于MySQL5.7为基础,讨论与数据库更新数据流程相关的一些内容。关于查询流程的内容,可以参考这一篇《查询SQL语句到底是如何执行的》。Redo Log 和 Binlog其实,更新流程和查询流程都一样,重客户端到存储引擎,到要经历下图中的流程。具体各个组件的作用在...

2020-04-01 01:08:24 567

原创 MySQL事务控制和锁机制

摘要本文基于MySQL5.7为基础,讨论与数据库事务和锁的相关内容。锁机制根据加锁的范围,MySQL里面的锁可以分成全局锁、表级锁和行锁三类。全局锁全局锁能够对整个库实例进行加锁。加锁的语法:FLUSH TABLES WITH READ LOCK;解锁的语法:UNLOCK TABLES;全局锁的典型使用场景是,做全库逻辑备份。应用全局锁做逻辑备份有以下问题:如果你在主...

2020-03-30 18:03:39 1588

原创 B+Tree索引的背后

摘要本文基于MySQL5.7为基础,讨论与数据库索引相关的一些内容。MySQL是一个支持多存储引擎插件的数据库,各种引擎已插件的方式接入,而各种存储引擎对索引的支持各不相同。本文只讨论InnoDB的B+Tree索引,因为这是MySQL引用最广泛的索引,至于哈希索引和全文索引本文暂不讨论。聚集索引和二级索引每个InnoDB表都有一个特殊的索引,称为聚集索引(有的翻译为聚簇索引) ,用于存储行数...

2020-03-20 17:58:26 1983 1

原创 查询SQL语句到底是如何执行的

一个SQL语句到底是如何执行的想必大家对于SQL语句或多或少都有些了解,但你知道SQL语句在MySQL上是怎么运行的么,它到底做了哪些操作呢?SQL执行过程示意图连接器连接器,顾名思义,作用就是与MySQL服务器建立连接用的。连接器负责跟客户端建立连接、维持和管理连接。客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是由参数wait_timeout控制的,默认值是8小时。曾经...

2020-03-16 17:46:20 3082 2

原创 SQL优化之Change语句

INSERT优化插入行所需的时间由以下因素决定,其中数字表示近似比例:连接:(3)向服务器发送查询:(2)解析查询:(2)插入行:(1×行大小)插入索引:(1×索引数)断开连接:(1)您可以使用以下方法来加快插入速度:如果要同时从同一客户端插入许多行,请使用INSERT具有多个VALUES列表的语句一次插入几行。这比使用单独的单行INSERT 语句要快得多(某些情况下要快...

2020-03-16 14:31:16 2859

原创 SQL优化之Select语句

WHERE子句优化删除不必要的括号。 ((a AND b) AND c OR (((a AND b) AND (c AND d))))-> (a AND b AND c) OR (a AND b AND c AND d)常量折叠。 (a<b AND b=c) AND a=5-> b>5 AND b=c AND a=5常量条件消除。 (...

2020-03-10 16:41:24 1870

原创 分布式事务

分布式事务ACID说到事务,先来说一下事务的四个特性ACID:原子性(Atomicity):事务中的所有操作,要么都成功,要么都失败。一致性(Consistency):事务前后数据的完整性必须保持一致。隔离性(Isolation):多个事务之间相互隔离。持久性(Durability):事务一旦被提交,它对数据库中数据的改变就是永久性的,不会被回滚。在接口设计之幂等性设计这篇文章有...

2020-02-08 23:36:16 1627

原创 接口设计之幂等性设计

幂等性设计今天我们来聊聊接口的幂等性设计,所谓幂等,就是任意多次执行所产生的影响均与一次执行的影响相同。 幂等性接口是指可以使用相同参数重复执行,并能获得相同结果的接口。这里就不展开数学中的定义了,有兴趣的可以自行google。为什么接口需要幂等呢?我们都知道,作为接口的调用方,对于接口调用的结果,一般会返回成功、失败和超时。对于成功和失败,都是明确的状态,调用放可以根据结果做相应的处理,但...

2020-02-06 18:33:01 29128 10

原创 缓存常见问题及解决方案

缓存常见问题及解决方案在上一篇文章性能设计之缓存中,已经讲了缓存的设计,在这一篇中主要讲一下关于缓存使用中常见的问题以及处理方案。雪崩雪崩:缓存中大量key在同一时间过期,紧接着的一大波请求同时落在数据库上导致数据库连接异常,甚至崩溃。从上面的描述可知,问题只要出在大量key同时过期,那我们可以翻过来思考一下,如果我们能避免key不在同一时间过期,那雪崩问题不就解决了么。通常的做法有以下两...

2020-02-05 02:11:47 3507 3

原创 性能设计之缓存

缓存在系统中最消耗性能的地方就是对数据库的访问了,一般来说,增、删、改操作不会出现什么性能问题,除非索引太多,并且数据量有十分庞大的情况下,这三个操作才会导致性能问题。一般可以限制单表索引的数量来提升性能,比如单表的索引数量不能超过5个。绝大多数情况下,性能问题都出在查询上,select操作提供了非常丰富的语法,这些语法包括函数,子查询,like子句,where子句等,这些查询都是非常消耗性能...

2020-02-04 00:54:13 791 3

原创 分布式系列之分布式锁

分布式锁在单机多线程环境下,访问共享资源需要保证操作的原子性,而锁机制能提供原子性。在分布式系统下同样需要锁,这就是分布式锁。与前者不同的是,我们需要一个分布式的锁服务。对于分布式所服务的实现,一般可以用关系型数据库、Redis 和 ZooKeeper 等实现。以下三个属性是有效使用分布式锁所需的最低保证:互斥:在任何时候,只有一个客户端能获得锁。无死锁:客户端始终可以获得锁。容错能力:...

2020-02-02 00:20:18 742 3

原创 并发与多线程——线程安全

基本概念并发:在某个时间段内,多任务交替处理的能力。并行:同时处理多任务的能力。并发与并行的目标:尽肯能快的执行完所有任务。并发特点:并发程序之间有相互制约的关系。(1)直接制约:一个程序需要另一个程序的结果。(2)间接制约:程序间竞争共享资源。处理器、缓冲区、磁盘IO等并发程序的执行过程是断断续续的。这与CPU的调度算法有关并发数设置合理并且CPU拥有足够处理能力是...

2018-11-07 02:43:08 607 1

原创 MySQL之安装

安装前,我们可以检测系统是否自带安装 MySQLrpm -qa | grep mysql如果你系统有安装,那可以选择进行卸载:yum remove mysql-libs-5.1.71-1.el6.x86_64官网下载mysql二进制文件,匹配自己的linux版本拷贝文件到/usr/local/ cp mysql-8.0.13-linux-glibc2.1...

2017-04-30 12:46:42 641 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除