
数据库
文章平均质量分 72
StringKai
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
由MySQL加锁机制引发的死锁案例分析
一个由MySQL加锁机制引发的死锁案例分析原创 2023-03-21 21:12:05 · 507 阅读 · 0 评论 -
MySQL45讲 【orderby是怎么工作的?】 笔记
Extra 字段中的 Using filesort 表示需要排序. MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, PRIMARY KEY (`id`), KEY `city` (`city`) ) ENGINE=InnoDB; select city,name from t w原创 2020-08-24 20:49:26 · 185 阅读 · 0 评论 -
redis更新缓存导致数据一致性问题的解决方案
解决方案一:延时双删 https://zhuanlan.zhihu.com/p/147028497 1、删除缓存 (其他线程此时查询缓存为空,会查询到数据库的旧值,并回填脏数据) 2、更新数据库 3、休眠500ms,等待脏数据回填完成 4、再次删除缓存,清空脏数据 解决方案二:内存队列 https://www.jianshu.com/p/5561d7d6dea7 1、操作业务时,直接将其丢进队列,等待异步执行; 2、当出现读请求时,先读缓存,成功则返回; 3、如果缓存不存在,再去.原创 2020-08-24 20:38:44 · 742 阅读 · 0 评论 -
慢SQL分析——强制索引、limit性能优化、join的底层原理
今天操作了一张数据挺多的MySQL表,用到了如下SQL select t1.id, t1.b, t1.c, t1.d, t2.e, t3.f from t1 left join t2 on t1.a = t2.a left join t3 on t1.b = t3.b where t1.state = 1 order by t1.id limit 0, 20 其中 t1.id 为其主键,t2.a 和 t3.b 均有索引。 所以按道理来说 t1会用到主键索引,t2会用到 index_a,t3会用到in原创 2020-07-08 22:24:39 · 700 阅读 · 1 评论 -
流程图 : MySQL带 change buffer 的数据更新过程
总体来说,MySQL通过change buffer和redo log减少对硬盘的随机读取,提高效率.原创 2020-03-10 01:33:57 · 522 阅读 · 5 评论 -
脑图 : MySQL的各种锁
全局锁:全局锁的典型使用场景是,MyISAM等数据库引擎做全库逻辑备份。InnoDB数据库引擎备份时只需开启事务,不用开全局锁,利用MVCC就能保证此过程中数据可正常读写. 表级锁:表锁手动开启和关闭.元数据锁(MDL)不需要显式使用.当对一个表做增删改查操作的时候,加 MDL读锁;当要对表做结构变更操作的时候,加 MDL 写锁. 行锁:InnoDB支持行锁,若事务A更新了一行数据,但事务...原创 2020-03-08 22:20:54 · 406 阅读 · 0 评论 -
SQL的USING()函数
SELECT * from book join borrow USING(book_id); SELECT * from book join borrow where book.book_id=borrow.book_id; 这两条sql语句等价(但第二条语句会查出两个book_id列) using()函数的作用是简化等值连接. ...原创 2020-03-07 00:42:52 · 6422 阅读 · 0 评论 -
出现2003 - Can't connect to MySQL server on 'localhost'(10038)的解决办法
MySQL相关服务未开启原创 2019-07-20 10:43:10 · 642 阅读 · 0 评论