图解mysql
文章平均质量分 95
小白debug
这个作者很懒,什么都没留下…
展开
-
分库分表会带来读扩散问题?怎么解决?
今天这篇文章,其实也是我曾经面试中遇到过的真题。分库分表大家可能听得多了,但读扩散问题大家了解吗?这里涉及到几个问题。分库分表是什么?读扩散问题是什么?分库分表为什么会引发读扩散问题?怎么解决读扩散问题?能不能不要在评论区叫我刁毛?不好意思,失态了。这些问题还是比较有意思的。相信兄弟们也一定有机会遇到哈哈哈。我们先从分库分表的话题聊起吧。我们平时做项目开发。一开始,通常都先用一张数据表,而一般来说数据表写到2kw条数据之后,底层B+树的层级结构就可能会变高,不同层级的数据页一般都放在磁盘里不同的地方,换言之原创 2022-06-01 07:36:42 · 444 阅读 · 3 评论 -
mysql查询 limit 1000,10 和limit 10 速度一样快吗?如果我要分页,我该怎么办?
刷网站的时候,我们经常会遇到需要分页查询的场景。比如下图红框里的翻页功能。我们很容易能联想到可以用mysql实现。假设我们的建表sql是这样的mysql建表sql建表sql大家也不用扣细节,只需要知道id是主键,并且在user_name建了个非主键索引就够了,其他都不重要。为了实现分页。很容易联想到下面这样的sql语句。select * from page order by id limit offset, size;原创 2022-05-09 21:44:30 · 313 阅读 · 1 评论 -
都是同样条件的mysql select语句,为什么读到的内容却不一样?
假设当前数据库里有下面这张表。user表数据库原始状态老规矩,以下内容还是默认发生在innodb引擎的可重复读隔离级别下。都是select结果却不同大家可以看到,线程1,同样都是读 age >= 3 的数据。第一次读到1条数据,这个是原始状态。这之后线程2将id=2的age字段也改成了3。线程1此时再读两次,一次读到的结果还是原来的1条,另一次读的结果却是2条,区别在于加没加for update。为什么同样条件下,都是读,读出来的数据却不一样呢?可重复读不是要求每次读出来的内容要一样吗?要回答这个问题原创 2022-04-28 06:28:50 · 1218 阅读 · 0 评论 -
Mysql的索引为什么使用B+树而不使用跳表?
在我们的印象中,mysql数据表里无非就是存储一行行的数据。跟个excel似的。直接遍历这一行行数据,性能就是O(n),比较慢。为了加速查询,使用了B+树来做索引,将查询性能优化到了O(lg(n))。但问题就来了,查询数据性能在 lg(n) 级别的数据结构有很多,比如redis的zset里用到的跳表,也是lg(n),并且实现还贼简单。那为什么mysql的索引,不使用跳表呢?我们今天就来聊聊这个话题。B+树的结构之前的一篇文章里,已经提到过B+树的结构了。文章不长,如果没看过,建议先看下。当然,不看也行。在这原创 2022-04-20 10:44:34 · 2187 阅读 · 6 评论 -
Mysql数据库查询好慢,除了索引,还能因为什么?
我熟练应用ctrl c和ctrl v 开发curd代码好多年了。mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?有哪些操作,可以提升mysql的查询能力呢?今天这篇文章,我们就来聊聊会导致数据库查询变慢的场景有哪些,并给出原因和解决方案。数据库查询流程我们先来看下,一条查询语句下来,会经历哪些流程。比如我们有一张数据库表CREATE TABLE&nb原创 2022-04-13 08:37:53 · 938 阅读 · 0 评论 -
为什么大家说mysql数据库单表最大两千万?依据是啥?
故事从好多年前说起。想必大家也听说过数据库单表建议最大2kw条数据这个说法。如果超过了,性能就会下降得比较厉害。巧了。我也听说过。但我不接受它的建议,硬是单表装了1亿条数据。这时候,我们组里新来的实习生看到了之后,天真无邪的问我:"单表不是建议最大两千万吗?为什么这个表都放了1个亿还不分库分表"?我能说我是因为懒吗?我当初设计时哪里想到这表竟然能涨这么快。。。我不能。说了等于承认自己是开发组里的毒瘤,虽然我确实是,但我不能承认。我如坐针毡,如芒刺背,如鲠在喉。开始了一波骚操作。"我这么做是有道理的""虽然这原创 2022-04-05 23:14:49 · 5695 阅读 · 12 评论