3天,我把MySQL索引锁事务分库分表撸干净了!
Posted 码农翻身
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3天,我把MySQL索引锁事务分库分表撸干净了!相关的知识,希望对你有一定的参考价值。
最近项目增加,缺人手,面试不少,但匹配的人少的可怜。跟其他组的面试官聊,他也抱怨了一番,说候选人有点儿花拳绣腿,回答问题不落地,拿面试最常问的mysql来说,并不只是懂“增删改查”、表关联就万事大吉了。
千万条数据,走索引还是慢,怎么解决?
千万级数据,分库分表怎么做?
主从延迟怎么解决?
这些关于实践以及底层的问题会是面试时区分你和竞争者的一个关键指标,同时也会对我们的实际工作产生真正价值。
我们服务于业务,问题的根源也在于业务量极大或者场景复杂,面对这样的状况,我们需要清楚解决的基本逻辑。
(MySQL逻辑架构)
拿MySQL优化来说,主要分4个方向:SQL语句跟索引、表结构、系统配置、硬件。总优化思路就是最大化利用索引、尽可能避免全表扫描、减少无效数据查询:
1、减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘 IO。
2、返回更少的数据:只返回需要的字段和数据分页处理,减少磁盘 IO 及网络 IO。
3、减少交互次数:批量 DML 操作,函数存储等减少数据连接次数。
4、减少服务器 CPU 开销:尽量减少数据库排序操作以及全表查询,减少 CPU 内存占用 。
5、分表分区:使用表分区,可以增加并行操作,更大限度利用 CPU 资源。
当然,掌握了这些基本原则,我们还是会面临一些难题。比如通过分表来解决大表问题,分表主键如何选择,分表后的跨表查询怎么解决?大事务会导致锁定太多的数据,造成大量的阻塞和超时,出现主从延迟,这要通过什么方式来改善?
MySQL确实是个庞杂的体系,掌握的越深入,我们能做的事情也就越多。
观察周围的大牛你就会发现,他们的关键特征之一,就是能解决别人解决不了的问题,一是懂,二是快,而我们首先要做的就是先在懂上吃透。
前段时间和玄姐(前58集团技术主席孙玄)聊,收获颇多。他谈到,以架构师的思路和视野学习 MySQL ,既能够夯实分库分表、分布式部署等核心技术点,又能够掌握普通开发者,难以触及的 MySQL 架构设计方法论。你在数据库层面,在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力。
以上是关于3天,我把MySQL索引锁事务分库分表撸干净了!的主要内容,如果未能解决你的问题,请参考以下文章