缓存击穿 某个热点Key在缓存失效的瞬间,大量请求直接穿透缓存层 方案设计 可选:缓存预热,在系统启动或者低峰的时候加载热点数据,这个可以根据历史的数据来进行预判预热 进行逻辑过期,缓存数据过期时间设置长点比如一天,保证不会击穿,value存三部分:
什么是位图? bit:计算机最小单位(0或者1),逻辑上可以表示是/否,有/无等,位图是一种用“二进制位(bit)”来表示状态的数据结构 位图的核心能力是省内存 + 查询快(O(1)),表示N个值的状态只需要N个bit,内存使用是N/8个字节,并且是一个Map,查询 应用场景 快速去重
事务 本文所说的 MySQL 事务都是指在
获取慢SQL 首先确认这么几点: 服务器占用资源,通过监控来服务器资源有没有用尽。查看MYSQL进程占用的资源,看看CPU资源或者硬盘有没有到达瓶颈。 确认设置了正确的InnoDB Buffer Pool缓存池大小需要通过
MySQL Join 的本质是:从驱动表取一行 -> 到被驱动表查匹配行 -> 重复 内连接仅选出两张表中相互匹配的记录,外链接会选出其他不匹配的记录,最常用的是内连接; 左外连接:包含所有左表中的记录,甚至是右表中没有和它匹配的记录; 右外连接:包含所有右表中的记录,甚至是左表中没有和它匹配的记录
基础数据 CREATE TABLE `t_user` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `id_no` varchar(18) CHARACTER SET utf8mb4
explain就是看一下优化器生成的执行计划,主要可以看到: 表的读取顺序 数据读取操作的操作类型 哪些索引可以被使用 哪些索引真正被使用 表的直接引用 每张表的有多少行被优化器查询了 具体用法:
索引的数据结构 主要说两种: B+Tree(最核心,InnoDB 默认) 叶子节点按键有序,天然支持范围查询和排序。 非叶子节点只存键和指针,扇出大,树高低,磁盘 IO 少。
总的来说就是C/S架构,脑手分离,先说Server层: 当走到执行器这一步服务层并不会实际执行,而是通过一套统一接口来调用存储引擎层,存储引擎只关心数据的读写 引擎层是插件化设计,可以调整使用不同的存储引擎,默认是InnoDb:
笔记功能需要安装 瞬间插件 才能正常使用
安装插件后,点击导航栏"笔记"即可查看瞬间
请前往 Halo 后台 → 页面 → 独立页面,创建一个自定义页面
将页面 Slug 设置为 posts,并选择模板 文章列表
posts
也可在主题设置中修改「文章页路径」来匹配已有页面