shell 用于接受用户命令传递给 os 执行 image.png|500 基本导航与查看 pwd pwd,展示当前目录绝对路径 ls list,列出当前目录下的文件 参数: -l 列出每个文件的属性,一般都会有 ll 的缩写 drwxr-xr-x@ 2 fling staff 64 5 24 15:42 test ^ ^ ^ ^ ^ ^ ^ ^ ^ ^...
概述 主从复制是指将主数据库的DDL 和 DML 操作通过二进制日志 binlog 传到从库服务器中,然后在从库上对这些日志重新执行 也叫重做,从而使得从库和主库的数据保持同步 优点: 主库宕机,可切换到从库 读写分离 从库可以执行备份,即使加了全局锁依旧可以读 image.png|500 原理 流程: 主库处理事物提交时,会记录数据变更 row 或 statement (DDL、DML) 到二进制日志文件 bin...
错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,建议首先查看此日志 该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log。查看日志位置: show variables like'%log_error%" 二进制日志 二进制日志 BINLOG 记录了所有的数据定义语言 DDL 和数据操纵语言 DML,但不包括数据查询 SELECT、SHOW 语句 作用: 灾...
逻辑存储结构 image.png|500 在 InnoDB 存储引擎中,每行数据包含了表中所定义的所有字段的值之外,还包括以下几个重要的东西: 6 字节的事务 ID trx id 在 InnoDB 中,每个事务都会被赋予一个唯一的事务 ID,并且每行数据都包含了这个事务 ID 的值,用于实现事务级别的多版本并发控制 MVCC 7 字节的回滚指针 roll pointer 为了支持事务的回滚操作,在每个行数据中都会包含一个指向回滚日志里...
锁介绍 MySQL 中的锁,按照锁的粒度分为以下三类: 全局锁:锁定数据库中的所有表 表级锁:每次操作锁住整张表 行级锁:每次操作锁住对应的行数据 全局锁 全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续 DML 的写语句,DDL 语句,已经更新操作的事务提交语句都将被阻塞 典型场景是锁定所有表进行全库备份,如果不加锁,就如下图,可能出现产生了订单但是库存没有扣减的数据不一致 image.png|500 ...
Redis 底层 C 语言 数据结构 动态字符串 SDS Redis 并没有使用 C 语言的 String,因为它实际上是字符数组 例子: char* s="hello" 为 {'h', 'e', 'l', 'l', 'o', '\0'} 所以Redis构建了一种新的字符串结构,称为简单动态字符串 Simple Dynamic String,简称 SDS image.png|500 这里读取不根据 '\0' 只是为了符合 ...
用户空间、内核空间 image.png|500 IO 模型 《UNIX 网络编程》 总结了五种 IO 模型 阻塞 IO / Blocking IO 非阻塞 IO / Nonblocking IO IO 多路复用 / IO Multiplexing 信号驱动 IO / Signal Driven IO 异步 IO / AsyncAsynchronous IO 用户空间的用户缓冲区向内核空间的内核缓冲区 **...
内存回收 Redis之所以性能强,最主要的原因就是基于内存存储,然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能 配置文件中可以设置 redis 最大内存 maxmemory 如 maxmemory 1gb,当内存达到上限就无法继续存储数据 所以引出了内存回收策略 过期策略 expire 可以给 key 设置存活时间 TTL,当过期后再访问得到的就是 nil  客户端 client 向服务端 server 发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议 RESP:redis serialization protocol 学习 RESP2 协议,在 2.0 版本推出,6.0 升级为 RESP3 但因为变化过大仍默认使用 RESP2 协议 RESP 协议数据类型 对于单行字符串、错误、数据都是二进制不安全的,如果...
多级缓存跳过 键值设计 优雅的 key 结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id] 长度不超过44字节 不包含特殊字符 例如:我们的登录业务,保存用户信息,其key是这样的: login:user:10 优点: 可读性强 避免key冲突 方便管理 更节省内存:key是string类型,底层编码包含int、embstr和raw三种。embstr在小于44字节使用,采用连续内存空间,内存占用更小 set num 123 如果 type num 得到...