- 博客(15)
- 收藏
- 关注
原创 Redis分布式锁(五)
主从复制同步流程:1.如果从服务器以前没有复制过任何主服务器,那么从服务器在开始一次新的复制时将向主服务器发送PSYNC?-1命令,请求主服务器进行完整重同步。如果已经复制过某个主服务器,,那么新的复制将向主服务器发送PSYNC runid是上一次复制的主服务器运行id,offset是从服务器当前偏移量。2.如果主服务器返回+FULLRESYNC 回复,表示主服务器和从服务器进行完整重同步。如果返回的是+CONTINUE回复,表示主服务器和从服务器进行部分重同步。
2025-07-23 20:39:20
487
原创 Redis发布和订阅/RDB-AOF(四)
AOF 和 RDB 文件都可以用于服务器重启时的数据恢复。redis 重启时加载 AOF 与 RDB 的顺序是怎么样的呢?1,当 AOF 和 RDB 文件同时存在时,优先加载 AOF2,若关闭了 AOF,加载 RDB 文件3,加载 AOF/RDB 成功,redis 重启成功 4,AOF/RDB 存在错误,启动失败打印错误信息遍历key使用scan,不要使用keys。
2025-07-23 20:18:42
541
原创 Redis高级特性和应用(三)
slowlog-log-slower-than参数可以设置慢查询临界点,比如设置为0,视为记录所有的命令,10000,单位是微妙,则记录超过10ms的查询命令。slowlog-max-len参数可以设置慢查询最多存储多条,假如这个参数是128,当存满128条后,后续第129条会继续入队,队列中第一条数据会出列。
2025-07-23 20:18:28
612
原创 Redis与Java的集成(二)
基本原理HyperLogLog 基于概率论中伯努利试验并结合了极大似然估算方法,并做了 分桶优化。实际上目前还没有发现更好的在大数据场景中准确计算基数的高效算法,因 此在不追求绝对准确的情况下,使用概率算法算是一个不错的解决方案。概率算 法不直接存储数据集合本身,通过一定的概率统计方法预估值,这种方法可以大 大节省内存,同时保证误差控制在一定范围内。目前用于基数计数的概率算法包 括:Linear Counting(LC):早期的基数估计算法,LC 在空间复杂度方面并不算优 秀;
2025-07-23 19:58:47
588
原创 事务的底层原理和MVCC(七)
在 MySQL 中,READ COMMITTED 和 REPEATABLE READ 隔离级别的的一个非 常大的区别就是它们生成 ReadView 的时机不同。还是以表 teacher 为例,假设现在表 teacher 中只有一条由事务 id 为 60 的事务插入的一条记录,接下来看一下 READ COMMITTED 和 REPEATABLE READ所谓的生成ReadView的时机到底不同在哪里。
2025-07-16 16:00:36
1255
原创 Innodb引擎底层解析(六)
InnoDB 的内存结构和磁盘存储结构图总结如下:其中的 Insert/Change Buffer 主要是用于对二级索引的写入优化,Undo 空间 则是 undo 日志一般放在系统表空间,但是通过参数配置后,也可以用独立表空 间存放,所以用虚线表示。
2025-07-16 14:21:45
726
原创 【MySQL的执行原理(五)】
解决这个问题还得回到 B+树索引的结构中来。我们前头说过在 B+数树中定位一条记录的过程是很快的,是常数级别的,所以这个过程的性能消 耗是可以忽略不计的。虽然读取多个二级索引比读取一个二级索引消耗性能,但是大部分情况下读 取二级索引的操作是顺序 I/O,而回表操作是随机 I/O,所以如果只读取一个二级 索引时需要回表的记录数特别多,而读取多个二级索引之后取交集的记录数非常 少,当节省的因为回表而造成的性能损耗比访问多个二级索引带来的性能损耗更 高时,读取多个二级索引后取交集比只读取一个二级索引的成本更低。
2025-07-16 11:06:33
809
原创 MySQL 性能优化(四)
我在用的数据库慢查询开启:阀值是1S开启慢查询:slow_query_log_file 指定慢查询日志得存储路径及文件(默认和数据 文件放一起)小结:slow_query_log 启动停止慢查询日志slow_query_log_file 指定慢查询日志得存储路径及文件(默认和数据 文件放一起)long_query_time 指定记录慢查询日志 SQL 执行时间得伐值(单位: 秒,默认 10 秒)
2025-07-16 11:04:03
921
原创 Mysql(高性能索引)(三)
按照磁盘的这种性质,如果是一个页存放一个B+树的节点,自然是可以存 放很多的数据的,比如 InnoDB 里,默认定义的 B+树的节点大小是 16KB,这就是 说,假如一个 Key 是 8 个字节,那么一个节点可以存放大约 1000 个 Key,意味 着 B+数可以有 1000 个分叉。这个过程也被称为回表。这个是显而易见的,每建立一个索引都要为它建立一棵 B+树,每一棵 B+树 的每一个节点都是一个数据页,一个页默认会占用 16KB 的存储空间,一棵很大 的 B+树由许多数据页组成会占据很多的存储空间。
2025-07-15 20:53:20
742
原创 Mysql表结构设计和数据类型优化(二)
int(M)中的M并不能表示数字的长度,int(M)得和zerofill配合使用,才有效果,简单说就是零填充的作用。
2025-07-15 20:53:05
966
原创 深入学习mysql(二)
mysql锁一、锁的简介1.锁的概念锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。锁对数据库而言显得尤其重要,也更加复杂。二、MyISAM的表锁mysql的表级锁有两种模式: 表共享读锁 和 表独占写锁1.理解读锁和写锁首先我们创建一张存储引擎为myisam的表并往表中插入几条数据create table test
2020-11-10 22:35:38
105
原创 深入学习mysql(一)
深入了解mysqlmysql权限最简单的mysql权限深入研究下 MySQL 权限用户标识是什么用户权限所涉及的表mysql权限最简单的mysql权限相信很多人都说过一句玩笑话,删库跑路哈哈哈~说到删库跑路,那么你是否了解过,如何给mysql设置权限来防止这样的事情发生呢如果你使用的是root权限的账号,你需要给不同的账号来分配权限时,可以使用如下的sql语句来创建对应的账号和权限: grant SELECT on practice.* TO 'dev'@'%' IDENTIFIED BY '
2020-11-04 09:11:49
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人