文章分类 - 数据库
摘要:一,缓存一致性 我们先看下目前企业用的最多的缓存模型。缓存的通用模型有三种: Cache Aside:缓存调用者自己维护数据库与缓存的一致性。即: 查询时:命中则直接返回,未命中则查询数据库并写入缓存 更新时:更新数据库并删除缓存,查询时自然会更新缓存 Read/Write Through:数据库自
阅读全文
摘要:一,介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 通过MyCat即可轻易实现上述功能,不仅可以支持MySQL,也可以支持0racle和SQLServer。 二,一主一从 MySQL的主从复制
阅读全文
摘要:一,介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 通过MyCat即可轻易实现上述功能,不仅可以支持MySQL,也可以支持0racle和SQLServer。 二,一主一从 MySQL的主从复制
阅读全文
摘要:一,介绍 随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘10,效率较低。 请求数据太多,带宽不够,网络!0瓶颈。 CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU
阅读全文
摘要:一,介绍 随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘10,效率较低。 请求数据太多,带宽不够,网络!0瓶颈。 CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU
阅读全文
摘要:一,Redis内存回收 Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。 我们可以通过修改配置文件来设置Redis的最大内存: # 格式 # maxmemory <bytes> # 例如 maxmemory 1gb 当内存使
阅读全文
摘要:一,Redis内存回收 Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。 我们可以通过修改配置文件来设置Redis的最大内存: # 格式 # maxmemory <bytes> # 例如 maxmemory 1gb 当内存使
阅读全文
摘要:一,RESP协议 1.1 介绍 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和Pubsub) 客户端(client)向服务端(server)发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通
阅读全文
摘要:一,RESP协议 1.1 介绍 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和Pubsub) 客户端(client)向服务端(server)发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通
阅读全文
摘要:一,用户空间和内核空间 二,阻塞IO(Blocking IO) 三,非阻塞IO(NonBlocking IO) 四,IO多路复用(IO Multiplexing) 4.1 介绍 4.2 select 4.3 poll 4.4 epoll select模式存在的三个问题: 能监听的FD最大不超过102
阅读全文
摘要:一,用户空间和内核空间 二,阻塞IO(Blocking IO) 三,非阻塞IO(NonBlocking IO) 四,IO多路复用(IO Multiplexing) 4.1 介绍 4.2 select 4.3 poll 4.4 epoll select模式存在的三个问题: 能监听的FD最大不超过102
阅读全文
摘要:一,动态字符串SDS 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。 可见字符串是Redis中最常用的一种数据结构,不过Redis没有直接使用C语言中的字符串,因为c语言字符串存在很多问题: 获取字符串的长度需要通过运算 非二进制安全 不可修改 Redis构建了
阅读全文
摘要:一,概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。 二,原理 从上图来看,主从复制分成
阅读全文
摘要:一,概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。 二,原理 从上图来看,主从复制分成
阅读全文
摘要:一,错误日志 MySQL 的错误日志(Error Log)是数据库服务器记录运行过程中发生的错误、警告和其他重要信息的重要工具。它对于诊断数据库问题(如启动失败、崩溃、性能异常等)至关重要。 错误日志的位置 默认路径: Linux:通常位于 /var/log/mysql/error.log 或 /v
阅读全文
摘要:一,错误日志 MySQL 的错误日志(Error Log)是数据库服务器记录运行过程中发生的错误、警告和其他重要信息的重要工具。它对于诊断数据库问题(如启动失败、崩溃、性能异常等)至关重要。 错误日志的位置 默认路径: Linux:通常位于 /var/log/mysql/error.log 或 /v
阅读全文
摘要:一,引言 集群虽然具备高可用特性,能实现自动故障恢复,但是如果使用不当,也会存在一些问题: 集群完整性问题 集群带宽问题 数据倾斜问题 当数据出现BigKey,进行数据处理使用了Hash_tag都会出现数据倾斜问题,导致部分节点负担少,部分节点负担中。 客户端性能问题 客户端在访问集群时,需要做节点
阅读全文
摘要:一,引言 集群虽然具备高可用特性,能实现自动故障恢复,但是如果使用不当,也会存在一些问题: 集群完整性问题 集群带宽问题 数据倾斜问题 当数据出现BigKey,进行数据处理使用了Hash_tag都会出现数据倾斜问题,导致部分节点负担少,部分节点负担中。 客户端性能问题 客户端在访问集群时,需要做节点
阅读全文
摘要:一,持久化配置 Redis的持久化虽然可以保证数据安全,但是也会带来额外数据开销,因此持久化请遵守下列建议 用来做缓存的Redis实例尽量不要开启持久化功能 建议关闭RDB持久化功能,使用AOF持久化 利用脚本定期在slave节点做RDB,实现数据备份 设置合理的rewrite阈值,避免频繁的bgr
阅读全文
摘要:一,持久化配置 Redis的持久化虽然可以保证数据安全,但是也会带来额外数据开销,因此持久化请遵守下列建议 用来做缓存的Redis实例尽量不要开启持久化功能 建议关闭RDB持久化功能,使用AOF持久化 利用脚本定期在slave节点做RDB,实现数据备份 设置合理的rewrite阈值,避免频繁的bgr
阅读全文