面试必问的 MySQL 知识点,你还有哪些没准备好,赶紧收藏脑图!(下)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Hello,大家好,我是鸭血粉丝,虽说今年的大环境不是很好,但是现在毕竟是金三银四,有些公司还是在招聘的。MySQL 作为我们 Java 工程师最常用的数据库,不管是在日常的工作中还是面试中,我们都必须要对 MySQL 常见的一些知识有很好的储备,这样在面试的过程中才可以做到得心应手。下面阿粉从 MySQL 最高频的几个知识点给大家介绍一下。

MySQL 的分区

3.jpg

为什么分区

为什么会有分区,以及什么时候我们需要进行分区呢?我们都知道当 MySQL 单表的数量级达到一定的程度的时候,查询就会很慢。那么针对这种情况我们需要怎么处理呢?除了本身查询语句的优化之外,我们能想到的就是分库分表以及分区了。

分库分表是需要在应用层面上支持的,而分区是 MySQL 层面上支持的,在物理上将数据分成多个文件进行存储,从而提高查询速度。

4.jpg

如上图表 partition_sys_log_op 是采用 InnoDB 引擎并且创建了八个分区的表结构。语句如下

CREATE TABLE `partition_sys_log_op` (
  `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `create_time` datetime DEFAULT NULL COMMENT '操作时间',
  `elapsed_time` INT ( 11 ) DEFAULT NULL COMMENT '耗用时间',
  `exec_sql` MEDIUMTEXT CHARACTER 
  SET utf8 COMMENT '执行的语句',
  `user_id` INT ( 11 ) DEFAULT NULL COMMENT '执行人id',
  `user_name` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '执行人名称',
  `exec_type` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '动作,delete update insert',
  `exec_table` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '操作表',
  PRIMARY KEY ( `id` ),
  KEY `idx_index` ( `create_time`, `user_id`, `user_name`, `exec_table` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 COMMENT = '系统操作日志' PARTITION BY KEY ( ) PARTITIONS 8;

分区的类型

  1. Range:指定范围内分区:PARTITION p1 VALUES LESS THAN (100);
  2. List:离散值分区,数据在枚举范围内:partition p1 values in (2,4,6,8,0) ;
  3. Hash:计算单个列的 Hash值,然后指定分区数量,进行分区:PARTITION BY HASH(id) PARTITIONS 4;
  4. Key:计算单个或者多个列的 hash 值,然后指定分区数量,进行分区:PARTITION BY KEY(s1)  PARTITIONS 10; 不传列名默认用主键。

Explain

5.jpg

前面提到我们经常需要对 sql 进行优化,那么如何对一条 sql 进行优化呢?我们只要在普通的 sql 前面,加上关键字 explain 即可看执行计划。根据执行计划,我们可以看到该 sql 的执行情况,以及是否采用索引以及采用的是哪个索引。例如

EXPLAIN SELECT COUNT(*) FROM partition_sys_log_op WHERE create_time >= '2020-12-03 00:00:00';


6.jpg

详细的 explain 的介绍可以看公号之前的文章。MySQL 之 Explain 输出分析,这里就不展开了,感兴趣的朋友可以去看看。

阿粉友情提示:更详细的脑图大家可以关注公众号,在后台回复【MySQL脑图】获得。

写在最后


最后(知识星球现在续费只要 6 折)

现在阿粉诚邀你加入我们的知识星球,这里有 1700+ 优秀的人与你一起进步,如果你是小白那你是稳赚了,很多业内经验和干货分享给你;如果你是大佬,那可以进来我们一起交流分享你的经验,说不定日后我们还可以有合作,给你的人生多一个可能。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
150
分享
相关文章
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
1.请解释什么是MVCC,它在数据库中的作用是什么? 2.在MySQL中,MVCC是如何实现的?请简述其工作原理。 3.MVCC是如何解决读-写和写-写冲突的? 4.在并发环境中,当多个事务同时读取同一行数据时,MVCC是如何保证每个事务看到的数据版本是一致的? 5.MVCC如何帮助提高数据库的并发性能?
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
MySQL 面试题
MySQL 的一些基础面试题
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决
[MySQL]知识点
本文详细介绍了MySQL中int族和char族数据类型的特点、存储范围及使用建议,以及text、blob类型和内置字符处理函数。文章强调了数据类型选择的重要性,并提供了多个实例帮助理解。
55 0
[MySQL]知识点
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
105 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)