数据库和中间件
有关数据库和中间件相关的干货
全菜工程师小辉
微信公众号:全菜工程师小辉。欢迎关注~
展开
-
Redis哨兵(Sentinel)模式快速入门
当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 所以更多时候,我们优先考虑哨兵(sentinel) 模式。Redis sentinel是Redis高可用实现方案:故障发现、故障自动转移、配置中心、客户端通知。从Redis的2.6版本开始提供的,但是当时这个版本的模式是不稳定的,直到Redis的2.8版本以后,这个哨兵模式才稳定...原创 2019-05-29 08:00:00 · 5956 阅读 · 0 评论 -
Redis主从复制的原理
在Redis集群中,让若干个Redis服务器去复制另一个Redis服务器,我们定义被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),这种模式叫做主从复制模式。数据流向是单向的,只能是从master到slave一个slave只能有一个master主从复制的作用 为数据提供多个副本,实现高可用 实现读写分离(主节点...原创 2019-05-28 08:00:00 · 6075 阅读 · 1 评论 -
Redis的过期键删除策略和数据逐出策略
Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制。在实际生产环境中使用Redis时,偶然会觉得Redis的内存占用要比自己预想的大。事实上,Redis占用的内存除了保存键值对所需的开销外,还有一些运行时产生的额外内存,包括: 过期Key所占空间 渐进式Rehash导致未及时删除的空间 Redis管理数据,包括底层数据结构开销,客户端信息,读...原创 2019-07-25 08:00:00 · 5484 阅读 · 1 评论 -
彻底搞懂Redis的线程模型
为了接下来一篇博客,能使读者更加完整地学习线程模型,所以本文对Redis的线程模型进行必要的讲解。由于《Redis设计与实现》对于Redis的讲解简练优雅,所以本文大部分内容节选自本书,也欢迎对Redis有更多底层了解需求的读者,自行购买学习。文件事件处理器Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多...原创 2019-08-03 08:00:00 · 26024 阅读 · 6 评论 -
彻底搞懂MySQL的索引
前言MyISAM和InnoDB是MySQL最常用的两个存储引擎,本文将进行详尽的介绍和对比。对于MySQL其余几种存储引擎,请读者自行搜索学习。本文会图解两种引擎的索引结构区别,然后讲解索引的原理,理解本文内容,就能够理解索引优化的各种原则的背后原因。限于篇幅,本篇没有介绍的知识,会在后续博客将逐一讲解。例如:MySQL引擎的锁机制、多列索引的生效规则、索引优化等主题。下面SQL在...原创 2019-08-12 08:00:00 · 3113 阅读 · 1 评论 -
explain的属性详解与提速百倍的优化示例
在MySQL中,可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。EXPLAIN命令虽然没有提供任何优化建议,但它能够提供重要的信息有助于调优决策。EXPLAIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。使用方法在要查询的SQL语句前加上explain,然后执行...原创 2019-08-19 08:00:00 · 2654 阅读 · 1 评论 -
MySQL索引原理及慢查询优化[转]
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最...转载 2019-08-18 13:11:49 · 540 阅读 · 0 评论 -
MySQL服务器参数配置
本文是笔者整理了慕课网的《全面讲解MySQL架构设计》的第二章内容,提取出来的博客,方便在实际生产用按照属性条目,一条条进行配置和调优。课程链接:https://coding.imooc.com/class/chapter/49.html#AnchorMySQL服务器参数介绍mysql参数介绍(客户端中执行),尽量只修改session级别的参数。全局参数(新连接的session才会...转载 2019-08-23 13:01:29 · 2464 阅读 · 0 评论 -
彻底搞懂JDBC的运行过程
前几天笔者发布了博客手写mybatis彻底搞懂框架原理。为了帮助初学者更好理解mybatis框架,这次讲解一下Java的JDBC的运行过程。JDBC的作用JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,...原创 2019-07-22 08:00:00 · 13137 阅读 · 6 评论 -
浅析数据库与缓存的双写一致性问题
缓存由于其高并发和高性能的特性,在项目中被广泛使用。读缓存流程如下图:双写一致性有以下三个要求:缓存不能读到脏数据缓存可能会读到过期数据,但要在可容忍时间内实现最终一致这个可容忍时间尽可能的小要想同时满足上面三条,可以采用读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况。但是,串行化之后,就会导致系统的吞吐量会大幅度的降低,要用比正常情况下多几倍的...原创 2019-06-10 22:21:16 · 6311 阅读 · 0 评论 -
mysql 多列索引的生效规则
原文地址:http://www.cnblogs.com/codeAB/p/6387148.htmlmysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要,只需要知道结果,既然是索引那这个数据结构最后是排好序;就像新华字典他的目录就是按照a,b,c..这样排好序的;所以你在找东西的时候才快,比如你找 “中”转载 2017-09-06 10:22:14 · 2221 阅读 · 0 评论 -
Redis的高级特性一览
应用场景:缓存系统:用于缓解数据库的高并发压力计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等排行榜:使用zset数据结构,进行排行榜计算实时系统:使用Redis位图的功能实现布隆过滤器,进而实现垃圾邮件处理系统消息队列:使用list数据结构,消息发布者push数据,多个消息订阅者通过阻塞线程pop数据,以此提供简单的消息队列能力之所以说简单,是Re...原创 2019-05-25 19:27:48 · 5579 阅读 · 0 评论 -
Redis持久化的原理及优化
Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。RDB保存数据快照至一个RDB文件中,用于持久化。RDB操作和Mysql Dump相似。执行方式save。同步操作,会阻塞Redis。bgsave。调用linux的fork(),然后使用新的线程执行复制。但是fork期间也会阻塞Redis,但...原创 2019-05-26 09:00:56 · 5527 阅读 · 0 评论 -
一文搞定MySQL性能调优
公众号回复关键词获取免费学习资料,加入前后端技术交流群和副业群。新建立的副业Q群:735764906。数据库的操作越来越成为整个应用的性能瓶颈,这对于Web应用尤其明显。关于数据库的性能,这并不只是DBA需要关心的,而更是后端开发需要去关注的事情。所以本文讲解MySQL在各个方面的优化方向,方便后端开发人员在调优和问题排查过程中找到切入点。本文目录如下:目录服务器硬件的优化...原创 2019-09-03 08:00:00 · 9669 阅读 · 2 评论