数据库
数据库
Xzzz2020
个人博客地址:https://xzzz2020.gitee.io/,可以收藏一下,会第一时间发布文章
展开
-
Redis 缓存设计与优化
一、缓存的收益与成本1.1 收益主要有以下两大收益。加速读写:通过缓存加速读写,如 CPU L1/L2/L3 的缓存、Linux Page Cache 的读写、游览器缓存、Ehchache 缓存数据库结果。降低后端负载:后端服务器通过前端缓存来降低负载,业务端使用 Redis 来降低后端 MySQL 等数据库的负载。1.2 成本产生的成本主要有以下三项。数据不一致:这是因为缓存层和数据层有时间窗口是不一致的,这和更新策略有关的。代码维护成本:这里多了一层缓存逻辑,就会增加成本。运维费原创 2020-05-17 16:50:51 · 211 阅读 · 0 评论 -
Redis-Cluster
目录一、呼唤集群二、数据分布2.1 为什么要做数据分布2.2 常用数据分布方式之顺序分布2.3 常用数据分布方式之哈希分布2.3.1 节点取余分区2.3.2 一致性哈希分区2.3.3 虚拟槽分区2.3.4 总结2.4 两种分布的对比三、Redis Cluster基本架构3.1 简介3.2 meet操作3.3 分配槽四、集群伸缩五、客户端路由5.1 moved重定向5.1.2 槽命中:直接返回5.1.3 槽不命中:moved异常5.2 ask重定向5.3 smart智能客户端六、批量操作实现6.1 串行mge原创 2020-05-17 14:42:31 · 315 阅读 · 0 评论 -
Redis Sentinel
目录主从复制高可用问题主从复制-master宕掉Redis Sentinel架构配置主从复制高可用问题手动故障转移就是一旦主节点出现故障,那么故障转移基本上是需要手工来完成的。写能力和存储能力受限写只能写在一个节点上,而且存储也是在一个节点上进行存储。(分布式解决)主从复制-master宕掉当master发生宕机时,那么复制也必然断掉了,而从节点与主节点的连接肯定也是失败的,这样数据的读取是正常的,但是数据的更新就无法保障了。首先要选择一个slave执行命令 slave n原创 2020-05-16 21:04:51 · 125 阅读 · 0 评论 -
Redis的复制原理及优化
目录单机有什么问题?1. 机器故障2. 容量瓶颈3. QPS瓶颈主从复制的作用一主一从一主多从读写分离总结主从复制的配置slaveof命令修改配置配置主节点的IP和端口号全量复制全量复制的开销单机有什么问题?单机即在一台机器上部署一个redis节点,主要会存在以下问题:1. 机器故障如果发生机器故障,例如磁盘损坏,主板损坏等,未能在短时间内修复好,客户端将无法连接redis。当然如果仅仅是redis节点挂掉了,可以进行问题排查然后重启,姑且不考虑这段时间对外服务的可用性,那还是可以接受的。而发生原创 2020-05-16 17:14:54 · 166 阅读 · 0 评论 -
Redis持久化的取舍和选择
目录持久化的作用一、RDB(默认)触发机制 - 主要三种方式save命令bgsave命令(异步)自动生成RDB两种方式对比其他触发总结二、AOFRDB的问题耗时、耗性能不可控、丢失数据AOF运行原理AOF的三种策略三种策略选择AOF重写AOF重写作用AOF重写实现两种方式AOF重写流程AOF相关配置RDB VS AOF持久化的作用redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘上。有两种方式可以选择:一、RDB(默认)什么是RDB?通过一条命令将当前redis内存数据完整的生成原创 2020-05-16 15:36:02 · 437 阅读 · 0 评论 -
瑞士军刀Redis
目录主要功能慢查询生命周期配置pipeline介绍与原生M操作使用建议发布订阅简介相关API消息队列 VS 发布订阅总结:Bitmap(位图)简介相关API举例:独立用户统计总结HyperLogLog三个命令总结GEO简介相关API主要功能慢查询生命周期如图所示为客户端请求到Redis的完整生命周期:发送命令、排队、执行命令、返回结果配置有两点说明:慢查询发生在第三阶段(也就是说其他阶段像排队耗时都不算)客户端超时不一定慢查询,因为这四个过程都可能造成超时,但慢查询是客户端超时的一个可原创 2020-05-16 10:50:51 · 256 阅读 · 0 评论 -
Redis API的使用和理解
目录通用命令单线程数据结构字符串场景常用操作实战1实战2实战3hash常用操作(与String类似)String VS HashList重要API实战小技巧Set重要API实战1实战2Zset集合 VS 有序集合列表 VS 有序集合重要API实战通用命令keys [parten] :获得数据库中所有的键--------(O(n),一般不会用)dbsize:算出key的总数exists key:判断key是否存在,存在返回1del [key ... ]:删除多个keyexpire key se原创 2020-05-14 21:36:43 · 175 阅读 · 1 评论 -
Redis初识
Redis是什么开源基于键值的存储服务系统多种数据结构高性能、功能丰富Redis的特性速度快持久化多种数据结构支持多种编程语言主从复制高可用、分布式速度快读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。原因:数据是存放在内存中(主要原因)使用C语言实现使用单线程的线程模型持久化(断电数据不丢失)Redis将所有的数据保存在内存中,对数据的更新将异步的保存在磁盘中,支持AOF和RDB两种持久化方式。多种数据结构除了支原创 2020-05-14 15:00:14 · 168 阅读 · 0 评论 -
【详解】高并发场景下分库分表的高频面试题
目录为什么要分库分表(设计高并发系统的时候,数据库层面应该如何设计)?为什么要分库为什么要分表具体如何对数据库进行垂直拆分或水平拆分?水平拆分的概念垂直拆分的概念水平拆分(分库)和垂直拆分(分表)的场景分库分表的两个方案为什么要分库分表(设计高并发系统的时候,数据库层面应该如何设计)?首先要清楚,分库和分表是两回事,是两个独立的概念。分库和分表都是为了防止数据库服务因为同一时间的访问量(增删...原创 2020-04-18 10:48:58 · 387 阅读 · 0 评论 -
【详解】MySQL高级特性
目录1. 分区表1.1 原理1.2 分区表类型1.3 分区的作用1.4 分区的问题2. 查询缓存1. 分区表分区表是一个独立的表,由多个子表组成分区表是对底层表的封装,索引也只是每个分区的索引而不是全局索引作用表特别大的时候,其中只有一部分是热点数据,其他的都是历史数据分区表的数据更容易维护,可以单独对一个分区执行一些操作,如删除、优化、检查、修复、备份等。分区表分布在不同物理...原创 2020-04-12 15:20:22 · 643 阅读 · 0 评论 -
【详解】MySQL查询性能优化
目录1. 为什么查询会慢2.慢查询基础:优化数据访问2.1 是否向数据库请求了不需要的数据2.2 MySQL是否在扫描额外的记录3. 重构查询的方式3.1 切分大查询3.2 分解关联查询4. 查询优化器4.1 查询优化器的工作4.2 局限性5. 总结1. 为什么查询会慢如果把查询当作一个任务,那么它是由一系列子任务完成的如果要优化查询,要么减少子任务,要么减少子任务的执行次数,让子任务更快...原创 2020-04-11 21:19:09 · 360 阅读 · 0 评论 -
【详解】 MySQL创建高性能的索引
目录1. 索引基础2. 索引的优点3. 高性能索引策略3.1 独立的列3.2 前序索引和索引选择性3.3 多列索引3.4 索引列的顺序3.5 覆盖索引3.6 聚簇索引3.7 按照主键顺序插入数据3.8 覆盖索引3.9 避免建立重复索引3.10 索引和锁4. 索引的使用条件5. 总结1. 索引基础索引的类型B+树和全文索引详情请见:https://blog.csdn.net/qq_43040...原创 2020-04-11 17:37:01 · 191 阅读 · 0 评论 -
【详解】MySQL架构
目录1. MySQL逻辑架构2. 并发控制3. 事务4. 多版本并发控制(MVCC)5. 存储引擎5.1 InnoDB5.2 MyISAM5.3 比较5.4 引擎的选择1. MySQL逻辑架构线程处理每个服务的的连接都会有一个线程,对数据库的查询只会在这个线程中进行MySQL5.5之后支持线程池。可以利用少量的线程来服务大量的服务连接优化和执行MySQL会解析查询,并在内部创建...原创 2020-04-11 16:03:52 · 242 阅读 · 0 评论 -
【详解】MySQL备份
目录1. 备份的方法2. 备份的内容3. 冷备份3. 逻辑备份4. 二进制日志的备份与恢复5. 热备份7. 主从复制8. 读写分离1. 备份的方法热备份:在数据库运行中备份,不会对数据库造成影响冷备份:在数据库关闭后备份,直接拷贝即可温备份:在数据库运行中备份,需要加一个全局锁以保证数据的一致性2. 备份的内容完全备份: 对数据库进行一个完整的备份增量备份:在上次备份的基础上,...原创 2020-04-10 21:32:03 · 232 阅读 · 0 评论 -
【详解】MySQL事务
1. 事务概述事务是区别文件系统的重要特征之一保证数据库的完整性,要么都做,要么都不做ACID原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状...原创 2020-04-10 20:54:17 · 177 阅读 · 0 评论 -
【详解】MySQL锁
目录1. 什么是锁2. InooDB的锁2.1 锁的类型2.2 一致性的非锁定读操作3 锁的问题3.1 丢失更新3.2 脏读3.3 不可重复读1. 什么是锁用于共享资源的并发访问,如果加锁,就不允许其他人对其进行操作InooDB支持行锁,MyISAM只支持表锁,在并发插入时,性能差InooDB的行锁没有相关开销,所以可以设置很多,也不会出现锁升级2. InooDB的锁2.1 锁的类...原创 2020-04-10 20:12:15 · 266 阅读 · 0 评论 -
【详解】MySQL 索引
参数文件原创 2020-04-10 18:38:57 · 197 阅读 · 0 评论 -
【详解】MySQL的InnoDB存储引擎
目录1. InnoDB存储引擎体系架构内存2 master thread2.1 源码分析2.1.1 主循环(loop)2.1.2 background loop2.2 master thread潜在的问题3. 关键特性3.1 插入缓存3.2 两次写3.3 自适应哈希索引4. InnoDB Plugin1. InnoDB存储引擎体系架构内存块:维护所有进程/线程需要访问的多个内部数据结构...原创 2020-04-09 20:00:30 · 572 阅读 · 0 评论 -
【详解】MySQL体系结构和存储引擎
目录1. 定义数据库和实例1. 定义数据库和实例原创 2020-04-09 16:59:54 · 204 阅读 · 1 评论 -
《Mysql必知必会》笔记---补充部分
目录1. 全文本搜索2. 更新数据3. 视图4. 存储过程&触发器&管理事务1. 全文本搜索并不是所有的引擎都支持全文本搜索,只有MyISAM支持使用LIKE和正则在搜索的确定性能上十分差,因为要检索所有的行很难明确控制匹配什么不匹配什么.无法提供智能化的结果,如果一个词没有出现则不会返回该结果使用全文本搜索必须索引被搜素的列,而且要随着数据的变换不断的改...原创 2020-04-08 17:43:32 · 189 阅读 · 1 评论 -
《Mysql必知必会》笔记---重要部分
目录1.使用数据处理函数2. 汇总数据1.使用数据处理函数文本处理函数soundex用来匹配发音日期和时间处理函数使用where语句进行匹配时,日期默认为"yyyy-mm-dd",即2015-09-01若数据中包含具体的时间值,为了可以匹配某一天,可以使用Date函数,只获取日期部分select cust_id, order_numfrom orderwhere Da...原创 2020-04-07 21:15:39 · 733 阅读 · 2 评论 -
《Mysql必知必会》笔记---基础部分
目录1. Java和Mysql数据类型对应2. 检索数据3. 排序数据4. 过滤数据4.1 基本过滤语句4.2 操作符4.3 通配符5. 用正则表达式进行搜索6. 创建计算列1. Java和Mysql数据类型对应bolb :对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。boolen:对于boolen类...原创 2020-04-06 18:14:36 · 377 阅读 · 1 评论 -
Mysql数据库优化--慢查日志分析工具
安装pt-query-digest工具1.1、快速安装(注:必须先要安装wget)wget https://www.percona.com/downloads/percona-toolkit/2.2.16/RPM/percona-toolkit-2.2.16-1.noarch.rpm && yum localinstall -y percona-toolkit-2.2.16-...原创 2020-03-23 17:52:32 · 349 阅读 · 0 评论 -
Mysql数据库优化--简介
目录为什么要进行数据库优化?1、避免网站页面出现访问错误2、增加数据库的稳定性3、优化用户体验mysql数据库优化SQL及索引优化1、mysql安装与卸载(linux在线安装与卸载)2、数据库版本选择3、表结构关系4、如何发现有问题的SQL为什么要进行数据库优化?1、避免网站页面出现访问错误由于数据库连接timeout产生页面5xx错误由于慢查询造成页面无法加载由于阻塞造成数据无法提交...原创 2020-03-23 17:40:20 · 255 阅读 · 0 评论