
数据库
文章平均质量分 72
StringKai
这个作者很懒,什么都没留下…
展开
-
由MySQL加锁机制引发的死锁案例分析
一个由MySQL加锁机制引发的死锁案例分析原创 2023-03-21 21:12:05 · 475 阅读 · 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 · 171 阅读 · 0 评论 -
redis更新缓存导致数据一致性问题的解决方案
解决方案一:延时双删https://zhuanlan.zhihu.com/p/1470284971、删除缓存(其他线程此时查询缓存为空,会查询到数据库的旧值,并回填脏数据)2、更新数据库3、休眠500ms,等待脏数据回填完成4、再次删除缓存,清空脏数据解决方案二:内存队列https://www.jianshu.com/p/5561d7d6dea71、操作业务时,直接将其丢进队列,等待异步执行;2、当出现读请求时,先读缓存,成功则返回;3、如果缓存不存在,再去.原创 2020-08-24 20:38:44 · 721 阅读 · 0 评论 -
慢SQL分析——强制索引、limit性能优化、join的底层原理
今天操作了一张数据挺多的MySQL表,用到了如下SQLselect t1.id, t1.b, t1.c, t1.d, t2.e, t3.ffrom t1left join t2 on t1.a = t2.aleft join t3 on t1.b = t3.bwhere t1.state = 1order by t1.idlimit 0, 20其中 t1.id 为其主键,t2.a 和 t3.b 均有索引。所以按道理来说 t1会用到主键索引,t2会用到 index_a,t3会用到in原创 2020-07-08 22:24:39 · 684 阅读 · 1 评论 -
流程图 : MySQL带 change buffer 的数据更新过程
总体来说,MySQL通过change buffer和redo log减少对硬盘的随机读取,提高效率.原创 2020-03-10 01:33:57 · 510 阅读 · 5 评论 -
脑图 : MySQL的各种锁
全局锁:全局锁的典型使用场景是,MyISAM等数据库引擎做全库逻辑备份。InnoDB数据库引擎备份时只需开启事务,不用开全局锁,利用MVCC就能保证此过程中数据可正常读写.表级锁:表锁手动开启和关闭.元数据锁(MDL)不需要显式使用.当对一个表做增删改查操作的时候,加 MDL读锁;当要对表做结构变更操作的时候,加 MDL 写锁.行锁:InnoDB支持行锁,若事务A更新了一行数据,但事务...原创 2020-03-08 22:20:54 · 391 阅读 · 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 · 6396 阅读 · 0 评论 -
出现2003 - Can't connect to MySQL server on 'localhost'(10038)的解决办法
MySQL相关服务未开启原创 2019-07-20 10:43:10 · 632 阅读 · 0 评论