该文被密码保护。 阅读全文
posted @ 2023-04-20 19:53 程序杰杰 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 时光流逝,这是专栏的最后一篇文章。回顾整个过程,如果用一个词来描述,就是“没料到”: 我没料到文章这么难写,似乎每一篇文章都要用尽所学; 我没料到评论这么精彩,以致于我花在评论区的时间并不比正文少; 我没料到收获这么大,每一次被评论区的提问问到盲点,都会带着久违的兴奋去分析代码。 如果让我自己评价这 阅读全文
posted @ 2023-04-20 15:14 程序杰杰 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 在专栏上线后的11月21日,我来到极客时间做了一场直播,主题就是“我的MySQL心路历程”。今天,我特意将这个直播的回顾文章,放在了专栏下面,希望你可以从我这些年和MySQL打交道的经历中,找到对你有所帮助的点。 这里,我先和你说一下,在这个直播中,我主要分享的内容: 我和MySQL打交道的经历; 阅读全文
posted @ 2023-04-20 15:13 程序杰杰 阅读(62) 评论(0) 推荐(0) 编辑
摘要: MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如,无符号整型(unsigned int)是4个字节,上限就是232-1。 既然自增id有上限,就有可能被用完。但是,自增id用完 阅读全文
posted @ 2023-04-20 15:12 程序杰杰 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 这是我们专栏的最后一篇答疑文章,今天我们来说说一些好问题。 在我看来,能够帮我们扩展一个逻辑的边界的问题,就是好问题。因为通过解决这样的问题,能够加深我们对这个逻辑的理解,或者帮我们关联到另外一个知识点,进而可以帮助我们建立起自己的知识网络。 在工作中会问好问题,是一个很重要的能力。 经过这段时间的 阅读全文
posted @ 2023-04-20 15:12 程序杰杰 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 我经常被问到这样一个问题:分区表有什么问题,为什么公司规范不让使用分区表呢?今天,我们就来聊聊分区表的使用行为,然后再一起回答这个问题。 分区表是什么? 为了说明分区表的组织形式,我先创建一个表t: CREATE TABLE `t` ( `ftime` datetime NOT NULL, `c` 阅读全文
posted @ 2023-04-20 15:11 程序杰杰 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在MySQL里面,grant语句是用来给用户赋权的。不知道你有没有见过一些操作文档里面提到,grant之后要马上跟着执行一个flush privileges命令,才能使赋权语句生效。我最开始使用MySQL的时候,就是照着一个操作文档的说明按照这个顺序操作的。 那么,grant之后真的需要执行flus 阅读全文
posted @ 2023-04-20 15:11 程序杰杰 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 我在上一篇文章最后,给你留下的问题是怎么在两张表中拷贝数据。如果可以控制对源表的扫描行数和加锁范围很小的话,我们简单地使用insert … select 语句即可实现。 当然,为了避免对源表加读锁,更稳妥的方案是先将数据写到外部文本文件,然后再写回目标表。这时,有两种常用的方法。接下来的内容,我会和 阅读全文
posted @ 2023-04-20 15:10 程序杰杰 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我提到MySQL对自增主键锁做了优化,尽量在申请到自增id以后,就释放自增锁。 因此,insert语句是一个很轻量的操作。不过,这个结论对于“普通的insert语句”才有效。也就是说,还有些insert语句是属于“特殊情况”的,在执行过程中需要给其他资源加锁,或者无法在申请到自增id 阅读全文
posted @ 2023-04-20 15:10 程序杰杰 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 在第4篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑。 之前我见过有的业务设计依赖于自增主键的连续性,也就是说,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。 今天这篇文章,我们就来说说这个问题, 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 我在上一篇文章末尾留给你的问题是:两个group by 语句都用了order by null,为什么使用内存临时表得到的语句结果里,0这个值在最后一行;而使用磁盘临时表得到的结果里,0这个值在第一行? 今天我们就来看看,出现这个问题的原因吧。 内存表的数据组织结构 为了便于分析,我来把这个问题简化一 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 今天是大年初二,在开始我们今天的学习之前,我要先和你道一声春节快乐! 在第16和第34篇文章中,我分别和你介绍了sort buffer、内存临时表和join buffer。这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助SQL语句的执行的。其中,我们在排序的时候用到了sort buffer 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 今天是大年三十,在开始我们今天的学习之前,我要先和你道一声春节快乐! 在上一篇文章中,我们在优化join查询的时候使用到了临时表。当时,我们是这么用的: create temporary table temp_t like t1; alter table temp_t add index(b); i 阅读全文
posted @ 2023-04-20 15:08 程序杰杰 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我和你介绍了join语句的两种算法,分别是Index Nested-Loop Join(NLJ)和Block Nested-Loop Join(BNL)。 我们发现在使用NLJ算法的时候,其实效果还是不错的,比通过应用层拆分成多个语句然后再拼接查询结果更方便,而且性能也不会差。 但是 阅读全文
posted @ 2023-04-20 15:07 程序杰杰 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在实际生产中,关于join语句使用的问题,一般会集中在以下两类: 我们DBA不让使用join,使用join有什么问题呢? 如果有两个大小不同的表做join,应该用哪个表做驱动表呢? 今天这篇文章,我就先跟你说说join语句到底是怎么执行的,然后再来回答这两个问题。 为了便于量化分析,我还是创建两个表 阅读全文
posted @ 2023-04-20 15:06 程序杰杰 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 我经常会被问到这样一个问题:我的主机内存只有100G,现在要对一个200G的大表做全表扫描,会不会把数据库主机的内存用光了? 这个问题确实值得担心,被系统OOM(out of memory)可不是闹着玩的。但是,反过来想想,逻辑备份的时候,可不就是做整库扫描吗?如果这样就会把内存吃光,逻辑备份不是早 阅读全文
posted @ 2023-04-20 15:05 程序杰杰 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 在MySQL中有两个kill命令:一个是kill query +线程id,表示终止这个线程中正在执行的语句;一个是kill connection +线程id,这里connection可缺省,表示断开这个线程的连接,当然如果这个线程有语句正在执行,也是要先停止正在执行的语句的。 不知道你在使用MySQ 阅读全文
posted @ 2023-04-20 15:05 程序杰杰 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 今天我要和你讨论的是一个沉重的话题:误删数据。 在前面几篇文章中,我们介绍了MySQL的高可用架构。当然,传统的高可用架构是不能预防误删数据的,因为主库的一个drop table命令,会通过binlog传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。 虽然我们之前遇到的大多数的数据被 阅读全文
posted @ 2023-04-20 15:04 程序杰杰 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 在第20和21篇文章中,我和你介绍了InnoDB的间隙锁、next-key lock,以及加锁规则。在这两篇文章的评论区,出现了很多高质量的留言。我觉得通过分析这些问题,可以帮助你加深对加锁规则的理解。 所以,我就从中挑选了几个有代表性的问题,构成了今天这篇答疑文章的主题,即:用动态的观点看加锁。 阅读全文
posted @ 2023-04-20 15:04 程序杰杰 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 我在第25和27篇文章中,和你介绍了主备切换流程。通过这些内容的讲解,你应该已经很清楚了:在一主一备的双M架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。 主备切换有两种场景,一种是主动切换,一种是被动切换。而其中被动切 阅读全文
posted @ 2023-04-20 15:03 程序杰杰 阅读(32) 评论(0) 推荐(0) 编辑