聚集索引选取规则: 如果存在主键,主键索引就是聚集索引。 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。回表查询回表查询是数据库查询中的一个概念,通常用于描述通过二级索引查找到主键(......
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。数据结构对比MySQL默认使用的索引底层数据结构是B+树。......
方案一:开源工具调试工具:Arthas运维工具:Prometheus 、Skywalking方案二:MySQL自带慢日志慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志如果要开启慢查询日志,需要在MySQL的配置文件(/etc/m......
Redis是单线程的,但是为什么还那么快? Redis是纯内存操作,执行速度非常快 采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题 使用I/O多路复用模型,非阻塞IO能解释一下I/O多路复用模型?Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行......
主从复制单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主从数据同步原理主从全量同步:Replication Id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承ma......
了解分布式锁,我们举个常见例子,一个抢券场景。上面代码在单线程执行,或者多线程依次执行都没有问题。但是如果两个线程并发,就有可能会出现问题。如下图所示,假设库存只剩一个,两个线程都查出剩余优惠券但是两个线程还没有运行到扣减库存的那一步,这个时候两个线程都认为还有库存,都会执行扣减库存操作,就会出现问......
数据的淘汰策略:当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。Redis支持8种不同策略来选择要删除的key:noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默......
Redis数据删除策略-惰性删除惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key优点 :对CPU友好,只会在使用该key时才会进行过期检查,对于很多用不到的key不用浪费时间进行过期检查缺点 :对内存不友好,如果一个ke......
RDBRDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据主动备份Redis内部有触发RDB的机制,可以在redis.conf文件中......
双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致读操作:缓存命中,直接返回;缓存未命中查询数据库,写入缓存,设定超时时间写操作:延迟双删先删除缓存,再操作数据库正常情况:会出现脏数据情况:先操作数据库,再删除缓存正常情况脏数据情况:如上图所示,无论是先删除Redi......
- 1
- 2