
『数据库』
文章平均质量分 84
Gavinjou大笨象
邮箱:834956805@qq.com
GitHub:gavinjou818
展开
-
『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?
由慢查询导致性能问题的三种可能情况,实际上出现最多的是前两种可以通过下面过程,预先发现问题上线前,把慢查询日志(slow log)打开,并且把设置成 0,确保每个语句都会被记录入慢查询日志在测试表里插入模拟线上的数据,做一遍回归测试观察慢查询日志里每类语句的输出,特别留意字段是否与预期一致新增的 SQL 语句不多,手动跑一下就可以。而如果是新项目的话,或者是修改了原有项目的表结构设计,全量回归测试都是必要的。这时候,你需要工具帮你检查所有的 SQL 语句的返回结果。原创 2024-06-29 13:23:10 · 1321 阅读 · 0 评论 -
『MySQL 实战 45 讲』21 - 为什么我只改一行的语句,锁这么多?
session A 的 delete 语句加了 limit 2,但是 c=10 的记录其实只有两条,因此加不加 limit 2,删除效果都一样,但是加锁的效果就不一样。原创 2024-05-04 19:39:57 · 859 阅读 · 0 评论 -
『MySQL 实战 45 讲』20 - 幻读是什么,幻读有什么问题?
3. 当执行 select * from t where d=5 for update 的时候,6 个记录加上了行锁,还同时加了 7 个间隙锁,这样就确保无法再插入新的记录。原创 2024-05-04 13:51:18 · 1241 阅读 · 0 评论 -
『MySQL 实战 45 讲』19 - 为什么我只查一行的语句,也执行这么慢?
4. 可以看出 905 号线程是问题根源,可以执行。2. 扫描 1 行但是执行还是很慢的情况。原创 2024-05-03 00:16:53 · 346 阅读 · 0 评论 -
『MySQL 实战 45 讲』18 - 为什么这些SQL语句逻辑相同,性能却差异巨大
4.5. 优化器可以选择遍历主键索引,也可以选择遍历索引 t_modified,优化器对比索引大小后发现,索引 t_modified 更小,遍历这个索引比遍历主键索引来得更快。因此。但是这里是全索引扫描6. 即使对于对于不改变有序性的函数,优化器也不会考虑使用索引(),例如。原创 2024-05-02 20:05:14 · 52 阅读 · 0 评论 -
『手撕 Mybatis 源码』11 - 二级缓存
/</</原创 2023-07-03 00:52:48 · 140 阅读 · 0 评论 -
『手撕 Mybatis 源码』10 - 一级缓存
【代码】『手撕 Mybatis 源码』10 - 一级缓存。原创 2023-07-02 00:23:54 · 217 阅读 · 0 评论 -
『手撕 Mybatis 源码』09 - MyBatis 插件
用于定义插件的类指定要拦截哪个对象里面哪个方法// 详细的配置要拦截那些对象里面的那些方法 }由于一个拦截器可以同时拦截多个对象的多个方法,,所以就使用了Signture数组,该注解定义了拦截的完整信息// 拦截的类 Class <?> type();// 举例:type = StatementHandler.class // 拦截的方法 String method();// 举例:method = "prepare" // 拦截方法的参数 Class <?原创 2023-06-30 00:50:20 · 219 阅读 · 0 评论 -
『手撕 Mybatis 源码』08 - 动态代理 invoke 方法
【代码】『手撕 Mybatis 源码』08 - 动态代理 invoke 方法。原创 2023-06-22 10:44:30 · 410 阅读 · 0 评论 -
『手撕 Mybatis 源码』07 - Proxy 对象创建
【代码】『手撕 Mybatis 源码』07 - Proxy 对象创建。原创 2023-06-22 10:19:52 · 566 阅读 · 1 评论 -
『手撕 Mybatis 源码』06 - Mapper 代理方式初始化
【代码】『手撕 Mybatis 源码』06 - Mapper 代理方式初始化。原创 2023-06-11 00:05:18 · 396 阅读 · 1 评论 -
『手撕 Mybatis 源码』05 - SqlSession 执行主流程
SqlSession 执行主流程获取 BoundSql经过加载完所有配置之后,继续梳理执行 sql 的过程public class MybatisTest { @Test public void test1() throws IOException { ... // 4. 委派给 Executor 来执行,Executor 执行时又会调用很多其他组件(参数设置、解析 sql 的获取,sql 的执行、结果集的封装) User user = sqlSession.selectOne("u原创 2023-06-10 16:14:03 · 684 阅读 · 0 评论 -
『MySQL 实战 45 讲』17 - 如何正确地显示随机消息?(随机抽取 3 个词)
取下一个行 (R’,rowid’),跟当前堆里面最大的 R 比较,如果 R’小于 R,把这个 (R,rowid) 从堆中去掉,换成 (R’,rowid’)5. 小结:order by rand() 使用了内存临时表,内存临时表排序的时候使用了 rowid 排序方法。对于这 10000 个准备排序的 (R,rowid),先取前三行,构造成一个堆。重复第 2 步,直到第 10000 个 (R’,rowid’) 完成比较。使用了优先队列排序算法,其实只要取 R 的最小的 3 个 rowid。原创 2023-05-25 00:12:14 · 403 阅读 · 0 评论 -
『手撕 Mybatis 源码』04 - 创建 sqlSession
【代码】『手撕 Mybatis 源码』04 - 创建 sqlSession。原创 2023-05-22 10:08:06 · 377 阅读 · 0 评论 -
『手撕 Mybatis 源码』03 - 解析映射配置文件
/</</</</原创 2023-05-21 00:09:23 · 362 阅读 · 0 评论 -
『MySQL 实战 45 讲』16 - “order by” 是怎么工作的
【代码】『MySQL 实战 45 讲』“order by” 是怎么工作的。原创 2023-05-18 01:16:02 · 486 阅读 · 0 评论 -
『手撕 Mybatis 源码』02 - 加载配置文件
对于返回至少 4 个参数以上的对象,最好使用。原创 2023-05-16 10:11:47 · 306 阅读 · 0 评论 -
『MySQL 实战 45 讲』15 - 两阶段提交、索引相关问题
【代码】『MySQL 实战 45 讲』15 - 两阶段提交、索引相关问题。原创 2023-05-15 01:19:44 · 308 阅读 · 0 评论 -
『手撕 Mybatis 源码』01 - 基本原理与搭建
【代码】『手撕 Mybatis 源码』01 - 基本原理与搭建。原创 2023-05-14 10:14:55 · 314 阅读 · 0 评论 -
『MySQL 实战 45 讲』14 - count(*) 慢的根本原因
count(*) 慢的根本原因原创 2023-05-14 01:11:53 · 422 阅读 · 0 评论